Render Pass ノードのプロパティをバインドする

以下の手順では、Render Pass ノードのプロパティをバインドして、あるプロパティの値で別のプロパティを制御する方法を示します。

Prism グラフの概要については、Prism グラフ を参照してください。

リソースプロパティのバインディング

リソースプロパティのバインディングは、同じタイプの 2 つのリソースプロパティの間に直接描画されるラインです。バインディングを作成するには、あるノードのソースプロパティから別のノードのターゲットプロパティへドラッグします。

例: レイトレーシングシャドウのために Build Acceleration Structure を Draw Objects に接続する

この例では、既存のレイトレーシングシャドウのシーンを Prism グラフとして再構築します。元のシーンでは、手動のレンダーパス設定を使用してトップレベルのアクセラレーション構造を生成し、それを使用する描画パスに渡しています。Prism グラフでは、同じ依存関係を 2 つのリソースプロパティ間のバインディングラインとして表現します。

レイトレーシングシャドウのために Build Acceleration Structure を Draw Objects に接続するには、以下の手順を実行します。

  1. Kanzi Studio Quick Start ウィンドウで Projects をクリックし、Examples タブを選択します。Raytracing の例をまだダウンロードしていない場合は、その横にある ダウンロード をクリックします。

    Kanzi Studio は、例を <KanziWorkspace>/Examples/Raytracing ディレクトリにダウンロードします。

  2. 元のプロジェクトを変更せずに保持するため、<KanziWorkspace>/Examples/Raytracing フォルダを新しい場所にコピーします。

  3. コピーしたプロジェクトから Raytracing.proj.kzm を開き、Preview にレイトレーシングシャドウが表示されていることを確認します。

    Prism グラフを変更する前の Raytracing の例のプレビュー。シーンにレイトレーシングシャドウが表示されています。
  4. Library で Rendering > Prism Graphs に移動します。Prism Graphs を右クリックし、Create > Empty Prism Graph を選択します。名前を Raytracing Prism Graph にします。

    Library の Prism Graphs フォルダの右クリックコンテキストメニュー。Create > Empty Prism Graph がハイライトされています。
  5. シーンをレンダリングする Viewport 2D を選択します。Properties パネルで、Render Pass Prefab を新しい Prism グラフに設定します。グラフが完成するまで、ビューポートはレンダリングを停止します。

    Render Pass Prefab ドロップダウンが開かれ、Raytracing Prism Graph が選択された Viewport 2D の Properties パネル。
  6. Library で Prism グラフをダブルクリックして開きます。グラフの Prism エディタが開き、Output ノードのみがある初期の空の状態が表示されます。

    Rendering > Prism Graphs の下にある Raytracing Prism Graph をダブルクリックしている Library。 Raytracing Prism Graph に対して開かれた Prism エディタ。Output ノードのみがある初期の空の状態が表示されています。
  7. メインのレンダリングノードを追加します。グラフ内を右クリックして、以下を追加します。

    • Gather Lights レンダーパスノード。

    • Draw Objects レンダーパスノード。

    Gather Lights を Draw Objects に接続し、Draw Objects を Output ノードに接続します。

    これで Preview にはシーンのライティングの下でシーンオブジェクトがレンダリングされますが、レイトレーシングによるシャドウはまだ表示されません。次のステップでは、Draw Objects がこれらのシャドウをレンダリングするのに必要なアクセラレーション構造を追加してバインドします。

    オブジェクトとライティングはレンダリングされているがレイトレーシングによるシャドウがないシーンを表示する Preview と、Gather Lights、Draw Objects、Output ノードを含む Prism グラフ。
  8. Draw Objects ノードで add-properties-window をクリックして Add Properties ウィンドウを開きます。検索ボックスに topLevelAS と入力して、Material Properties の下にあるこのプロパティを見つけます。

    検索ボックスに「topLevelAS」が入力され、Available Properties ペインの Material Properties の下で topLevelAS プロパティがハイライトされている、Draw Objects ノードの Add Properties ウィンドウ。

    topLevelAS をダブルクリックして追加します。プロパティが Available Properties から Existing Properties に移動します。

    topLevelAS を追加した後の Add Properties ウィンドウ。右側の Existing Properties ペインにプロパティが表示されています。

    Add Properties ウィンドウを閉じます。

  9. グラフ内を右クリックして、Build Acceleration Structure レンダーパスノードを追加します。このノードはレンダリングされたイメージではなくアクセラレーション構造を生成するため、フレームバッファソケットがありません。このノードは他のノードに接続しないでください。このノードは、次のステップで追加するバインディングラインを通じてその利用側に到達します。

  10. Build Acceleration Structure ノードの OutputAccelerationStructure プロパティから Draw Objects ノードの topLevelAS プロパティへ、バインディングラインをドラッグします。

    これにより、2 つのプロパティ間にリソースプロパティバインディングが作成されます。このバインディングは OutputAccelerationStructure の値を topLevelAS にコピーするため、描画パスはビルドパスが生成したアクセラレーション構造を使用します。

    Build Acceleration Structure ノードの OutputAccelerationStructure プロパティから Draw Objects ノードの topLevelAS プロパティへバインディングラインをドラッグするアニメーション。
  11. Preview に再びレイトレーシングによるシャドウがレンダリングされることを確認します。このバインディングにより、Build Acceleration Structure が生成したアクセラレーション構造が Draw Objects に渡されます。

    Prism で再構築したレンダリングでレイトレーシングによるシャドウを表示する Preview と、Build Acceleration Structure から Draw Objects.topLevelAS へのバインディングラインを含む完成した Prism グラフ。

