シェーダーキーワードを宣言するには、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
以下の操作はできません。
dynamic_branch と shader_feature または multi_compile の両方として宣言することはできません。このように宣言すると dynamic_branch が使用されます。キーワードは、デフォルトでグローバルキーワードの状態から影響を受けます。
シェーダーディレクティブに _local を追加すると、キーワードをローカルにできます。グローバルキーワードを有効または無効にしても、同じ名前のローカルキーワードの状態に影響しません。
例:
#pragma shader_feature_local REFLECTION_TYPE1 REFLECTION_TYPE2 REFLECTION_TYPE3