2002年/2003年~プログラマブルシェーダ2.0と第一期DirectX 9時代
DirectX 8時代のプログラマブルシェーダは、GPUメーカーごとの若干の亜流バージョンがいくつか混在した関係でバージョン1.xと規定される。そして2002年には新しいプログラマブルシェーダである、バージョン2.0仕様をサポートしたDirectX 9が発表されることとなる。
プログラマブルシェーダ仕様は、Shader Model(略してSM)のキーワードの後ろにバージョン番号を付けることでアーキテクチャ世代を指すことがこの頃から一般化するようになる。つまり、例えば、DirectX 9世代は「SM2.0」対応GPUが台頭する時代となった……というわけだ。
SM2.0では、SM1.xと比較するとより長いシェーダプログラムが実行できるようになり、命令の種類が増え、使える命令の組み合わせの制限も低減された。また、これまで頂点シェーダのみ活用されていた浮動小数点演算精度がピクセルシェーダにおいても利用できるようになり、ピクセル単位の陰影処理の演算精度と表現できるダイナミックレンジも広がることとなった。この拡張が「ハイ・ダイナミック・レンジ・レンダリング」(High Dynamic Range Rendering:HDR Rendering)と呼ばれるその後のリアルタイム3Dグラフィックスにおける新しいトレンドを生み出すきっかけとなる。
DirectX 7/ハードウェアT&L時代の第一号GPU、そしてDirectX/初のプログラマブルシェーダ対応GPUが共にNVIDIAからりリースされていたのに対し、DirectX 9/SM2.0対応GPUの初号機はATIからリリースされたRadeon 9700となったことも感慨深い出来事であった。NVIDIAもこれに対抗するGeForce FXをぶつけてくるが、製造上の問題を抱えていた上にパフォーマンス的にも苦戦し、このSM2.0時代はATI優勢のまま経過していくこととなる。
そしてSM2.0時代ATI優勢を決定づけたのは、この頃、最も登場されることが待ち望まれたVALVE社の大作ゲーム「ハーフライフ2」が、ATIのRadeon 9500/9600/9700/9800シリーズを最適なGPUとして、マーケティング戦略を展開したことだ。
2004/2005/2006年~プログラマブルシェーダ3.0と第二期DirectX 9時代
SM2.0は"2.0"といいながらも、実は1.xの時と同様にいくつかのマイナーな亜流を生んだ。NVIDIAはGeForce FXでプログラマブル頂点シェーダ2.0aとプログラマブルピクセルシェーダ2.0aを名乗って実装している。
DirectX 9の登場から約2年が経った2004年、マイクロソフトはDirectX 10は発表せずに、新しいDirectX 9のマイナーバージョンアップ版を発表し、プログラマブルシェーダ仕様3.0、すなわちSM3.0への対応を果たす。
SMバージョンが1.0上がったのにDirectXバージョンを上げなかったのは「後に出てくるWindows Vistaに合わせるため」「後に出てくるATI製SM3.0"未"対応GPUに配慮したため」など諸説があるが詳細は不明だ。
SM3.0では事実上、シェーダプログラムのプログラム長制限が撤廃され、頂点シェーダ、ピクセルシェーダ双方の命令セットの拡充も行われている。SM2.0では動的な条件分岐反復は頂点シェーダに限定されていたが、SM3.0ではピクセルシェーダにおいてもサポートされるようになり、事実上、プログラマビリティ面において頂点シェーダとピクセルシェーダの格差がなくなった。また、頂点シェーダからもテクスチャへのアクセスを可能にする新機能「Vertex Texture Fetching:VTF」(別名頂点テクスチャリング)のサポートもこの時強くアピールされている。
SM3.0対応の最初のGPUはNVIDIAから発表されたGeForce 6800シリーズとなり、意外なことにATIは同じ2004年に登場させた新GPU、Radeon X800シリーズにおいてSM2.0対応に留まる選択をする。
Radeon X800シリーズは、頂点シェーダを2.0a、ピクセルシェーダを2.0bに拡張した改良版SM2.0対応GPUとなり、2004年は二大巨頭の足並みが揃わず、ユーザーが混乱する年となった。SM2.0も"2.0"といいながらも、このようにATIとNVIDIAが独自に拡張してしまったことで細かいバージョン番号の不揃いも出てきてしまっている。
2004年は新バスインタフェース「PCI-Express」も提供され始めた年であり、グラフィックスカードのバスもそれまでのAGPからPCI-Express x16バスへの移行期を迎えることになる。2004年~2005年、ユーザーは、グラフィックスカードの買い替え時に、「SM2.0(ATI)か、SM3.0(NVIDIA)か」の選択と同時に「AGPかPCI-Expressか」という究極の選択をしなければならなかったのだ。
さて、NVIDIAは翌2005年には二世代目のSM3.0対応GPU「GeForce 7800」シリーズを投入。「2004年はSM2.0の熟成に徹すべき」を持論としていたATIも、2005年にはNVIDIAに遅れること約1年半、ATI初のSM3.0対応GPU「Radeon X1800」シリーズを投入する。ただし、Radeon X1800はSM3.0の基本フィーチャーは全て抑えていたものの、VTFには未対応であった。
続く2006年にはNVIDIAは第三世代のSM3.0対応GPU「GeForce 7900」シリーズを発表、これに対抗したATIはRadeon X1900シリーズを投入。両社、共に先代の型番に"+100"しただけのパフォーマンス向上版という位置付けの製品で、性能面以外で取り立てて目を惹く部分はなかった。なお、ATIはRadeon X1900シリーズでもVTFには未対応の姿勢を崩さず。
SM3.0対応GPUがATI、NVIDAの二大巨頭から出そろったはいいが、VTF機能のサポートについては両社の足並みが揃わず、SM3.0におけるVTF機能はマイナーな機能となってしまった。こうした根幹機能のサポートする/しないがユーザーやリアルタイム3Dグラフィックス技術の進化そのものに与えた影響は少なくなく、来るべきDirectX 10を迎えるにあたっての大きな課題となったようだ。(続く)
(トライゼット西川善司)