プラグイン エントリ ポイント

レンダリング フレームワークおよび API で公開される基本構造について基本的に理解できたものとして、このドキュメントの残りではレンダリング パイプラインで公開されるエントリ ポイントについて説明します。

現在は、次の目的で使用する 6 つのメイン エントリ ポイントがあります。

  1. ジオメトリ オーバーライド: プラグイン DAG オブジェクトの描画に使用するカスタム ジオメトリック データ ストリームを、プラグインで定義できるようにします。
  2. シェーダ オーバーライド: カスタム シェーディングを実行できるようにします。従来のハードウェア シェーダ プラグイン インタフェースとほぼ同等の機能を提供します。
  3. シェーディング ノード オーバーライド: ビューポートでのソフトウェア シェーディング ノードの描画で使用するためのハードウェア シェーダ フラグメントをプラグインで定義できるようにします。
  4. 描画オーバーライド: プラグイン DAG オブジェクトのすべての描画を完全にコントロールできるようにします。このレベルのコントロールは、従来のプラグイン ロケータまたはプラグイン シェイプの描画と似ています。これは描画のオーバーライドだけです。
  5. サブシーン オーバーライド: 単一の DAG オブジェクトを描画するために必要な多数のレンダー項目を、プラグインで効率よく定義できるようにします。
  6. レンダリング ループ オーバーライド: カスタム レンダリング ループを作成できるようにします。これは、内部レンダリング ループをオーバーライドします。これは、マルチパス レンダリングを実行する、よりフォーマライズされた方法です。

次の図は、これらのエントリ ポイントが存在する場所の概要です。これは詳細な説明ではなく、エントリ ポイントが存在するパイプライン内のフェーズを示したものです。ただし、レンダリング ループ オーバーライドは例外であり、これはパイプラインを使用またはリファインするものです。

図 34: ジオメトリ オーバーライドは、パイプラインを下方に送られるようにレンダー項目を更新するジオメトリ プロバイダとして機能するので、パイプラインの更新フェーズで相互作用します。シェーダ オーバーライドと描画オーバーライドは、パイプラインの描画フェーズで相互作用して、アイテムの描画方法をコントロールします。図をわかりやすくするために、サブシーン オーバーライドとシェーディング ノード オーバーライドは示されていません。ただし、どちらのオーバーライドも更新フェーズの間に相互作用します。

attach (アタッチ)という用語の使い方に注意してください。これらのエントリ ポイントは、新しいノード タイプを導入するのとは対照的に、既存のノードに新しい機能を追加またはアタッチすることによって、できるだけ影響が小さくなるように意図されています。主なアタッチメント ポイントは、プラグイン DAG オブジェクト、プラグイン シェーディング ノード、およびレンダラに対するものです。最後のレンダラは、特定のレンダラ オブジェクトではなく、「レンダラ」という概念を指します。

このフレームワークでは、プラグインは、他のエントリ ポイントの他のプラグインに依存することなく、任意のエントリ ポイントにアタッチできます。ただし、1 つまたは複数のエントリ ポイントにプラグインがアタッチされている場合、それらは古いインタフェースより密接に連携して動作します。たとえば、古い API プラグインでは、プラグイン ジオメトリ メカニズム(ジオメトリ オーバーライドに相当)とプラグイン シェーダ メカニズム(シェーダ オーバーライドに相当)は、一緒には動作しません。