US2S2L7-1——表面着色器

表面着色器

表面着色器(Surface Shader)是Unity自己创造的一种着色器代码类型
它的本质是对顶点/片元着色器的一层封装,它需要的代码量很少,很多工作都帮助我们去完成了

但是缺点是渲染的消耗较大,可控性较低
它的优点在于,它帮助我们处理了很多光照细节,我们可以直接使用而无需自己计算实现光照细节

我们可以在创建Shader时,选择创建Standard Surface Shader

image

通过观察该Shader文件的内部结构,
会发现着色器相关代码被放在 SubShader​ 语句块中(并非 Pass​ )的 CGPROGRAM​ 和 ENDCG​ 之间

image

表面着色器的特点就是:

  1. 直接在 SubShader​ 语句块中书写着色器逻辑
  2. 我们不需要关心也不需要使用多个 Pass​,每个 Pass​ 如何渲染,Unity会在内部帮助我们去处理
  3. 可以使用 CG 或 HLSL 两种 Shader 语言去编写 Shader 逻辑
  4. 代码量较少,可控性较低,性能消耗较高
  5. 适用于处理需要和各种光源打交道的着色器(主机、PC平台时更适用,移动平台需要考虑性能消耗)