Version: Unity 6.0 (6000.0)
言語 : 日本語
シェーダーで使用するキーワードのタイプの選択
シェーダー動作をキーワードで条件付きにする

シェーダーキーワードの宣言

シェーダーキーワードを宣言するには、HLSL コードで #pragma ディレクティブを使用します。 例:

#pragma shader_feature REFLECTION_TYPE1 REFLECTION_TYPE2 REFLECTION_TYPE3

以下のシェーダーディレクティブのいずれかを使用します。

シェーダーディレクティブ 分岐タイプ Unity で作成されたシェーダーバリアント
shader_feature 静的分岐 ビルド時にマテリアルプロパティで有効にするキーワードの組み合わせのバリアント
multi_compile 静的分岐 考えられるすべてのキーワードの組み合わせのバリアント
dynamic_branch 動的分岐 追加バリアントなし

以下を参照してください。

Shader Graph については Shader Graph: キーワードノードを参照してください。

キーワードのセットの宣言

1 つの #pragma ステートメント内のキーワードは、まとめて ‘セット’ と呼ばれます。

例えば、3 つのキーワードのセットを宣言するには、以下のようにします。

#pragma shader_feature REFLECTION_TYPE1 REFLECTION_TYPE2 REFLECTION_TYPE3

1 つのシェーダーで複数のキーワードのセットを宣言できます。例えば、2 つのセットを作成するには以下のようにします。

#pragma shader_feature REFLECTION_TYPE1 REFLECTION_TYPE2 REFLECTION_TYPE3
#pragma shader_feature RED GREEN BLUE WHITE

以下の操作はできません。

  • 1 つのセットに同じ名前のキーワードを 2 つ含めることはできません。
  • 1 つのシェーダーにキーワードのセットの複製を含めることはできません。
  • キーワードを dynamic_branchshader_feature または multi_compile の両方として宣言することはできません。このように宣言すると dynamic_branch が使用されます。

キーワードをローカルにする

キーワードは、デフォルトでグローバルキーワードの状態から影響を受けます。

シェーダーディレクティブに _local を追加すると、キーワードをローカルにできます。グローバルキーワードを有効または無効にしても、同じ名前のローカルキーワードの状態に影響しません。

例:

#pragma shader_feature_local REFLECTION_TYPE1 REFLECTION_TYPE2 REFLECTION_TYPE3

追加リソース

シェーダーで使用するキーワードのタイプの選択
シェーダー動作をキーワードで条件付きにする