一、引言
Fixed Function Shader 属于固定渲染管线 Shader, 基本用于高级Shader在老显卡无法显示时的Fallback(之后有详细介绍)。使用的是ShaderLab语言,语法与微软的FX files 或者NVIDIA的 CgFX类似。
二、语法
shader例子参见附件
1、Pass 表示渲染管线
一个Pass表示一个渲染管线,当存在多个Pass时,即在前一Pass结束后,依据得到的缓存数据和状态开始下一个Pass管线,直到所有Pass管线渲染结束。
2、Pass 内开关控制
(1)Specularhighlights 反射高光
默认情况下primary颜色是漫反射,阴影色和高光颜色(在光线计算中定义)的加和。如果你将通道设置中的SeparateSpecular On,高光色会在混合计算后被加入,而不是之前。
(2)LightingOn
灯光应用打开
............
3、Material信息
Material Block 材质块
这些是为了设置材质如何影响光照。任何这些属性都能被排除,在这种情况下它们被认为默认为黑色(没起到效果)。
Diffuse Color 漫反射颜色
这个是物体最基础的颜色。
Ambient Color 环境色
当物体被环境光影响时候给物体设置颜色,这个取决于在RenderSettings中设置的环境颜色。
Specular Color 反射光
设置物体的高光反射颜色
Shininess Number 清晰度
突出清晰度,值在0和1之间。为0时候,你得到1个巨大的高光看起来像很多漫射光照;为1时候,你得到一个小的斑点。
Emission Color 自发光颜色
当没被其他光线影响时候,物体本身的自发光颜色。
当物体被所有光线照射时候他的颜色的计算公式如下:
Ambient * RenderSettings ambient setting +(LightColor * Diffuse + Light Color * Specular) + Emission
在括号中的那部分光线计算,是计算所有照射到物体上的光线。
通常情况下,你要保持漫反射和环境的颜色相同(所有内建的Unity3dshader 都是这么做的)。
参见附件例2。