3Dグラフィックスに関係する分野の初学者向けに「3Dグラフィックスの歴史」を解説する本連載。第1回では、ゲームグラフィックスがポリゴンベースの3Dグラフィックスへと移行していく流れと、グラフィックスプロセッサ(GPU: Graphics Processor Unit)と呼ばれるようになった半導体チップの出現について触れた。第2回となる今回は、このGPUの急成長の事実上の立役者を務めたDirectXにスポットをあててみることにしたい。
2006年にマイクロソフトより発売されたXbox 360用ゲームソフト『Gears of War』(開発はEPIC GAMES)より。リアルタイム3Dゲームグラフィックスはプログラマブルシェーダ技術によって、その表現力はここまで進化した
前回までの復習と今回のテーマについて
前回までを簡潔にまとめるとこのような感じになる。
・ゲームグラフィックスに3DCG技術の導入が盛んになる
・3DCG技術を司るプロセッサとして「GPU」が誕生する
・複数のプロセッサメーカーがGPUを独自に好き勝手に機能強化し、互換性の面で混沌となる
・「新たな3Dグラフィックス表現」をGPUの機能としてではなく「GPUで動かせるソフトウェアの形態」として実装していく「プログラマブルシェーダ技術」が誕生する
2000年を迎えたタイミングで、すべてのGPUはプログラマブルシェーダ技術の導入に舵を切ることとなり、以降は、プログラマブルシェーダ技術がGPUにとっての技術基盤となっていく。言い換えれば、これ以降の「GPUの進化」は、ほぼ「プログラマブルシェーダ技術の進化」と等価の事象となったのである。
このことがゲーム業界を大きく動かしただけでなく、半導体業界にも大きな影響を与えた。なお、いずれこの連載で触れることになるとは思うが、この「プログラマブルシェーダ技術の進化」は、結果的に、昨今で何かと話題の「人工知能技術の進化」にも繋がっていくのである。
今回は「プログラマブルシェーダ技術の進化」について焦点を当てた回となるが、漠然と連続的に解説しても多くの読者がピンとこないと思うので、現在のプログラマブルシェーダ技術と非常に密接な関わりのあるマイクロソフトのDirectXと連動させて見ていくことにする。
DirectXの台頭とGPUの誕生
DirectXは、前回でも触れているが、もう一度、簡単に振り返るとしよう。1995年、Windows95が発売された際、PC環境において3Dグラフィックスを実現するためのサブシステムとして「DirectX」(正確にはDirectXに含まれるDirect3D)が提供される。当時のWindows PC向けのグラフィックスハードウェア(当時はまだGPUという呼び名はなかった時代)はかなり機能が低く、さらにDirectXの完成度も今一歩だったために、当時のゲーム機(プレイステーションやセガサターンなど)の表現力には遠く及ばなかった。
しかし、以降、PC業界が一丸となってPCグラフィックスの機能強化へ取り組み、急激に進化が進むことになる。
最初期のDirectXは、(PC)ゲーム業界からの評価は決して高くはなかった。画面は1996年にマイクロソフトがWindows環境向けに発売した『Monster Truck Madness』(開発はTerminal Reality社)のもの。3dfx社が展開していたAPI「Glide」全盛期にDirectX5ベースで開発された希有なタイトルの一例
1998年には当時までに発表されたさまざまなリアルタイム3Dグラフィックス機能を取り込んだDirectX6が発表され、1999年にはその後のPCグラフィックスの進化の方向性を決定づけたDirectX7も発表される。
どういうことかというと、DirectX6までは3Dグラフィックス処理ハードウェアはポリゴンとピクセルの対応付けを計算したり(ラスタライズ処理)、画像テクスチャを貼り付ける処理をしたり……といったピクセル単位の処理のみを担当していた。つまり、それまでは、頂点単位(ポリゴン単位)の幾何学的な座標変換処理や光源処理はCPUが担当していたのだ。
ところが、DirectX7では、それまでCPUが担当していたそうした処理系をも3Dグラフィックス処理ハードウェアが担当できるようになったのだ。
この、「CPUの手を借りず“ハードウェア”で頂点単位の座標変換(Transform)と光源処理(Lighting)を処理できる」ようになったDirectX7に対応したグラフィックスハードウェアの仕組みは、当時は「ハードウェアT&L」(T: Transform/L: Lighting)と呼ばれてもてはやされた。現在は死語となった消滅したキーワードである。
ちなみに、このDirectX7の誕生後から「グラフィックス処理全般を担当するプロセッサ」を「GPU(Graphics Processing Unit)」と呼ぶようになった。ちなみにGPUという呼び名は、音韻と字面をCPU(Central Processing Unit)になぞらえたものだ。
リアルタイム3Dグラフィックス技術は、それまで家庭用ゲーム機のほうが先行していたが、DirectX7時代に突入してからは、Windows PCが逆転した構図へとなっていく。これは、家庭用ゲーム機が、その機体の普及が最優先される戦略的制約もあって、約5から7年のサイクルでしかハードウェアの仕様変更ができないことに起因している。そう、PCにはそうした縛りがなく、常に最新技術を投入できることもあり、家庭用ゲーム機よりも早いペースで進化が行えたわけである。また、当時、家庭用ゲーム機のシェア戦争は3社程度のメーカー間で争われていたのに対し、PC向けGPUは10社近いメーカー間で争われていたため、激しい競争原理が働いたことも影響していたと考えられる。とはいえ、続くDirectX8時代では大きな淘汰の波が押し寄せ、GPUメーカーも数社に絞られていくことになるのだが……。
DirectX8登場とともに始まったプログラマブルシェーダ時代
DirectXはマイクロソフトのWindows向けのAPIではあるが、「鶏が先か、卵が先か」に似たような理屈で、これ以降、「DirectXが先か、新GPU誕生が先か」のような関係性で、GPUはDirectXとともに進化発展を遂げていくこととなる。
こうなった大きな理由は、マイクロソフトのWindowsプラットフォームが当時の普及型コンピュータ/ワークステーションの業界標準プラットフォームとなっていたこと、2001年にマイクロソフトが立ち上げた「Xbox」というゲームプラットフォームが、DirectXベースで成り立っていたことなどが強く影響している。また、マイクロソフトの対抗馬といえたAppleのmacOS系プラットフォームは、この当時、3DグラフィックスAPIとして比較的進化ペースの遅い、ライセンスフリーでオープンスタンダードな「OpenGL」を採用していたため、GPU技術に関してはリーダーシップをとるまでには至っていなかった。
なお、Appleは2018年より、macOS系プラットフォームにおいてOpenGLと決別することを決定し、Apple独自開発の「Metal」を標準3DグラフィックスAPIとしている。そして2000年、DirectX8が発表となる。これこそが「プログラマブルシェーダ技術に対応した最初のDirectX」になる。
DirectX8世代のGPUが採用した「プログラマブルシェーダアーキテクチャ」は、ジオメトリ(幾何学的な)処理を担当する「頂点シェーダ」(前出のハードウェアT&Lの進化版に相当)と、ピクセル単位の陰影処理やテクスチャの適用、実際の描画を行う「ピクセルシェーダ」の2シェーダ構成となっていた。
なお、このDirectX8時代には、NVIDIAはGeforce3、ATIはRADEON 8500をリリースしている。DirectX8のリリースから1年後の2001年末にマイクロソフトが発売した家庭用ゲーム機の初代Xboxは、まさにこのDirectX8採用機であり、そのGPUにはNVIDIA Geforce3のカスタム版が搭載されていた。
世界初の民生向けプログラマブルシェーダアーキテクチャ採用のGPU「GeForce3」。マイクロソフトが2001年に発売した初代XboxのGPUは、このGeForce 3のカスタム版であった
このDirectX8登場のタイミングで、DirectXの世代番号とは別にプログラマブルシェーダのバージョン番号が規定されるようになっている。例えば、DirectX8時代の初代プログラマブルシェーダ仕様はShader Model(SM)1.xと規定された(xの部分はマイナーチェンジ版を表す数値を意味する)。
DirectX9からDirectX11までの進化
業界に革新をもたらしたプログラマブルシェーダ技術ではあったが、DirectX8時代のSM1.xは、使用できる命令の組み合わせやシェーダプログラムの長さに制限が多く、使い勝手があまり良くはなかった。2002年には、そうした制限を低減させたSM2.0が発表され、同時にDirectX9がリリースされることとなる。
2004年には「シェーダプログラムの長さ制限」をさらに低減し、頂点シェーダとピクセルシェーダの命令セットをほぼ共通化してシェーダプログラムのつくりやすさを劇的に改善したSM3.0が発表される。このSM3.0の登場に連動してDirectX10がリリースされると予測されていたが、実際にはそうならず、なぜか「新版DirectX9」の意をくんだDirectX9.0cとしてリリースされた。
世界初のSM2.0対応GPUはATI(現AMD)からリリースされた「RADEON 9700」シリーズだった。後の9800、下位の「9600/9500」シリーズも当時はかなりの人気を博したGPU製品となった
世界初のSM3.0対応GPUはNVIDIAからリリースされた「GeForce 6800」シリーズだった。この頃から、GPUとCPUを接続するバスシステムが旧来のAGP(Accelerated Graphics Port)から、現在も広く活用されているPCI-Expressへと切り替わることとなった
翌2005年にはマイクロソフトがXbox360を発売。続く2006年にはソニーがPlayStation® 3を発売した。これらは、いずれもSM3.0世代(すなわちDirectX9.0c世代)のプログラマブルシェーダアーキテクチャを採用したGPUを搭載していたわけである。
2000年のDirectX8以降、長らく頂点シェーダとピクセルシェーダの2段構成だったプログラマブルシェーダアーキテクチャは、ついに2007年に刷新されることとなる。それが、ポリゴンの増減を自在に行える「ジオメトリシェーダ」をパイプラインに導入したSM4.0である。マイクロソフトは、このSM4.0に対応したDirectX10を2007年にリリース。5年にわたった長いDirectX9時代が終焉を迎えることとなったのであった。ちなみに、DirectX10世代GPUを搭載した家庭用ゲーム機としては、任天堂が2012年に発売したWii Uが該当する。
2005年にマイクロソフトから発売された「Xbox360」は、SM3.0世代のATI(当時)のRADEON系GPUを搭載していた
2006年にソニー・コンピュータエンタテインメント(現ソニー・インタラクティブエンタテインメント)から発売された家庭用ゲーム機「PlayStation® 3」は、SM3.0世代の「NVIDIA GeForce 7800」シリーズベースのGPUを搭載していた
2012年に任天堂から発売された家庭用ゲーム機「Wii U」は、SM4.0世代のAMD RADEON HD 4000系のGPUを搭載していた
2009年には、ポリゴンを自在に分割したり変移させたりすることができる「テッセレーションステージ」がパイプラインに追加されたSM5.0が発表される。これが同年リリースされたDirectX11で使用可能となるのであった。DirectX11世代GPUを搭載した家庭用ゲーム機としては、北米で2013年(日本では2014年)に発売となったソニーPlayStation® 4、マイクロソフトXbox Oneが挙げられる。
2013年(日本は2014年)にマイクロソフトから発売された家庭用ゲーム機「Xbox One」は、SM5.0世代のAMD RADEON HD 7000系GPUを搭載していた
2013年(日本は2014年)にソニー・コンピュータエンタテインメント(当時)から発売された家庭用ゲーム機「PlayStation® 4」は、SM5.0世代のAMD RADEON HD 7000系GPUを搭載していた。家庭用ゲーム機の歴史において、競合機が互いに同世代・同系のGPUを搭載することになったのはこの時が初めてのことであった
結果的にGPU開発企業を淘汰することとなった
プログラマブルシェーダ技術
プログラマブルシェーダアーキテクチャの実現はGPUメーカーに高い技術力を要求した。具体的には、高度で複雑な並列処理を前提としたシェーダプログラムを高速に実行するには、とてつもなく高い開発設計能力が求められたのだ。このため、DirectX8登場後からDirectX9時代の間に、最初期のリアルタイム3Dグラフィックスを支えてきた多くの半導体チップメーカーがGPU開発事業から撤退するようになる。
PCグラフィックス黎明期を支えた「Voodoo」シリーズを送り出した3dfx社は2000年にNVIDIAに買収された。同じく高性能GPUをリリースしていたNumber Nine社も1999年に倒産している。Windows 9x時代、日本で人気の高かった「GPUMillennium」シリーズをリリースしていたMATROX社も、最後発でDirectX8世代GPU「Parhelia」シリーズを2002年に投入したのを最後にGPU開発からは撤退した。1990年代、「Verite V1000/V2000」シリーズを展開していたRendition社も1998年にMicron Technology社に買収されるも、その後、後継の製品をリリースできずフェードアウトした。
プロフェッショナル向けワークステーション用GPUを開発していた名門3Dlabs社もWindows 9x時代に民生向け「Permedia」シリーズを投入するものの健闘虚しく、2002年にシンガポールのCreative Technology社に買収され、その後、2006年にはGPU事業から撤退した。台湾のチップセットメーカーSiS社からスピンアウトしてGPU専門メーカーとして新設されたXGI社も、2006年、新GPUの開発から撤退している。
1990年代中後期まではATI(当時)やNVIDIAに勝るとも劣らぬ人気を誇ったGPU(当時はグラフィックスハードウェア)製品を数多く送り出していたS3は、2000年に台湾VIA Technologies社に吸収され、GPU開発部門はS3 Graphicsと改名されるが、製品リリース頻度は鈍化。2003年から新アーキテクチャの「DeltaChrome」シリーズを展開するも、市場からは高い評価が得られず、業界からフェードアウトした。
VIA Technologies傘下となったS3 Graphicsが2008年に発表したDeltaChrome系の製品「Chrome 440 GTX」
こうした淘汰の結果、2001年以降、GPUメーカーの二大巨頭であったNVIDIAとATI(のちにAMDへ統合される)の激しいGPU戦争が目立つようになる。最近では、この2社以外でPC向け高性能GPUを開発しているのはIntelくらいである。なお、スマートフォン向けなどをはじめとした組み込み機器向けGPUについては、ARM、Qualcomm、Appleなどが今も開発を続けている。
プログラマブルシェーダ技術は、近代GPUアーキテクチャの基盤技術となり、GPU製品の進化の方向性を決定づけたことは間違いないが、同時に、半導体メーカーに「GPUをつくり続けるか、撤退するか」を決断させる大きなきっかけともなったのであった。
次回以降は、DirectX11以降のDirectXの進化と、そしてプログラマブルシェーダ技術が人工知能技術にどう貢献していったのか、などに触れていくこととしたい。