これを参照してください。question:頂点シェーダ後のOpenGL三角形の縮退?
巨大なメッシュのレンダリング速度を改善する方法はいくつかあります。私は次の実装を試しました:
- 最適化や量子化なしでメッシュをレンダリングするだけです。
- 私はメッシュをCPUの前処理ステップとして量子化し、実行時にLODレベル(=量子化レベル)を切り替えることにしました。私は頂点データ全体を提出し、Drawcall(numberOfNotDegeneratedIndices)でレンダリングします。 - > 0より速く
- 私の今の考え:Vertex-Shader(すべての頂点データが計算とダイナミックLODスイッチングのために存在する)で量子化全体を行います。三角形の縮退は、頂点処理ステップの後に自動的に起こるはずです。 Drawcall(numberOfAllIndices) - >(0)よりも実際には高速ではない
比較されるメソッド:頂点データの提出量は常に同じです。 VSコール:(0)==(2)>(1)
私は量子化とその結果の三角形の退化にもかかわらず、方法(2)が(0)よりも速くならないのだろうかと思いましたか?
これはなぜこれが好きなのか、そしてGPUのボトルネックがどこにあるのかという詳細な情報を得たいと思います。
お使いの三角形がピクセルセンターに触れていない場合は、既にピクセルシェーディングの費用などを支払っていません。ボトルネックが何であれ、ピクセルシェーディングではありません。それは頂点シェーディングかもしれません、それは頂点シェーダーの入力を取り出すコストかもしれません、上流にあるかもしれません。どのような場合でも、頂点の陰影をより高価にする*ことは役に立たないでしょう。あなたの(1)のように、GPUが見ているバーツの数を減らすことはできます。 – moonshadow
「量子化」と言うとき、正確に何をしていますか? –
量子化:位置を[-1; 1]にマップし、2 ^レベルでラプ()、2 ^レベルで除算 –