ビューポート 2.0 レンダリング イベントのプロファイラ(Profiler)の例

プロファイラ(Profiler)の結果は、当然ながら確認するシーンによって異なります。最初の一連の例では、UI および非 UI 描画の基本、リストをビルドする更新イベント、およびシーン レンダーのシーケンス全体を確認します。

次の一連の例では、レンダー オーバーライドまたはプラグイン レンダラがアクティブなときのシーケンスの違いについて説明し、UV エディタ(UV Editor)などの他のビューポートへのレンダリングを確認します。

空のシーン

可能である最も簡単なケースは UI のない空のシーンです。上位レベルのイベントのスナップショットを次に示します。グラフの下から上に向かって、イベントの精度が上がります。

UI 描画(グリッド)

グリッドが有効になっている場合、プロファイルでは、低いレベルのリスト描画のいくつかを表示します。このレベルでは、colorPass イベントが支配し、ビューティ パスの UI のレンダリングがほとんどの時間を占めます。

colorPass イベントの上の行は、より精度の高いブレイクダウンを示しています。これには、不透明 UI リスト(opaqueUIList)の要素を描画する、パス セマンティックが名前に付いたイベントが含まれ、グリッドが含まれています。uiGeometry セマンティックは、UI がレンダリングされていることを示しています。preUIGeometry セマンティックは、ビューティ パスの前に実行されることを示しています。赤いボックスでマークされた小さいイベントは postUIGeometry で、ビューティ パスの後の UI 処理を示しています。

UI 表示の変更を確認するには、すべての HUD 要素を有効にします。

この変更により、UI 更新(Vp2UpdateUI)に使用される処理時間の割合が増加し、Vp2BuildRenderLists の割合が減少します。

不透明オブジェクトの描画(球)

逆に、次に示すメッシュのセットのような多数の非 UI オブジェクトを追加すると、レンダー リストをビルドするイベントがより支配的になります。他のイベント(opaqueGeometry セマンティック)も出現しています。これは、不透明ジオメトリのリスト(球)の描画を表しています。

このイベントのシーケンスは、レンダー オーバーライド使用時に発生するイベントのサブセットと見ることができます。

レンダー オーバーライドの例

前の一連の例(オーバーライドは使用されていない)と同じように、このセクションでは簡単な例から始め、より複雑な例を次に示します。

次のレンダー オーバーライドは、Maya Developer Kit のサンプル プラグインとして入手可能です。

viewOverrideSimple

この例では、「最上位」レベルのイベントに Vp2OverrideRender というラベルが付いており、これは、レンダー オーバーライドが使用されていることを示しています。

下から上に向かって、グラフの精度が上がります。Vp2ExecuteRenderOverride は、Vp2*Operation イベントが実行される間の内部の実行時間を示します。この例では、シーン、HUD (赤いボックスの範囲)、および表現操作(それぞれ、Vp2SceneOperation、Vp2HUDOperation、および Vp2PresentOperation)を使用します。

カラー パスが必要なので、内部シーン レンダーのイベントが発生します(Vp2SceneRender)。Vp2DrawOperation イベントのラベルは、操作によるレンダリングを示していますが、黄色のボックスで示すように、このグラフで発生するイベントのシーケンスは、上記の不透明な内部レンダリングの例で示したものとほとんど同じです。

viewImageBlitOverride

この例では、異なる構成を示します。この構成では、外部レンダラでイメージが生成済みであることを前提とし、必要なことはイメージの転送だけであり、これに続いて Maya で UI 要素がレンダリングされます。

オーバーライドの実行の最後の部分を拡大したビューは次のとおりです。

更新フェーズでは、赤で囲まれたイベントは操作ごとの更新時間です(Vp2UpdateOverrideOperation)。

基本的な操作は、四角形、シーン、および表現操作(Vp2QuadOperation、Vp2SceneOperation、および Vp2PresentOperation)です。現在、四角形の操作では、更新とリストのリビルド(Vp2BuildRenderLists)を実行します。このリストは、四角形の操作ではレンダリングされず、シーン パスでレンダリングされます。

シーン操作(黄色のボックスの範囲)には、前の 2 つの例の説明と同じ基本的なイベントのシーケンスがあります。

viewRenderOverride