例:Decode を使用してオフスクリーンフレームバッファを Blit Render Pass にバインドする

この例では、Decode アダプターノードを使用してリソースプロパティバインディングを作成します。

一部の Prism ノードは、Decode アダプターノードを通じてバインド可能なリソースプロパティを公開します。Render Pass ノード以外のノードのオフスクリーンフレームバッファ出力から別のリソースプロパティにバインドするには、Decode が必要です。Decode はフレームバッファのアタッチメントを名前付きのテクスチャプロパティ(ResultTexture0、ResultDepthTexture)として提供し、Render Pass ノードのプロパティはそれらにバインドできます。

Decode を使用してオフスクリーンフレームバッファを Blit Render Pass にバインドするには:

  1. プロジェクトで Scene を右クリックして Create > Box を選択し、シーンに Box を追加して、グラフにレンダリングする対象を用意します。

  2. Library で Rendering > Prism Graphs に移動します。Prism Graphs を右クリックし、Create > Empty Prism Graph を選択します。名前を Decode Bridge Prism Graph にします。

  3. シーンをレンダリングする Viewport 2D を選択します。Properties パネルで、Render Pass Prefab を新しい Prism グラフに設定します。

  4. Library で Prism グラフをダブルクリックして開きます。

  5. フレームバッファをレンダリングするノードを追加します。グラフ内を右クリックして、以下を追加します。

    • Offscreen Framebuffer ノード。

    • Clear ノード。

    • Draw ノード。

    Offscreen Framebuffer を Clear に接続し、Clear を Draw に接続します。

  6. 続いて Render Pass ノードを追加します。以下を追加します。

    • Decode アダプターノード。上流のフレームバッファの内容を名前付きのテクスチャプロパティとして公開します。

    • Blit Render Pass ノード。

    Draw を Decode に接続します。次に Blit を Output ノードに接続します。Decode には出力ソケットがないため、ノードソケットを介して Blit に接続することはできません。Decode から Blit への接続は、次のステップでバインディングラインを使用して行います。

    バインディングを追加する前の Prism グラフ。左側に Offscreen Framebuffer、Clear、Draw、Decode、右側に Blit Render Pass ノードと Output ノードがあります。
  7. Blit ノードで add-properties-window をクリックして Add Properties ウィンドウを開きます。検索ボックスに Texture 0 と入力し、プロパティをダブルクリックして追加します。Add Properties ウィンドウを閉じます。

  8. Decode ノードの ResultTexture0 プロパティから Blit ノードの Texture 0 プロパティへバインディングラインをドラッグします。

    これによりリソースプロパティのバインディングが作成されます。ResultTexture0 の値が Texture 0 にコピーされ、上流のノードがオフスクリーンフレームバッファにレンダリングしたテクスチャを Blit レンダーパスが使用します。

    Decode ノードの ResultTexture0 プロパティから Blit ノードの Texture 0 プロパティへバインディングラインをドラッグするアニメーション。
  9. Confirm the Preview renders the box composited through the Blit Render Pass. The upstream nodes render the box into the offscreen framebuffer; Decode exposes that framebuffer as ResultTexture0; the binding hands the texture to Blit, which composites it to the Output.

    Decode ブリッジを介して Blit レンダーパスでレンダリングされたボックスを示すプレビュー。

ヒント

この例では、Draw ノードの出力コネクタから Blit の Texture 0 プロパティへ直接ドラッグすると、Decode ノードの挿入とバインディングの作成が 1 回の操作で行われます。

テキストによるプロパティのバインディング

