パラメータ¶
パラメータは、シェーダーグラフ内のコンスタント値を、Kanzi Studio から調整できる名前付きの GLSL ユニフォームとして公開します。パラメータを使用しない場合、コンスタントノードの値はリテラルとして生成されたシェーダーに埋め込まれます。値を変更するには、グラフを編集してシェーダーを再生成する必要があります。コンスタントをパラメータに昇格すると、生成されたシェーダーはそれを uniform として宣言し、Kanzi Studio はシェーダーグラフを使用するマテリアルの Properties パネルにそれを表示します。これにより、デザイナーやインテグレーターは Shader Graph Editor を開き直さずにランタイムで値を調整できます。
注釈
パラメータは、エクスペリメンタルなシェーダーグラフエディタの一部です。エディタを有効にするには、シェーダーグラフエディタを有効にする を参照してください。
コンスタントをパラメータに昇格する¶
コンスタントノードを昇格するには:
Shader Graph Editor で、公開したいコンスタントノードを右クリックします。
Promote to Parameter を選択します。
Kanzi Studio はノードからパラメータを作成し、Parameters パネルに追加して、ノードを新しいパラメータにバインドします。次回シェーダーを生成すると、Kanzi Studio はその値をインライン化されたリテラルではなくユニフォーム宣言として出力します。
昇格できるコンスタントノードのタイプは次のとおりです。
コンスタントノード |
パラメータタイプ |
|---|---|
Scalar |
フロート (Float) |
Int |
int |
Vec2 |
vec2 |
Vec3 |
vec3 |
Vec4 |
vec4 |
Color (RGB) |
color (アルファは 1 に固定) |
Color (RGBA) |
カラー (Color) |
Texture |
texture |
数学ノード、組み込みノード、出力ノードは昇格できません。
Parameters パネルの操作¶
Parameters パネルには、グラフ内のすべてのパラメータが一覧表示されます。各行には、パラメータ名と、デフォルト値を編集するためのタイプに応じたエディタが表示されます。
エディタはパラメータタイプに応じて変わります。
float と int: 数値入力。
vec2、vec3、vec4: ラベル (X/Y/Z/W) 付きの入力フィールドの行。
color: カラーピッカー。ソースノードにアルファチャンネルがある場合はアルファスライダーも表示されます。
texture: テクスチャセレクター。
デフォルト値を編集する¶
Parameters パネルで値フィールドを編集します。Kanzi Studio は、パラメータにバインドされているすべてのノードに新しいデフォルト値を適用します。次回シェーダーを生成すると、新しいデフォルト値がユニフォームの初期値として出力されます。
パラメータの名前を変更する¶
パラメータ行の名前フィールドを編集します。新しい名前は Parameters パネルに表示され、次回のシェーダー生成後には、そのシェーダーグラフを使用するマテリアルの Properties パネルにも表示されます。
バインドされたノードを選択する¶
パラメータが制御するノードを見つけるには、パラメータ行の Select instances をクリックします。Kanzi Studio は、キャンバス上でパラメータにバインドされているすべてのノードを選択します。
バインドされたノードを追加する¶
パラメータ行をキャンバスにドラッグします。Kanzi Studio は、パラメータにバインドされた新しいコンスタントノードを作成します。バインドされたすべてのノードは、パラメータのデフォルト値を共有します。デフォルト値を編集すると、バインドされたすべてのノードが更新されます。
昇格の解除 (パラメータの削除)¶
昇格を解除する方法は 2 つあり、それぞれ適用範囲が異なります。
単一ノードのバインドを解除する: バインドされたコンスタントノードを右クリックし、Unpromote from Parameter を選択します。Kanzi Studio はそのノードのバインドのみを削除します。そのノードは現在の値を保持し、次に生成されるシェーダーではインライン化されたリテラルになります。パラメータは Parameters パネルに残り、まだバインドされている他のノードを引き続き制御します。
パラメータを削除する: パラメータの行にあるゴミ箱アイコンをクリックします。Kanzi Studio は、次のどちらを行うかを確認します。
パラメータのみを削除する。バインドされているコンスタントノードは、最後の値をインライン化されたリテラルとして保持したままキャンバスに残ります。
パラメータと、それにバインドされているすべてのノードを削除する。
パラメータへの最後のバインドが削除されると(ノードを 1 つずつアンバインドした場合でも、パラメータを削除した場合でも)、次に生成されるシェーダーでは、ユニフォームを宣言する代わりに、再びコンスタント値がインライン化されます。
Kanzi Studio でパラメータを調整する¶
グラフ内のすべてのパラメータは、そのシェーダーグラフを使用するマテリアルのプロパティになります。シェーダーを生成してから、Kanzi Studio で次の操作を行います。
Library > Materials and Textures > Shader Graphs で、パラメータを含むシェーダーグラフを選択します。
Properties で、パラメータと名前が一致するプロパティを見つけます。
組み込みのマテリアルプロパティを編集する場合と同じ方法で、プロパティを編集します。
Properties パネルで行った変更は Shader Graph Editor に反映されます。新しい値がパラメータのデフォルト値となり、そのパラメータにバインドされているすべてのノードがその値に合わせて更新されます。
この双方向の連携により、グラフの作成者は、デザイナーやインテグレーターがグラフ自体に手を加えずに調整できる、厳選された調整可能な値のセットを公開できます。
生成される GLSL: ユニフォームとリテラル¶
コンスタントを昇格すると、生成される GLSL がインライン化されたリテラルから uniform 宣言に変わります。
昇格前: 値が (0.8, 0.2, 0.5) の Vec3 コンスタントは、シェーダーに直接インライン化されます。
void main() {
vec3 baseColor = vec3(0.8, 0.2, 0.5);
/* ... */
}
昇格後: 同じ値が、Kanzi Studio がシェーダーの先頭で宣言するユニフォームになり、残りのコードはそのユニフォームを読み取ります。
uniform vec3 u_MyMaterial_param_1;
void main() {
vec3 baseColor = u_MyMaterial_param_1;
/* ... */
}
Kanzi Studio は、グラフを通じて Output ノードに到達するパラメータに対してのみユニフォームを宣言します。バインドされたノードが接続されていないパラメータは、生成されたシェーダーには含まれません。
テクスチャパラメータの場合、Kanzi Studio はテクスチャをサンプリングして RGBA チャンネルを公開する小さなラッパー関数も生成します。これにより、グラフの他の部分は Texture ノードを読み取る場合と同じ方法でテクスチャを読み取ることができます。