US2S2L7-1——表面着色器
US2S2L7-1——表面着色器
表面着色器
表面着色器(Surface Shader)是Unity自己创造的一种着色器代码类型
它的本质是对顶点/片元着色器的一层封装,它需要的代码量很少,很多工作都帮助我们去完成了
但是缺点是渲染的消耗较大,可控性较低
它的优点在于,它帮助我们处理了很多光照细节,我们可以直接使用而无需自己计算实现光照细节
我们可以在创建Shader时,选择创建Standard Surface Shader
通过观察该Shader文件的内部结构,
会发现着色器相关代码被放在 SubShader
语句块中(并非 Pass
)的 CGPROGRAM
和 ENDCG
之间
表面着色器的特点就是:
- 直接在
SubShader
语句块中书写着色器逻辑 - 我们不需要关心也不需要使用多个
Pass
,每个Pass
如何渲染,Unity会在内部帮助我们去处理 - 可以使用 CG 或 HLSL 两种 Shader 语言去编写 Shader 逻辑
- 代码量较少,可控性较低,性能消耗较高
- 适用于处理需要和各种光源打交道的着色器(主机、PC平台时更适用,移动平台需要考虑性能消耗)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!