フレームワーク クラス

フレームワーク クラスにより、プラグインは、状態およびリソース管理、レンダリング コンテキストおよびオーバーライド管理を含む、Maya の内部レンダリング フレームワーク オブジェクトにアクセスすることができます。

MDrawRegistry

ここでは、プロキシ オーバーライド クラスの実装を Maya の特定のノード タイプに対して登録しなければなりません。 同じプロキシを複数のノード タイプに対して登録することができますが、各ノード タイプに関連付けることのできるプロキシ クラスは 1 つだけです。 追加登録を実行すると、既存の登録がオーバーライドされます。

MDrawContext

MDrawContext は、実際の描画をオーバーライドするクラス(MPxDrawOverride および MPxShaderOverride)によって使用されるすべての描画コンテキスト情報を格納します。 このクラスは、描画状態の取得および設定に使用できます。

MStateManager

GPU へのアクセスおよびその状態の修正を効率的で制御された方法で行うため、状態マネージャを描画コンテキストのインスタンスから取得することができます。 ユーザ自身が状態を直接修正することはもちろん可能ですが、すべての状態管理はこのインタフェースを介して行うことを推奨します。 Maya では、時間のかかる読み戻しや、重複する状態変更を避けるために、デバイス状態へのアクセスを最適化しようと試みます。さらに、このインタフェースを使用することによって、Maya は現在の状態を追跡し、破壊を防ぐことができます。

MRenderer

これはビューポート 2.0 レンダラのメイン インタフェースです。 これは、リソース管理およびレンダー ロジック制御のためのインタフェースを提供します。 レンダラはシングルトン オブジェクトで、MRenderer::theRenderer() を介してアクセスすることができます。

テクスチャ管理

テクスチャは、レンダラから取得または解放できるリソースです。 メイン インタフェースにより、ディスクからファイル テクスチャを取得したり、システム メモリのブロックからテクスチャを作成することができます。 テクスチャはすべてレンダラによって管理されます。 テクスチャは MTextureDescription によって記述され、利用可能なラスタ フォーマットのリストは MRasterFormat によって記述されます。 サポートされるテクスチャ タイプは MTextureType によって記述され、環境マッピング タイプは MEnvironmentMapType によって記述されます。 また、テクスチャのデバイス レベル ハンドルにアクセスして、ユーザは直接リソースを使用することができます。

シェーダ管理

いくつかの単純なストック シェーダ、およびファイルに格納された状態でディスクにロードされる CgFX シェーダは、シェーダ マネージャを介してレンダラから取得することができます。 レンダラから MShaderManager クラスにアクセスして、MShaderInstance オブジェクトへのアクセスを取得します。このオブジェクトは、MPxGeometryOverride によって、またはレンダー上の完全なシェーダ オーバーライドとして使用することができます。

MFragmentManager

MFragmentManager は、ビューポート 2.0 シェーディング フラグメントおよびフラグメント グラフを処理するための機能を提供し、MPxShadingNodeOverride および MPxSurfaceShadingNodeOverride の実装によって使用されることを目的としています。フラグメントおよびグラフはともに、カスタム XML フォーマットを使用して定義されます。 このフォーマットは、パラメータの既定値だけでなく、フラグメントの入出力パラメータについても記述できます。ビューポート 2.0 の OpenGL と DirectX のどちらのバージョンでも動作するフラグメントを生成することができるように、フラグメントの複数の実装(たとえば、Cg 実装と HLSL 実装)の指定が許可されています。また、このフォーマットでは、いくつかのフラグメントを互いにつなげて 1 つのフラグメント グラフにする方式を定義するときにも使用できます。

MFragmentManager はまた、Maya がビューポート 2.0 の内部シェーディング ノードをレンダリングするときに使用する、数多くのフラグメントとフラグメント グラフの XML データを格納する場合にも使用されます。この情報は、開発者がフラグメントを自作することによって他の Maya シェーディング ノードとシェーディング システム全体を統合する場合にも使用されます。

ターゲット管理

MRenderTargetManager を使用して、レンダー操作上のオーバーライドとして使用するためのレンダー ターゲットをレンダラから取得することができます。