US2S2——ShaderLab语法

ShaderLab

Unity Shader是对Shader的一种封装,它是对底层图形渲染技术的封装,
它提供了一种叫做ShaderLab的语言,来让我们更加轻松的编写和管理着色器

ShaderLab其实就是Unity自定义的一种语法规则,是用于在Unity中编写和管理着色器的专门的语言
它提供了一种结构化的方式来描述Unity着色器的各个部分,从而让我们可以更轻松的创建和管理着色器

总而言之:无论我们编写哪种类型的Shader,或是选择哪种语言去编写Shader
在Unity中总会通过ShaderLab语言对其进行包装和组织,它是Unity自定义的一种语法规则

本系列学习内容

  • 材质与Shader

  • ShaderLab的基本结构

    • Shader的名字(决定材质面板的选择路径)

    • Shader的属性(定义可在材质面板设置的参数,并可被后续的语句内使用)

    • Shader的子着色器(渲染的具体实现,会选择第一个可被执行的SubShader​)

      • Tags-渲染标签(渲染顺序,着色器分类,是否禁用批处理,是否投射阴影,是否忽略投影机,是否使用图集等等)
      • States-渲染状态(重点渲染状态:深度缓冲,深度测试,混合方式,次要:LOD,颜色蒙版)
      • Pass-渲染通道(具体实现着色器代码的地方)
    • Shader的备用着色器(当所有的 SubShader​ 不可用时,使用什么着色器去替换)

  • Shader的编写形式

    • 表面着色器(对顶点/片元着色器的封装,代码量少,性能消耗较大)
    • 顶点/片元着色器(更灵活,可控性更强,掌控细节更多,学习重点)
    • 固定函数着色器(旧设备使用,已经几乎弃用)