Version: 2022.1
言語: 日本語
ShaderLab コマンド: Stencil
ShaderLab コマンド: GrabPass

ShaderLab コマンド: UsePass

UsePass コマンドは、他のシェーダーオブジェクトから名前付きの Pass (パス) を挿入します。このコマンドを使うことで、シェーダーのソースファイル内のコードの重複を減らすことができます。

ShaderLab コードでパスに名前を加える方法については、ShaderLab: Pass に名前を加える を参照してください。

レンダーパイプラインの互換性

機能名 ビルトインレンダーパイプライン ユニバーサルレンダーパイプライン (URP) HD レンダーパイプライン (HDRP) カスタム SRP
UsePass はい はい はい はい

使用法

シグネチャ 機能
UsePass "シェーダーオブジェクト名/大文字のパス名" 名前付きのシェーダーオブジェクトから名前付きのパスを挿入します。

名前付きシェーダーオブジェクトが複数のサブシェーダーを含む場合、Unity は、指定された名前のパスを含む最初のサポートされたサブシェーダーを見つけるまで、サブシェーダーを反復処理します。Unity が SubShader をサポートしているかどうかを判断する方法については、シェーダーオブジェクト入門 を参照してください。

SubShader に同じ名前のパスが複数含まれている場合、Unity は最後に見つかったパスを返します。

一致するパスが見つからない場合、Unity は エラーシェーダー を表示します。

このサンプルコードでは、NamedPass というシェーダーオブジェクトを作成します。その中に ExampleNamedPass というパスを含みます。

Shader "Examples/ContainsNamedPass"
{
    SubShader
    {
        Pass
        {    
              Name "ExampleNamedPass"
            
              //Pass コンテンツの残り部分はここに記述 
        }
    }
}

このサンプルコードでは、UseNamedPass という名前のシェーダーオブジェクトが作成され、上記のサンプルコードの名前付きパスを使用します。

Shader "Examples/UsesNamedPass"
{
    SubShader
    {
        UsePass "Examples/ContainsNamedPass/EXAMPLENAMEDPASS"
    }
}
ShaderLab コマンド: Stencil
ShaderLab コマンド: GrabPass