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

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

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

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

主要なコンセプトと構成

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

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

レンダー操作(Render Operation)

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

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

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

  • デバイス レベル リソースへのアクセスは、ユーザがターゲットにアクセスするためのカスタム コードを書くことができるように提供されています。
  • ユーザ定義のレンダー ターゲットを使用することもできますが、デバイスの状態を復元しないと、レンダラのレンダー ターゲットの状態が破損します。 これは新しい制限ではありません。

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

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

  • 3d シーン レンダーに対するオブジェクト シェーダ オーバーライドにより適用。
  • quad blits に対する四角形レンダー シェーダーにより適用。

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

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

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

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

  • カメラ仕様
  • ワールドまたはシーンのフィルタリング
  • オブジェクト タイプ フィルタ
  • 描画モードのフィルタリング(塗り潰し、ワイヤ、コンポーネントなど)
  • ユーザが別の既存オーバーライドを使用できるようにするインタラクティブ レンダリングのための M3dView へのアクセス。
  • バッチ レンダリングの場合、ユーザはハードウェアおよび共通のレンダー グローバルにアクセスすることもできます。
  • カスタムのユーザー動作が利用可能なので、ユーザは、以前のデバイスレベルの状態を復元するという制限のもと、自分自身の直接描画を自由に実行することができます。 同じ制限が、現在 MPx3dModelView オーバーライドを含むすべての既存のハードウェア レンダリング インタフェースに適用します。

レンダー ロジックの構築

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

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

主要な制限