US2S2L5——Shader的子着色器
US2S2L5——Shader的子着色器
回顾:ShaderLab的基本结构
ShaderLab主要由4个部分组成
- Shader的名字
 - Shader的属性
 - 1~n个子着色器
 - 备用的Shader
 
本章代码关键字
1  | SubShader { } //子着色器代码块,包括渲染标签,渲染状态,n个渲染通道,可声明多个,Unity选择第一个能够在当前显卡运行的SubShader  | 
SubShader语句块
每一个Shader中都会包含至少一个 SubShader
当Unity想要显示一个物体的时候,就会在Shader文件中去检测这些 SubShader 语句块
然后选择第一个能够在当前显卡运行的 SubShader 进行执行
因此在一个Shader当中实现一些高级效果时,为了避免在在某些设备上无法执行
可能会存在多个 SubShader 语句块,用于适配这些低端设备
SubShader 当中包含最终的渲染相关代码,决定了最终的渲染效果
SubShader的基本构成
SubShader语句块中主要由3部分构成
1  | |--------Tags(渲染标签)  | 
- 
渲染标签
Tags:通过标签来确定什么时候以及如何对物体进行渲染 - 
渲染状态
States:通过状态来确定渲染时的剔除方式、深度测试方式、混合方式等等内容 - 
渲染通道
Pass:具体实现着色器代码的地方(每个SubShader 语句块中至少有一个渲染通道,可以有多个)注意:
在SubShader 中每定义一个渲染通道Pass,就会让物体执行一次渲染
n个Pass ,就会有n次渲染,在实现一些复杂渲染效果时需要使用多个Pass 进行组合实现
但是我们要尽量减少Pass 的数量,更多的Pass 会增加性能消耗 
1  | SubShader  | 
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 文KRIFE齐的博客!
