1

現在、地形/高さマップのレンダリングを試しています。その地形の各タイルは、VBO と IBO でレンダリングされます。サブタイルを簡単に描画できるようにするために、Morton コーディングを使用してインデックスを注文しました。この時点で、プリミティブ アセンブリに関するいくつかの疑問が頭に浮かびました。

プリミティブ アセンブリは頂点処理の後に発生しますが、

  1. GPU は処理する頂点をどのように認識しますか? それらのいくつかは索引付けされていない可能性があります。それらはまだ処理されますか?
  2. GPU は、頂点を処理する必要がある順序をどのように認識しますか? おそらく、三角形は VBO の最初と最後の頂点を使用するので、VBO 全体が処理されるまでプリミティブ アセンブリ ステージを待たなければならないのでしょうか?
4

1 に答える 1

0

GPU は処理する頂点をどのように認識しますか? それらのいくつかは索引付けされていない可能性があります。それらはまだ処理されますか?

インデックス バッファーと描画呼び出しの頂点の範囲によって、どの頂点が処理されるかが決まり、プリミティブ アセンブリ中の使用順序も定義されます。その範囲の頂点/インデックスに含まれていない頂点は、処理する必要はありません。

GPU は、頂点を処理する必要がある順序をどのように認識しますか? おそらく、三角形は VBO の最初と最後の頂点を使用するので、VBO 全体が処理されるまでプリミティブ アセンブリ ステージを待たなければならないのでしょうか?

プリミティブ アセンブリに到達するまでは、頂点が処理された順序は特に重要ではありません。頂点シェーダー レベルでの順序依存性はありません (頂点はすべて並列に処理されている可能性があります)。知っておく必要があるのは、頂点シェーダーの結果が変換後キャッシュと呼ばれる特別なバッファーに追加されることだけです。

ジオメトリ シェーダー (プログラム可能なプリミティブ アセンブリ) は、変換後のキャッシュから入力頂点をフェッチし、特定の順序でそれを行います。変換後キャッシュの従来の FIFO 実装を考えると、順序によってキャッシュの置き換えが決まり、ストリップベースのプリミティブは、プリミティブの組み立て中にキャッシュ ヒット率を最大化する傾向があります。変換後のキャッシュでキャッシュ ミスが発生するとストールが発生しますが、これはキャッシュにない頂点に対してのみです。頂点バッファー内のすべての頂点が不必要に処理されている間はストールしません。

幸いなことに、最近のほとんどのモデリング ソフトウェアはキャッシュ効率の高い順序で頂点を出力し、キャッシュはこれまで以上に大きくスマートになっているため、これについて頻繁に心配する必要はありません。15 年前、頂点キャッシュは非常にホットな話題でした。あなたが話した人は、何が最も効果的かについて独自の理論を持っていました。

于 2015-02-21T10:17:39.893 に答える