Sorting Filter でオーバードローを防ぐ

Kanzi ノードは、Kanzi Studio Node Tree ウィンドウに示されているように、プロジェクトツリーの上から下に向かってレンダリングされます。フィルタを使用して3Dノードのレンダリングを変更することができます。

あるノードが最初にバックバッファでピクセルエリアに描画された後、最初のノードを遮蔽するように別のノードが表示されて同じピクセルが再度塗りつぶされると、オーバードローの問題が発生します。過度のオーバードローは、フィルレートの増加という形でGPUのパフォーマンスを低下させる可能性があります。ノードを順序付けて、遮蔽するノードが最初に描画されるようにすると、深度バッファリングのおかげで遮蔽されたピクセルを再度レンダリングする必要がなくなります。

3Dノードを Sorting Filter でレンダリング前に前から後ろの順に並べ替え、既知の不可視アイテムを非表示にすることで、オーバードローを防ぐことができます。これにより、シーン内の変換が変更されたとき(例えば、アニメーションを通じて)ノードが描画前に順序付けられ、更新されるため、CPUに多少のオーバーヘッドが追加されます。

ノードのオーバードローの表示

Overdraw のビジュアライゼーションは、Kanzi が同じピクセルに複数回レンダリングされる領域を示します。より明るい緑色は、オーバードローの量が多いことを示しています。

Kanzi は、ステンシルバッファを使用して、同じピクセルに何回描画するかを計算します。ステンシルバッファを使用してコンテンツをレンダリングしている場合、Overdraw のビジュアライゼーションは予期しない結果を返すことがあります。

オーバードローのビジュアライゼーションは表示されません:

  • 3Dノードをコンポジションにレンダリングし、その後テクスチャにレンダリングする場合のオーバードロー。この場合、Overdraw のビジュアライゼーションは、テクスチャにレンダリングされたコンポジションのコンテンツを単一のクアッドとして表示します。

  • ノードの一部は、先祖ノードで Clip Children プロパティを有効に設定したときにクリップされます。

  • 完全に透明なノードや、子孫ノードを含む表示されていないノード。

アプリケーションでオーバードローを表示するには、Kanzi Studio Preview で image0 をクリックして Analyze モードに入り、image1 を右クリックし、Overdraw を選択します。

../../_images/overdraw-enabled.png

Sorting Filter を使用して前から後ろにレンダリングする

Sorting Filter を使用して前から後ろにレンダリングするには、

  1. Library Alt を押しながら右クリック Rendering > Object Sources で Sorting Filter を選択します。

    ../../_images/create-sorting-filter.png
  2. Properties セット内で:

    • Sorting Type から View z へ

    • Reverse Order プロパティを有効にする

      ../../_images/sorting-filter-settings.png
  3. Library > Rendering > Render Pass Prefabs で、シーンをレンダリングするために使用する Draw Objects Render Pass を選択します。

  4. Properties で、Object Source プロパティをこの手順の最初のステップで作成したソーティングフィルタに設定します。

デフォルトで、Sorting Filter はシーンを前から後ろの順に並べ替えます。しかし、プロジェクト内でシーンの一部のみを選択することができます。これは、アプリケーションのパフォーマンスにおいて、GPU のフィルレート、ライティング、テクスチャリング、またはフラグメントシェーダーが既知のボトルネックである場合に便利です。Tag Filter の使用 を参照してください。

両方のケースでフレームレートを測定して、全体的なパフォーマンスに対する順序設定の効果を確認します。アプリケーションのパフォーマンスのトラブルシューティング を参照してください。

関連項目

レンダリングのベストプラクティス

レイアウトのレンダリングを最適化する

効率的なレンダリングのためのノードの設定

Tag Filter の使用

2Dノードのキャッシング

部分的に透過的なノードをレンダリングする