テキストによるプロパティのバインディングは、バインディング式から非リソースプロパティを駆動します。非リソースプロパティとは、数値、ブール値、カラー、ベクトルなどの値です。エディタで直接設定する値ではなく、Kanzi のバインディング式からプロパティの値を取得したい場合は、テキストバインディングを使用します。直接設定する値とは異なり、バインディング式には算術演算、関数呼び出し、他のプロパティへの参照を含めることができます。式の構文については、バインディング式リファレンス を参照してください。

例: バインディング式から Prism グラフの背景色を設定する

この例では、前の例で使用した Raytracing サンプルプロジェクトを再利用します。バインディング式で計算したカラーで画面をクリアし、その上にシーンを描画する小さな Prism グラフを作成します。同じパターンを使用して、Render Pass ノードの任意の非リソースプロパティをバインディング式から駆動できます。

バインディング式から Prism グラフの背景色を設定するには、以下の手順に従います。

  1. まだ開いていない場合は、Raytracing サンプルのコピーから Raytracing.proj.kzm を開きます。例: Build Acceleration Structure を Draw Objects に接続してレイトレーシングによるシャドウを作成する の手順 1 から 3 を参照してください。

  2. ライブラリ (Library) で レンダリング (Rendering) > Prism Graphs に移動します。Prism Graphs を右クリックし、クリエイト (Create) > Empty Prism Graph を選択します。名前を Background Color Prism Graph にします。

  3. シーンをレンダリングする Viewport 2D を選択します。プロパティ (Properties) パネルで、Render Pass Prefab を新しいグラフに設定します。グラフが完成するまで、ビューポートはレンダリングを停止します。

  4. Library で Prism グラフをダブルクリックして開きます。

  5. グラフ内を右クリックし、Clear 基本ノードと ドローオブジェクト (Draw Objects) Render Pass ノードを追加します。Clear を ドローオブジェクト (Draw Objects) に、ドローオブジェクト (Draw Objects) を Output ノードに接続します。

  6. Clear ノードで add-properties-window をクリックして Add Properties ウィンドウを開きます。検索ボックスに Clear Color 0 と入力します。Available Properties で Clear Color 0 をダブルクリックして追加します。Add Properties ウィンドウを閉じます。

    プレビュー (Preview) に、デフォルトの黒のクリアカラー上でシーンがレンダリングされます。

  7. Clear ノードの Prism プロパティペインで Clear Color 0 の行を右クリックし、Edit binding... を選択します。

    Kanzi Studio は、Clear Color 0 をバインディングのターゲットとして、フローティングウィンドウでバインディングエディタを開きます。

    Prism プロパティペインの Clear Color 0 行の右クリックコンテキストメニュー。Edit binding 項目がハイライトされています。
  8. バインディングエディタの式フィールドに、次のように入力します。

    Color4(0.1, 0.1, 0.3, 1.0)
    

    Save をクリックします。エディタが閉じます。プレビュー (Preview) に、濃い青の背景上のシーンが表示されます。Clear Color 0 の行では、ラベルにバインディングインジケーターが表示され、値エディタの代わりに式の読み取り専用プレビューが表示されます。

    バインディング後の Prism プロパティペインの Clear Color 0 行のアニメーション。ラベルのバインディングインジケーターと、値エディタの代わりに表示される式のプレビュー Color4(0.1, 0.1, 0.3, 1.0) を示しています。
  9. バインディングエディタを再度開き、式を現在の式をスケールする式に置き換えます。

    Color4(0.1, 0.1, 0.3, 1.0) * 2
    

    保存します。背景が明るくなります。行のプレビューが更新され、新しい式が表示されます。

    明るい青の背景を表示するプレビュー (Preview) ウィンドウと、式のプレビュー Color4(0.1, 0.1, 0.3, 1.0) * 2 が表示された Clear Color 0 行。

バインディングを削除して直接編集可能な値に戻すには、行を右クリックし、Clear binding を選択します。

式を解析できない場合、インラインプレビューが赤色になります。Edit binding... を再度開いて式を修正してください。

ヒント

ある Prism プロパティ行のディスプレイネームから、別の非リソースプロパティ行へドラッグして、テキストバインディングを開始することもできます。バインディングエディタが開き、ソース行のプロパティを参照する式があらかじめ入力されています。

ある Blit Render Pass ノードの Blend Mode 行から、別の Blit Render Pass ノードの Blend Mode 行へドラッグするアニメーション。ソース行のプロパティを参照する式があらかじめ入力された状態でバインディングエディタが開きます。

関連項目

Prism グラフ

Prism グラフを作成する

Prism レンダーグラフへのシャドウの追加

Prism グラフによるブルームエフェクトの作成