US2S2L7-1——表面着色器
US2S2L7-1——表面着色器
这里仅保留概念相关知识,关于表面着色器的详细知识,请直接参见:US5L9——表面着色器
表面着色器
表面着色器(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齐的博客!