家庭用ゲーム機の世界では、2005年末にマイクロソフトから同社の二世代目のゲーム機である「Xbox 360」が発売される。グラフィックステクノロジー的にはDirectX 9世代/SM3.0対応。そして、詳細は後述するが、Xbox 360-GPU(Xenos)は世界初の統合型シェーダアーキテクチャを採用しているのが特徴であった。Xbox 360-GPUはATI製で、意外なことに、同時期にATIがPC向けに発表したRadeon X1800シリーズとは設計が全く異なっている点が興味深い。ちなみに前出のVTF機能はRadeon X1x00シリーズ全体で未対応だが、Xbox 360-GPUの方は対応していた。
2006年末には、ソニーからも新ゲーム機である「プレイステーション3」(PS3)が発売される。PS3のGPUはNVIDIAが設計を担当し(製造はソニー他)、「RSX」という専用名称が与えられたが、基本設計はGeForce 7800シリーズとほぼ同一で、グラフィックステクノロジー的には競合Xbox 360と同世代のDirectX 9世代/SM3.0対応であった。
新世代ゲーム機戦争では「Xbox 360対PS3」というの構図があったわけだが、実はさりげなく、ここでも「ATI対NVIDIA」の戦いが展開されていたのだ。いずれにせよ、二大最新ゲーム機のグラフィックスは共にプログラマブルシェーダ3.0アーキテクチャベースとなり、PCもゲーム機もSM3.0時代に突入したことになる。
なお、ゲームプラットフォームのもう一つの雄、任天堂は新世代ゲーム機として「wii」を投入するがグラフィックステクノロジー的には進化をほぼ断念する方針を採択した。
2007年~プログラマブルシェーダ4.0とDirectX 10時代の始まり
1年おきにDirectXのバージョン番号が更新されていた1990年代後期と異なり、DirectX 9は2002年から4年間、ほぼWindows XPのライフタイムの全体を占めることとなった。2006年後期にはATIがCPUメーカーのAMDに買収されるという事件が起きるが、振り返ってみれば、2000年以降のリアルタイム3Dグラフィックスの歴史は、実質的には「ATI対NVIDIA」の戦いの歴史だったといっていいだろう。
2007年、年が明けて早々にマイクロソフトは新しいOS「Windows Vista」を発表。これと同期して、新しいDirectXである「DirectX 10」が足かけ5年ぶりにリリースされる。
DirectX 10では、プログラマブルシェーダのバージョンは4.0に対応することとなった。
SM4.0では、SM3.0に対してさらなる命令セットの拡充が行われている。具体的には整数演算命令、二進論理演算命令などが追加され、よりCPU的な汎用プログラミングが行えるような機能強化が行われている。また、命令セット的には頂点シェーダとピクセルシェーダとの格差がなくなり、これをマイクロソフトは「コモンシェーダ」(common:共有型/汎用型)アーキテクチャと呼んでいる。
同時テクスチャアクセス数もSM3.0時の16からSM4.0では128へと拡張されており、共通指数項Eを持つ新しいテクスチャフォーマットRGBE形式もサポートされ、リアルタイム(ゲーム)向きな低負荷なHDRレンダリングを可能としている。
そしてDirectX 10/SM4.0において最大のトピックといえるのが第三のプログラマブルシェーダ「ジオメトリシェーダ」(Geometry Shader)の新設だ。
これまで頂点次元のことを「ジオメトリ」と呼ぶことも多かったので、「ジオメトリシェーダ」は「頂点シェーダ」と同義に聞こえてしまいそうだが、頂点シェーダとは別のものになる。ただし、「取り扱う情報は頂点次元」という点においては頂点シェーダと同じだ。
ジオメトリシェーダの役割はプログラマブルに頂点を増減すること。正確には線分、ポリゴン、パーティクルのようなプリミティブ(Primitive)の増減までが行える。
そして頂点処理フェーズにジオメトリシェーダが追加されたことに呼応する形で、頂点シェーダやジオメトリシェーダの出力をビデオメモリ側に書き戻すメモリ出力機能「ストリーム出力」(Stream Output)の仕組みも新設されている。これにより、頂点処理フェーズにおいて「頂点シェーダ→ジオメトリシェーダ→頂点シェーダ……」というような再帰的な処理が可能となった。
ジオメトリシェーダとストリーム出力の組み合わせは、高度な3Dモデルの変形加工を可能にするに留まらず、GPUをCPU的な汎用処理目的で活用するGPGPU(General Purpose GPU)用途にも有用だとされ、その幅広い応用が期待されている。
(トライゼット西川善司)