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"
}
}