US2S2L7-3——固定函数着色器
固定函数着色器
表面着色器 和 顶点/片元着色器 这两种 Unity Shader 形式都使用了可编程管线
而对于一些老设备(DX7.0、OpenGL1.5 或 OpenGL ES 1.1),它们不支持可编程管线着色器
这时就需要使用固定函数着色器来进行渲染,这些着色器只能实现一些非常简单的效果
它的特点是:
- 需要在 
Pass 渲染通道中编写着色器逻辑 
- 需要使用 ShaderLab 语法中的渲染设置命令来编写,而非CG和HLSL着色器语言
 
但是由于这些旧设备目前市面上几乎已经没有了,
所以固定函数着色器我们几乎不会再使用,只做了解即可,
即使我们现在在 Unity 中使用固定函数着色器来编写 Shader,在内部也会被编译为顶点/片元着色器,
因此真正意义的固定函数着色器已经不存在了
例如下面这种Shader:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
   | Shader "Test/Lesson12" {     Properties     {         _Color("Main Color", Color) = (1, 1, 1, 1)     }
      SubShader     {         Pass         {             Material             {                 Diffuse[_Color]             }             Lighting On         }     } }
   | 
 
固定函数常用命令及示例代码
常用命令如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
   | Pass {          Lighting on			     Lighting off		
           Color(1,1,1,1)		     Color[颜色变量]		
           Material     {         Diffuse[颜色变量]	     }
           SetTexture[材质变量]     {         Combine texture		         Combine texture * primary DOUBLE	     } }
   | 
 
示例代码一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
   | Shader "Lesson/LessonFS_1" {     Properties      {         _Color("颜色", Color)=(1,1,1,1)     }     SubShader      {         Pass         {                          Lighting off                                                    Color[_Color]         }     }     FallBack "Diffuse" }
   | 
 
示例代码二:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
   | Shader "Lesson/LessonFS_2" {     Properties      {         _Color("漫反射颜色", Color)=(1,1,1,1)     }     SubShader      {         Pass         {                          Lighting on                          Material             {                                  Diffuse[_Color]             }         }     }     FallBack "Diffuse" }
  | 
 
示例代码三:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
   | Shader "Lesson/LessonFS_3" {     Properties     {         _MainTex("纹理", 2D) = "white"{}     }     SubShader      {         Pass         {                          SetTexture[_MainTex]             {                                  Combine texture             }         }     }     FallBack "Diffuse" }
  | 
 
示例代码四:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
   | Shader "Lesson/LessonFS_4" {     Properties      {         _DiffuseColor("漫反射颜色", Color)=(1,1,1,1)         _MainTex("纹理", 2D) = "white"{}     }     SubShader      {         Pass         {                          Lighting on                           Material             {                                  Diffuse[_DiffuseColor]             }                          SetTexture[_MainTex]             {                                  Combine texture * primary DOUBLE             }         }     }     FallBack "Diffuse" }
  |