レンダリング オーバーライド

このセクションでは、新しいレンダリング インタフェースについて説明します。MPx3dModelView で公開されている既存のハードウェア「マルチパス」インタフェースを含めることが意図されています。

新しいインタフェースの主な機能

新しいインタフェースにおける主な相違点

主要なコンセプトと構成

レンダー オーバーライド(Render Override)

レンダリング オーバーライドについては公式の概念があります。オーバーライドは、インタラクティブ レンダリングの場合は更新ごと、バッチ レンダリング場合はフレーム出力ごとにレンダリングをすべてオーバーライドします。オーバーライドはレンダリング操作のセットで構成されています。このセットの主要なクラスが MRenderOverride です。

レンダー操作(Render Operation)

概して、操作は MPx3dModelView のパス ベース システムの「パス」と同じものと考えることができますが、明示的に定義されるという点が異なります。このセットの主要なクラスが MRenderOperation です。カスタムのユーザ操作のほかに、事前定義された操作があります。基本の操作セットには以下が含まれます。

レンダー ターゲットのオーバーライド(Render Target Overrides)

レンダー ターゲットがフォーマライズされました。そのため、レンダラとプラグイン ライタの両方で使用できる、管理され認識されるリソースのセットがあります。フォーマライズされているということは、リソースを描画 API に依存しない方法で定義できるということです(たとえば OpenGL や DirectX など)。提示されるインタフェースはレンダー ターゲットの記述、MRenderTargetDescription です。記述は、レンダリング動作に対する希望のレンダー ターゲット入力または出力を記述するために使用されます。

シェーダのオーバーライド(Shader Overrides)

MShaderManager インタフェースを使用すると、いくつかの単純なストック シェーダや、ファイル ベースのエフェクトにアクセスすることができます。続いて、これらのシェーダは、オーバーライドとして以下の 2 つの場所のいずれかに適用することができます。

状態のオーバーライド(State Overrides)

状態の設定はフォーマライズされており、レンダラによって管理されます。状態の設定はレンダー操作ごとに実行することができます。

シーン全般とユーザ操作のオーバーライド(General Scene and User Operation Overrides)

公式に提示される基本オーバーライドには以下が含まれます。

レンダー ロジックの構築

レンダー オーバーライドの定義のおもな手順は次のとおりです。

  1. カスタムのレンダー オーバーライドを派生させます。
  2. オーバーライドをレンダラに登録します。オーバーライドはいくつでも登録できます。
  3. ビューポートまたはバッチ レンダリングのためのアクティブなオーバーライドを設定します。
  4. レンダー操作およびオーバーライドのセットを順番に並んだリストとして設定します。レンダー ロジックがグラフの場合は、一連のレンダー操作に分割することができます。
  5. 照会された操作のリストを提供し、必要に応じて操作ごとにパラメータを更新します。
  6. カスタムの動作およびカスタムのオーバーライドは、中間および最終のレンダー ターゲットを遮断することができ、必要に応じてリソースを使用する場合にその機能を実行します(ディスクへの保存、カスタムのレンダリング コードへのルーティングなど)。

主要な制限