ジオメトリシェーダ

DirectX 10/SM4.0で導入された「第三のプログラマブルシェーダ」こと「ジオメトリシェーダ」(Geometry Shader)。レンダリングパイプラインの頂点フェーズにおいて、頂点をプログラマブルに増減させるという画期的なプロセスを可能にするDirectX 10の目玉フィーチャーだったのだが、第一世代のDirectX 10/SM4.0対応GPUでは、あまりパフォーマンスがよくなかった。具体的に言えば一頂点から多めに頂点が増加するような処理は不得意で、現実的には一頂点をスプライト(2ポリゴン)にしたり、ラインを生成したり……といった用途に使える程度であった。ATI、NVIDIAともに第二世代DirectX 10.x/SM4.x対応GPUの開発にあたっては、このジオメトリシェーダのパフォーマンス向上に目を向けたようだ。

NVIDIAはGDC 2008にてジオメトリシェーダを使ったテッセレーションの新しいアルゴリズムを発表しており、この用途が現実的に使えるよう、GeForce GTX 200シリーズのジオメトリシェーダの性能改善を行っている。具体的にはジオメトリシェーダのアウトプットバッファをGeForce 8/9比で6倍に拡大したとのことだ。

NVIDIAもGeForce GTX 200シリーズでやっとジオメトリシェーダが使い物になりそう。積極利用の3Dゲームの登場に期待したいところ

ATIは既にRadeon HD 2900シリーズの時点でジオメトリシェーダのパフォーマンスはそれなりによかったのだが、Radeon HD 4800シリーズではさらに性能を強化している。

具体的にはジオメトリシェーダで増幅生成した頂点データをビデオメモリに戻さず、GPU上に積極的に保持するようにし(キャッシュメモリや前編で解説したデータシェアメモリ)、さらにジオメトリシェーダのスレッドをRadeon HD 3800シリーズと比較して4倍多く実行できるような改良を施している。

ATIによれば、Rightmark3D 2.0調べでGeForce GTX 280を凌いでいるというから、これは期待できそう

「ATI、NVIDIAのどっちのGPUのジオメトリシェーダがどれだけ速い」ということはあまりここでは問題ではなく、ジオメトリシェーダが現実に使い物になってきたという点に注目したい。