レンダー オーバーライドの最後の例では、四角形、シーン、ユーザ、HUD、および表現の操作が混在するケースを確認します。プロファイルされたサンプル シーンは次のとおりです。

基本的なレンダリング操作のシーケンスは次のとおりです

  1. 手続き式に生成されたバックグラウンド(ここではマンデルブロ)を描画します。
  2. シーンの非 UI パーツを描画します。
  3. レンダリングされたイメージに、2D カラー強度のしきい値関数を実行して、新しいイメージを生成します。
  4. しきい値にかけられたイメージをブラーします。
  5. しきい値にかけられたイメージと手順 2 でレンダリングされたシーンを結合します。これが「グロー」になります。
  6. シーンの UI パーツを描画します。
  7. その他の UI にカスタム ユーザ パスを実行します。
  8. 2D HUD を描画します。
  9. 最終出力を表示します。

次のグラフは、各操作の相対的なイベント時間を示しています。最初の四角形操作は他よりも時間がかかっています。手続き式のマンデルブロ パターンの描画(赤で囲まれた Vp2DrawOperation)とは対照的に、数個の球を使用した簡単なシーンでは、かなりの割合の時間が、レンダー項目リストの準備にかかります。

次のグラフは、バックグラウンドのレンダリングの後に発生するイベントを示しています。

黄色で囲まれたイベントは、不透明および透明なシーンの描画操作を表しています。この両方で、UI 要素の描画は無効になっています。不透明な描画で既に説明した処理のため、透明な描画にかかる時間は不透明な場合よりもかなり小さいこと、そして、透明項目は少ないという事実に注意してください。

赤で囲まれたイベントは、オリジナルのイメージに対するしきい値設定、垂直ブラー、水平ブラー、および合成で使用される 4 つの四角形のレンダリング操作に対応しています。

緑で囲まれた、シーン操作の最後のイベントは、UI 要素の描画を表しています。ワイヤフレームやバウンディング ボックスの描画など、UI 要素ではイベントの処置時間が長くなります(Vp2UpdateUI)。これは、プラグインに追加されたカスタムの描画可能 UI もこのイベントに含まれるためです。

ユーザ操作では、さらに描画可能 UI を追加します。プロファイラ(Profiler)でイベントを展開すると、不透明リストと透明リストの処理が異なることがわかります。これは、「既定」であるフロント/バック カリングの 2 パス描画が透明オブジェクトに対して実行されるためです。不透明リストの処理は黄色で囲まれ、透明リストの処理は赤で囲まれています。緑のボックスは、ビットマップの描画処理を示しています。ユーザ操作コード自体は、操作ではありません。

最後に、分離した HUD 操作は非常に簡単で、HUD リストのすべての項目をレンダリングします(Vp2HUD)。暗い黄色のイベントは、操作の更新処理を示しています。

非 3D レンダー グラフ

オーバーレイ描画

次のグラフは、2D セレクション ボックス選択ツールのプロファイリング時に発生する一連のイベントを表しています。オーバーレイ描画は「Vp2DrawOverlay」のラベルで示されています。描画されるリストが「Vp22d Overlay UI」リストです。3D レンダリングは含まれていません。

マテリアル ビューア(Material Viewer)のプラグイン レンダラ

次のグラフは、ハイパーシェード(Hypershade)マテリアル ビューア(Material Viewer)で使用されるプラグイン レンダラの簡単な更新のプロファイリング結果を表しています。時間の大部分が、レンダリングされたイメージの表示に使用されています(Vp2DrawPluginRenderer)。

UV エディタ(UV Editor)

UV エディタ(UV Editor)の大部分は、UI の描画で構成されます。これには、バックグラウンド イメージ、ワイヤフレーム、グリッド、およびその他の装飾の不透明描画が含まれます。Lambert シェーダの上にチェッカがある、次のサンプル シーンをプロファイルします。

次のグラフは、バックグラウンドと、最上部にレンダリングされた UI のイベントを示しています(Vp2Post Render UI)。Vp2Post Render UI は、Vp2<UI リスト名>の形式によるイベント ラベルの例です。

マニピュレータを UV コンポーネント変換の実行に使用すると、他の UI イベントが追加されます。Vp2Manipulator は、Vp2<UI リスト名>の形式によるイベント ラベルのもう 1 つの例です。