UsePass コマンドは、他のシェーダーオブジェクトから名前付きの Pass (パス) を挿入します。このコマンドを使うことで、シェーダーのソースファイル内のコードの重複を減らすことができます。
ShaderLab コードでパスに名前を加える方法については、ShaderLab: Pass に名前を加える を参照してください。
機能名 | ビルトインレンダーパイプライン | ユニバーサルレンダーパイプライン (URP) | HD レンダーパイプライン (HDRP) | カスタム SRP |
---|---|---|---|---|
UsePass | あり | あり | あり | あり |
シグネチャ | 機能 |
---|---|
UsePass "Shader オブジェクト名/大文字の PASS NAME" |
名前付き Shader オブジェクトから名前付きパスを挿入します。 指定された Shader オブジェクトが複数の SubShader を含む場合、Unity は指定された名前の Pass を含む最初の適応する SubShader を見つけるまで、SubShader を繰り返し検索します。SubShader がサポートされるかどうかを Unity がどのように判断するかについては、Shader オブジェクトの概要 を参照してください。 SubShader に同名の Pass が複数含まれている場合、Unity は最後に見つけた Pass を返します。 一致する Pass が見つからない場合は、エラーを表示します。 |
このサンプルコードでは、NamedPass というシェーダーオブジェクトを作成します。その中に ExampleNamedPass というパスを含みます。
Shader "Examples/ContainsNamedPass"
{
SubShader
{
Pass
{
Name "ExampleNamedPass"
//Pass コンテンツの残り部分はここに記述
}
}
}
このサンプルコードでは、UseNamedPass という名前のシェーダーオブジェクトが作成され、上記のサンプルコードの名前付きパスを使用します。
Shader "Examples/UsesNamedPass"
{
SubShader
{
UsePass "Examples/ContainsNamedPass/EXAMPLENAMEDPASS"
}
}