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

ShaderLab 命令:UsePass

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

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

渲染管线兼容性

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

用法

签名 功能
UsePass "Shader object name/PASS NAME IN UPPERCASE" 从指定的 Shader 对象插入指定的通道。

如果指定的 Shader 对象包含多个子着色器,Unity 将遍历该子着色器,直到找到第一个包含具有给定名称的通道的受支持的子着色器。有关 Unity 如何确定是否支持某个子着色器的信息,请参阅 Shader 对象简介

如果子着色器包含多个同名通道,Unity 将返回它找到的最后一个通道。

如果 Unity 没有找到匹配的通道,则会显示错误信息。

示例

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

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

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

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