一、Shader的介绍
Shader(着色器)
Shader是专门用来渲染3D图形的一种技术,他分为Vertex Shader(顶点着色器) & Pixel Shader(像素着色器)
二、Shader的种类
Shader分三类:
1、HLSL(High Level Shading Language):
微软的DirectX图形API继承的Shader。
2、GLSL(OpenGL Shading Language):
用于OpenGL系列图形集的Shader。
3、CG(C for Graphics):
一种可以被OpenGL和Direct3D广泛支持的图形处理器编程语言。是OpenGL和DirectX的上层语言,CG程序运行在OpenGL和DirectX标准顶点和像素着色器的基础上的。
Unity所有的渲染都需要shader来完成,内置的着色器超过80个,可以轻松利用其内置的着色器来完成各种画面效果,并且还提供了自定义shader,方便扩展。Unity使用shaderLab开发语言来组织shader内容,并会针对不同的平台进行编译,类似微软的FX文件或者NAIDIA的CgFX.
三、内建Shader的分类:
1、普通(Normal):用于不透明对象
2、透明(Transparent):用于半透明和全透明对象
3、透明镂空效果(TransparentCutOut):用于完全透明和完全不透明部分组成(不含半透明部分)的对象,像栅栏一样。
4、自发光(Self-llluminated shader Family):用于能反射环境立方体贴图的不透明对象
5、反射(Reflective Shader Family):用于能反射环境立方体贴图的不透明对象
每个类别下包含若干复杂性各异的shader
四、几种常用的Shader
1、Bumped Diffuse 漫反射

2、Bumped Specular 法线高光效果


法线高光效果可以让物体的凹凸效果更加明显
图中左边为漫反射bumped diffuse,右边为高光、凸凹效果bumped specular
3、StandardShader 标准着色器
StandardShader是基于物理的着色器,也就是说不管你选择什么样的贴图都会与光照产生反应,这些贴图可以是同一张图片,Unity会使用必要的资源进行计算。


一个简单的Shader脚本:


这个shader定义颜色属性的默认值(1,0.5,0.5,1)_Color(将在Unity3D的材质检索器中作为主要颜色属性显示)。然后一个单一的subshader定义。该subshader组成一个渲染通道,打开顶点照明,并设置了它的基本材质属性。
网友评论