Version: 2021.3
ShaderLab 命令:模板
ShaderLab 命令:GrabPass

ShaderLab 命令:UsePass

UsePass 命令插入来自另一个 Shader 对象的指定通道。可以使用此命令来减少着色器源文件中的代码重复。

有关在 ShaderLab 代码中向通道添加名称的信息,请参阅 ShaderLab:向通道添加名称

渲染管线兼容性

功能名称 内置渲染管线 通用渲染管线 (URP) 高清渲染管线 (HDRP) 自定义 SRP
UsePass

用法

签名 功能
UsePass "Shader object name/PASS NAME IN UPPERCASE" Inserts the named Pass from the named Shader object.

If the named Shader object contains more than one SubShader, Unity iterates over the SubShaders until it finds the first supported SubShader that contains a Pass with the given name. For information on how Unity determines whether a SubShader is supported, see Shader objects introduction.

If the SubShader contains more than one Pass with the same name, Unity returns the last Pass it finds.

If Unity does not find a matching Pass, it shows the error shader.

示例

此示例代码创建一个名为 NamedPass 的 Shader 对象,其中包含名为 ExampleNamedPass 的通道。

Shader "Examples/ContainsNamedPass"
{
    SubShader
    {
        Pass
        {    
              Name "ExampleNamedPass"
            
              // 此处是通道内容的其余部分。
        }
    }
}

此示例代码创建一个名为 UseNamedPass 的 Shader 对象,该对象使用上述示例代码中的指定通道。

Shader "Examples/UsesNamedPass"
{
    SubShader
    {
        UsePass "Examples/ContainsNamedPass/EXAMPLENAMEDPASS"
    }
}
ShaderLab 命令:模板
ShaderLab 命令:GrabPass