要使用 ShaderLab 定义 Shader 对象,可以使用 Shader 代码块。本页面包含有关使用 Shader 代码块的信息。
有关 Shader 对象的工作原理以及 Shader 对象、子着色器与通道之间关系的信息,请参阅 Shader 对象简介。
Shader 对象是 Unity 特定的概念;它是着色器程序和其他信息的封装器。它允许您在同一个文件中定义多个着色器程序,并告诉 Unity 如何使用它们。
Shader 对象具有嵌套结构;它将信息组织成结构(称为 SubShader 和 Pass)。
| 功能名称 | 内置渲染管线 | 通用渲染管线 (URP) | 高清渲染管线 (HDRP) | 自定义 SRP | 
|---|---|---|---|---|
| ShaderLab:Shader 代码块 | 是 | 是 | 是 | 是 | 
在 Shader 代码块中,可以:
Properties 代码块定义材质属性。参阅 ShaderLab:定义材质属性。SubShader 代码块定义一个或多个子着色器。请参阅 ShaderLab:定义子着色器。Fallback 代码块分配一个回退 Shader 对象。参阅 ShaderLab:分配回退。| 签名 | 功能 | 
|---|---|
| Shader "<name>"{<optional: Material properties><One or more SubShader definitions><optional: custom editor><optional: fallback>} | 定义具有给定名称的 Shader 对象。 | 
此示例代码演示 Shader 对象的基本语法和结构。示例 Shader 对象有一个包含单个通道的 SubShader。它定义材质属性、一个 CustomEditor 和一个 Fallback。
Shader "Examples/ShaderSyntax"
{
    CustomEditor = "ExampleCustomEditor"
    Properties
    {
        // 此处是材质属性声明
    }
    SubShader
    {
        // 此处是定义子着色器的其余代码
        Pass
        {
           // 此处是定义通道的代码
        }
    }
    Fallback "ExampleFallbackShader"
}
有关与不同的渲染管线兼容的示例着色器,请参阅示例自定义着色器。