対するNVIDIA GeForce GTX 4x0では、テッセレータを含むジオメトリエンジンを各GPCに対し4基ずつ、各SMに対し1ずつ割り当てて実装させた非常に贅沢な構成とした。各GPCにはSMが4基ずつあるので、ジオメトリエンジンは総計4SM×4GPC=16基ある計算になる。なお、前述してきたように、歩留まり向上のためにGeForce GTX 480では1SM、GeForce GTX 470では2SMが無効化されるので、ジオメトリエンジンはGeForce GTX 480では15基、GeForce GTX 470では14基を内包することになる。全てのジオメトリエンジンにはテッセレータが内蔵されているので、言い換えれば、GeForce GTX 480は15基、GeForce GTX 470は14基のテッセレータを持つことになる。

GeForce GTX 4x0の全体ブロックダイアグラム

テッセレータを含むPolyMorph Engineのクローズアップ。GeForce GTX 4x0ではテッセレータが1SMにつき1基搭載されている

GeForce 8000シリーズ以降、3DグラフィックスよりもGPGPUに重心を置いたGPU開発を行ってきた近年のNVIDIAにしては、この「超3Dグラフィックス重視のアーキテクチャ」は予想外の設計判断と言え、ある意味、GeForce GTX 4x0のアーキテクチャ上、業界関係者を最も驚かせたポイントとなっている。

かつてDirectX10時代の黎明期、DirectX 10の新機能であるジオメトリシェーダのパフォーマンスにおいて、ライバルのRadeon HD 2900 XTに対し、GeForce 8800 GTXがだいぶ劣っていたことが叩かれたことがあった。あの苦い経験を踏まえ、今世代、DirectX 11の新機能テッセレーションのパフォーマンスに関してはどうしても負けられない……といったNVIDIAの意地がこういうアーキテクチャを決意させたのかも知れない。

15基ものテッセレータの搭載は、ATIの言う「製品カテゴリ云々」の概念を超えたオーバーキルなスペックとなっており、NVIDIA側としては「DirectX 11時代はテッセレーションが来る!」という確信があるのだろう。

動画
テッセレーションを活用したNVIDIA製作の水面のデモ
(WMV形式 1分19秒 24.8MB)
動画
NVIDIA製作のテッセレーションを活用した髪の毛の表現のデモ。テッセレーションはポリゴンだけでなく、線分にも適用できる。シミュレーション結果を元にして線分を適宜、テッセレーションによって分割。これをさらにジオメトリシェーダで増殖させて豊かな髪の毛の表現を行っている
(WMV形式 1分23秒 26.1MB)

実際、NVIDIAは、テッセレーションステージの活用を3Dグラフィックス表現において1ポイントリリーフ的に活用するのではなく、3Dゲームグラフィックスエンジンの根幹活用を強く推奨してきている。2010年のGDCにおいて、NVIDIAは、これまでピクセルシェーダが行ってきたピクセル単位のライティングのうち「ピクセル単位よりは粗くていいが頂点単位よりは細かく行いたいライティング」をテッセレーションステージのドメインシェーダで行わせるアイディアや、LOD(Level of Detail)処理を視点からの距離だけでなく画面解像度の高低で行わせ、高解像度ではよりテッセレーションステージを活用して多ポリゴンで表現させる画面解像度適応型のポリゴン分割様式(テッセレーションメソッド)などを提案していた。前者はテッセレーションステージの積極的なアクセラレーション的活用、後者は描画品質向上のためのテッセレーションステージの積極活用に相当する。一般的に知られている活用手法よりも踏み込んだテッセレーションステージの活用を啓蒙することによって、自社のアーキテクチャが優れていることをアピールしたいのだろう。

前出の水面のデモにおいて、水底にきらめく火線(CAUSTICS)表現はドメインシェーダによるライティングによって実現されている

同様にソフトシャドウなどもドメインシェーダを使ったライティングにはおあつらえ向きなテーマだと言える

さて、テッセレータを内蔵するGeForce GTX 4x0のジオメトリエンジンには「PolyMorph Engine」という名称が付けられているが、これは「Vertex Fetch」「Tessellator」「Viewport Transform」「Attribute Setup」「Stream Output」の計5ユニットから構成されている。テッセレータ以外のユニットの役割について簡単に解説しておこう。ちなみにPolyMorph Engineは「ポリゴン(Polygon)を変形(Morph)させるポテンシャルがある」の意を汲んで付けられた名称だ。

Vertex Fetch(バーテックスフェッチ)ユニットは、頂点バッファから頂点情報を読み出し、その頂点情報をSMへと送り、SM内CUDA Coreを頂点シェーダやハルシェーダとして起用させるユニットだ。Radeon HD 58x0でいうとVertex Assembler(頂点アセンブラ)やGeometry Assembler(ジオメトリアセンブラ)に相当する。

Viewport Transform(ビューポートトランスフォーム)ユニットは、実際にピクセルをレンダリングする前段階処理として、カメラ(視点)基準の座標系に変換したり透視投影変換したりする処理を行う。Attribute Setup(アトリビュートセットアップ)ユニットは、後段のピクセルシェーダを動作させるために必要な情報、例えば平面方程式に必要な法線ベクトルをはじめとする頂点付随情報などをで算出する。これらは、前述のRaster Engine内のラスタライザへ処理を流すための前処理……と言ってもいいだろう。Stream Output(ストリームアウトプット)ユニットは、ここまでの処理結果をRaster Engineに回さずに途中出力するために利用される部分で、DirectX 10時代に新設された機能ブロックになる。

GeForce GTX 480は、実はこうした一連のジオメトリ処理(頂点パイプライン)を15基並列で処理できる点においても、Radeon HD 58x0に対してアドバンテージがあるといえる。DirectX 11市場はATIにだいぶ席巻されてしまったNVIDIAだが、製品投入に時間が掛かった分、アーキテクチャの新しさの面ではNVIDIAのGeForec GTX 4x0の方が先行している……という印象を持つ。

動画
テッセレーションを定義通りLODシステムに活用した「石の巨人」デモ。こちらはNVIDIA、BITSQUID、fatsharkの共同製作によるもので、実際の3Dゲームクオリティ相当の映像になっている
(WMV形式 1分47秒 33.7MB)