テッセレーションとジオメトリシェーダー


11

私が間違っている場合は修正してください。ただし、ジオメトリシェーダージョブとテッセレーションシェーダージョブはどちらも、グラフィックパイプラインで頂点を生成するためのものです。私が知りたいのは、それらがどのように違うのか、そしてどちらをいつ使うべきかということです。


6
完全な答えを書くのが面倒くさいですが、要点は、ジオメトリシェーダーは非常に小さな固定増幅レベル用であり、テッセレーションステージは大規模で動的なポリゴン増幅用です
MickLH

回答:


14

実際には、ジオメトリシェーダー(GS)の「ジョブ」は基本的な評価です。

ジオメトリシェーダーはテッセレーションできますが、a)出力要素数の処理中の上限、およびb)単一のシェーダー内での実行によって制限されます...もちろん、シェーダーのインスタンス化は2番目の問題を軽減しますが、全体的なジオメトリシェーダーはテセレーションよりもプリミティブ評価や値の補間に効果的です。

比較すると、テッセレーションシェーダー(TS)は、ジオメトリの高密度化を実行するために特別に導入されたため、パフォーマンスが向上し、アルゴリズムの配列(これは意図されている)に対して堅牢であり、出力境界バッファーによる制限が少なくなります。

DanielRákosがGS / TSの進化に関する優れた記事:ハードウェアテセレーションの歴史

それぞれをいつ適用するかは、「ジョブに適したツールを使用する」ケースであり、方法は次のとおりです。VS/ GS / FSでプリミティブを正しく評価するために、テッセレーターなしでラフドラフトパイプラインを構築します。ビューベースまたはシーンベースのテッセレーションを個別にスコープし、TSをGSの前に挿入してプリミティブを高密度化し、プリミティブを設計済みのGSに渡します。別のTSを試したい場合は、別のTSを作成してパイプラインに入れ替えます。インスタンス化されたGSを使用して、プリミティブのプロパティに基づいて適切なTSを動的に選択することもできます。

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