一个着色器本质上定义了游戏中的明暗应该如何表现的规则。在任意给定的着色器里是一个属性(通常是纹理)的数量。着色器通过材质执行,直接附属到特定的游戏对象。在一个材质里,你可以选择一个着色器,然后定义属性(通常是纹理和色彩,但性质可能不同)由该着色器使用。
图表的左边是车体着色器。 2个不同的材质是这样创建的:蓝色的汽车材质和红色的汽车材质。这些材质的每一个都有2个给定的纹理;汽车纹理定义汽车的主要纹理,和颜色特效纹理。这些属性被着色器所使用,使完成的汽车看上去像喷涂了两种色调。可以看到在红色车前面:面对相机的地方是黄色,然后随角度的增加消退成紫色。车材质附着到了两辆车上。而车轮、车灯和车窗没有颜色变化效果,因此必须使用不同的材质。在图表的底部有一个简单金属着色器。车轮材质使用这个着色器。请注意,即使同样的汽车纹理在这里被重用,最终车身产生的结果是完全不同的,因为在材质中使用的着色器是不同的。
一个着色器定义了如下内容:
方法用以呈现(渲染)一个对象。这包括根据最终用户的图形卡使用不同的方法。
任意顶点和用于渲染的片段程序
可指派到材质中的一些纹理属性
可指派到材质中的颜色和编号设置
一个材质定义了:
用于渲染的纹理
用于渲染的颜色
一些其它资源,例如一个着色器渲染所必需的立方体贴图
着色器是图形程序员写的。他们创建使用ShaderLab语言,这很简单。但是要让一个着色器在各种图形卡上运行良好却是一个复杂的工作,需要对图形卡如何工作有一个相当全面的了解。
许多着色器直接内置在unity中,有些作为标准资源库。