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

このセクションでは、新しいレンダリング インタフェースについて説明します。 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. カスタムの動作およびカスタムのオーバーライドは、中間および最終のレンダー ターゲットを遮断することができ、必要に応じてリソースを使用する場合にその機能を実行します(ディスクへの保存、カスタムのレンダリング コードへのルーティングなど)。

主要な制限