2

状態変化の回数を最小限に抑えるには、メッシュの描画順序をソートする必要があります。とにかく、複数のシェーダーを使用する複数のメッシュがある場合は、頂点属性のバインディングまたはシェーダーの均一なパラメーターのいずれかによる並べ替えを選択する必要があります。

何を選べばいいですか?GPU キャッシュのヒット率が高いため、頂点属性の変更を最小限に抑えることを選択する必要があると思いますが、シェーダーの変更コストについてはわかりません。描画順序を決定する際の一般的な懸念事項は何ですか? これを選択する根拠を得ることができますか?

PS。iOS/PowerVR SGX チップをターゲットにしています。

編集

多くのメッシュは少数のマテリアルしか使用しないため、マテリアル別に並べ替えることにしましたが、描画するメッシュはたくさんあります。これは、メッシュを共有するよりもマテリアルを共有する機会が増えることを意味します。そのため、状態変更回数を減らす可能性が高くなります。とにかくよくわからないので、もっと良い意見があれば教えてください。

4

2 に答える 2

3

順序に依存しないピクセル単位の完全な隠面除去を使用するため、PowerVR SGX で不透明なオブジェクトを深度ソートする必要はありません。深度ソートは、適切な透明度/半透明度のレンダリングを実現するためだけに行われます。

SGX でのベスト プラクティスは、次の順序で州別に並べ替えることです。

  • ビューポート
  • フレームバッファ
  • シェーダー
  • テクスチャ
  • クリッピング、ブレンディングなど

テクスチャ アトラスを使用すると、テクスチャの状態の変化を大幅に減らすことができます。ドローコールの量は、バッチ処理によって削減できます。

それはまさに黄金律です。最初にプロファイリングしてから最適化する必要があることを覚えておいてください:)

参照: http://www.imgtec.com/powervr/insider/docs/PowerVR.Performance%20Recommendations.1.0.28.External.pdf

于 2012-08-22T13:12:54.823 に答える
1

このhttp://realtimecollisiondetection.net/blog/?p=86のようなものを使用すると、実行時にコードで最初にソートされる部分を変更して、デバイスごとに最高の速度を実現できます

于 2012-08-22T12:32:57.773 に答える