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齐的博客!