インデックス付きメッシュの頂点はポリゴン単位で再処理されますか?


8

私はGPUのハードウェアレベルで実際に何が起きているのかを少し掘り下げていたところ、少なくとも緑色のボックスについては、パイプラインをかなりよく説明する三角形の NVidiaのLifeを見つけました。私が明確にしていないことの1つは、同じ頂点がさまざまな三角形の束に使用されている場合に、インデックス付きメッシュで何が起こるかです。データは通常、ストリームプロセッサで必要以上に永続化されないため、頂点はラスタライズされた後に破棄されるだけで、新しい三角形に表示されるたびにフェッチされ、頂点シェーダーを再び通過すると思います。誰でもこれを確認できますか?また、ラインストリップモードまたはトライアングルストリップモードではどうなりますか?これらの場合、2つまたは3つの関連プリミティブがラスタライズされるまで、GPUは変換された頂点データをどこかに保持しますか?

回答:


5

あなたが探しているかもしれない主要な表現は"Post Transform Cache"です。

これは通常、頂点の再利用が自然なため効果的ですが、ホッペの方法(注:このページには最近の作業もいくつか記載されています)やメッシュを並べ替えたり、フォーサイスでさらに改善したりできます。


1
うん、それはそれです。ありがとう。:-)非常に大きなボリュームでインデックス付きマーチングキューブを実行していて、頂点の局所性がスライス間でかなり悪いため、それらがどのようにレンダリングされるのか知りたいと思っていました。頂点をどこかにキャッシュするのは理にかなっています(私は標準のL1 / 2キャッシュにいると思いますか?)。私のメッシュは、多くの頂点を再処理するのに十分な順序になっていない可能性があるため、これらのアルゴリズムを調べます。
ロシア

4

これは、頂点が再利用される距離に依存します。

たとえば、正方形に0, 1, 2, 2, 1, 3は十分な間隔があり、12頂点が再利用されます。しかし、再利用の間に100個の頂点がある場合は、再利用されない可能性が高くなります。

しかし、それらがはるかに離れている場合、頂点はキャッシュから外れ、頂点シェーダーで再処理する必要があります。

このため、一部の3Dソフトウェアには、頂点を並べ替えることにより、インデックス付きメッシュの頂点の局所性を改善する方法があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.