Keyword
説明
Keyword (キーワード) を使用すると Shader Graph 用の様々なバリアントを作成できます。Keyword の設定とエディター内の設定によっては、バリアントはビルドパイプラインによって除去される場合があります。
キーワードは、例えば以下のような様々なケースに役立ちます。
- マテリアルインスタンスごとに有効/無効を切り替える機能を持ったシェーダーを作成する場合
- プラットフォームによって動作の異なる機能を持ったシェーダーを作成する場合
- 各種の条件によって複雑度をスケールできるシェーダーを作成する場合
キーワードには、Boolean (ブーリアン型)、Enum (列挙型)、ビルトインの 3 つの型があります。Unity はこのタイプに応じて、グラフ内、シェーダー内、また (オプションで) マテリアルの Inspector 内で、Keyword を定義します。Keyword の型についての詳細は、Boolean の Keyword、Enum の Keyword、ビルトインの Keyword を参照してください。これらのキーワードが最終的なシェーダーにどのように影響するかについての詳細は、複数のシェーダープログラムバリアントの作成 に関するドキュメントを参照してください。
Shader Graph では、まず Blackboard で Keyword を定義した上で、Keyword ノード を使用してグラフ内にブランチを作成します。
共通パラメーター
一部のフィールドは特定の型のキーワードに固有のものですが、以下のパラメーターは全てのキーワードが共通して持っています。
名前 | 型 | 説明 |
---|---|---|
Display Name | String | Keyword の表示名です。該当の Keyword を参照するノードのタイトルバーに、この名前が表示されます。マテリアルの Inspector で Keyword を使用できるようにした場合は、マテリアルの Inspector にもこの名前が表示されます。 |
Exposed | Boolean | true に設定すると、該当の Keyword がマテリアルの Inspector に表示されます。false に設定すると、該当の Keyword がマテリアルの Inspector に表示されません。 |
Reference Name | String | シェーダー内で内部的に使用される Keyword 名です。 Reference Name パラメーターを上書きする場合は、以下の点に注意してください。 • Keyword Reference Name は全て大文字で構成されます。全ての小文字は Unity によって大文字に変換されます。 • HLSL がサポートしていない文字が Reference Name に含まれる場合は、これは Unity によってアンダースコア (下線) に置換されます。 • デフォルトの Reference Name に戻すには、Reference Name の上を右クリックして Reset Reference を選択してください。 |
Definition | Enum | シェーダー内でキーワードがどのように定義されるかの設定です。 3 つのオプションが選択可能です。 • Shader Feature: 使用されていないシェーダーバリアントがビルド時に Unity によって除去されます。 • Multi Compile: Unity はシェーダーバリアントを一切除去しません。 • Predefined: アクティブなレンダーパイプラインによってこの Keyword が既に定義されているため、Shader Graph の生成するコード内ではこの Keyword は定義されません。 |
Scope | Enum | Keyword を定義するスコープを設定します。 • Global キーワード: プロジェクト全体に Keyword を定義します。グローバル Keyword 数の制限にカウントされます。 • Local キーワード: 単一のシェーダー (独自のローカルの Keyword 数の制限を持ちます) にのみ Keyword を定義します。 Predefined Keyword を使用すると、Unity によってフィールドが無効化されます。 |
Boolean の Keyword
Boolean の Keyword はオンかオフのどちらかに設定されます。これは 2 つのシェーダーバリアントを作成します。Shader Graph は、オン状態には Reference 名フィールド内の値を使用し、オフ状態には自動的にアンダースコア (_
) を使用します。
Boolean の Keyword をマテリアルの Inspector で使用できるようにするには、その Reference 名にサフィックス _ON
を加える必要があります 。例えば、BOOLEAN_A506A032_ON
。
型特有のパラメーター
Boolean の Keyword には、上記の共通パラメーターに加えて以下のパラメーターもあります。
名前 | 型 | 説明 |
---|---|---|
Default | Boolean | チェックボックスをオンにすると Keyword のデフォルト状態がオンに設定され、チェックボックスをオフにするとデフォルト状態がオフに設定されます。 このチェックボックスは、Shader Graph がプレビューを生成する際に Keyword に使用する値を設定します。また、このシェーダーを使用して新しいマテリアルを作成する際の Keyword のデフォルト値も定義します。 |
Enum の Keyword
Enum の Keyword は 2 つ以上の状態を持つことができ、これは Entries リストで定義できます。Enum の Keyword を使用可能にすると、その Entries リスト内の Display Name がマテリアルの Inspector 内のドロップダウンメニューに表示されます。
Enum の Keyword を定義すると、Shader Graph は、サニタイズされたバージョンの Entry Name をメインの Reference 名に追加して各状態を定義します。サニタイズされたバージョンの Entry Name は、右側の、Reference Suffix の下に表示されます。ほとんどのエントリーは {Reference}_{ReferenceSuffix}
パターンを使用して定義されますが、最後のエントリーの選択には命令文 else
が使用され、これはオフ状態として扱われます。
( )
や ! @
などの特殊な文字は Enum キーボードの Entry Name 内では無効です。Shader Graph は無効な文字をアンダースコア (_
) に変換します。
型特有のパラメーター
Enum の Keyword には、上記の共通パラメーターに加えて以下のパラメーターもあります。
名前 | 型 | 説明 |
---|---|---|
Default | Enum | ドロップダウンメニューから項目を選択すると、Shader Graph がプレビューを生成する際に Keyword に使用する値が設定されます。またこれにより、このシェーダーを使用して新しいマテリアルを作成する際の Keyword のデフォルト値も設定されます。Entries リストを編集すると、ドロップダウンメニュー内のオプションが Shader Graph によって自動的に更新されます。 |
Entries | Reorderable List | このリストは Keyword の全ての状態を定義します。各状態が別々の Display Name および Reference Suffix を持っています。 • Display Name: Graph Inspector とマテリアルの Inspector の Keyword のドロップダウンメニューに表示されます。この Keyword を参照するノードのポートラベルにもこの名前が使用されます。 • Reference Suffix: Shader Graph はこの接尾語を使用してシェーダー内で Keyword の状態を生成します。 |
ビルトインの Keyword
ビルトインの Keyword は常に Boolean あるいは Enum の Keyword のどちらかですが、動作が若干異なります。ビルトイン Keyword の値は Unity エディターまたはアクティブなレンダーパイプラインによって設定され、これは編集することができません。
Graph Inspector の Node Settings タブ内のビルトインの Keyword のフィールドは、Default フィールド以外は全てグレー表示 (操作不可) になります。Default フィールドは (Shader Graph のプレビュー内で違いを確認するために) 有効と無効を切り替えることができます。またビルトインの Keyword は、マテリアルの Inspector 内からアクセスすることもできません。