「GPGPUのような『斬新だが混沌とした概念』の標準化に当たっては,ハードウェアメーカーの事情と,ソフトウェア開発者の意見とをまとめてうまくバランスを取り,かつ強いリーダーシップを発揮できる勢力が統括すべきだ」という意見は,GPGPUが立ち上がった頃からあった。そして,「強いリーダーシップを発揮できる勢力」の筆頭に挙げられてきたのが,Microsoftである。
ただ,Microsoftにもさまざまな事情があったようで,GPGPUをプログラミング言語の観点から研究をして「Visual Studio」のような開発ソフトウェアに統合しようとする動きがあったかと思えば,長きに亘(わた)わたって熟成が進められてきたマルチメディアコンポーネント「DirectX」に統合させようとする動きもあったりして,優柔不断というか,フットワークが非常に重かったのだ。
ちなみに前者は,というプロジェクトになった。これは,FF11 RMT.NET環境でC#を使ってGPGPUプログラミングを行えるようにしようとするものだったが,2007年夏を最後に,アップデートが途絶えている。
一方,2008年に,突如として具体的な話が浮上してきたのが,後者,DirectXに統合させる動きである。その名も「DirectX Compute Shader」。日本法人であるマイクロソフトの資料では,「DirectX演算シェーダ」とあるので,これが和名となるようだ。
DirectX Compute Shaderは,IXA RMT,3Dグラフィックスのレンダリングを司るDirect3Dに統合される形で実装され,Direct3D上のリソース(※テクスチャ,レンダーターゲットなど)はすべて透過的に取り扱える。つまり,3Dグラフィックスと関係の深い処理や,映像処理に特化したGPGPU処理を実装するのに,DirectX Compute Shaderは向いていることになる。
あくまで「Direct3DをGPGPUに対応させた」というスタイルなので,基本的な実行メカニズムは,
といった流れ。それでも,SPMD(Single Program,Multiple Data)のプログラミングモデルの実装に向いているのは確かなので,例えば群集シミュレーションのAI,大局的な物理シミュレーション処理,3Dグラフィックスのポストプロセスなどには向いているはずだ。
総じて,ゲーム向けGPGPUとしては必要十分なポテンシャルがある印象。おそらく,ビデオのトランスコード処理アクセラレーションにも対応させることができるだろう。
“DirectX縛り”があるため,CUDAやATI Streamほどにはソフトウェア設計の自由度がなく,汎用性もやや限定される。しかしその代わり,Direct3Dのリソースを透過的に取り扱えるというメリットがある。ここが重要なポイントだ。
それは,この仕組みにより,Direct3Dでレンダリングした3Dグラフィックスの後処理をDirectX Compute Shaderで行ったり,あるいはDirectX Compute Shaderで行ったシミュレーション結果をDirect3Dのレンダリング素材として利用したりすることができるからである。もちろん,3Dグラフィックス処理とGPGPU処理の双方で取り扱うデータを共有しているので,面倒なバッファ間のデータ転送は不要。そのため,「3Dグラフィックスパイプラインで用いているアニメーション処理適用済みの3Dモデルを,DirectX Compute Shaderで実装している物理シミュレーションの衝突判定用に流用したりする」なんてことが可能となる。
また,「3Dグラフィックス処理の新しいメカニズムの実装にも,DirectX Compute Shaderが活用できるのではないか」,という期待もなされている。
その筆頭事例に挙げられているのが,「A-Buffer」の実装だ。A-Bufferとは,映画向けCGなど,オフラインレンダリングの世界ではすでに実用化されている技術で,半透明オブジェクトの描画に当たって順不同実行を容認する仕組みのこと。かねてからGPUへの実装が検討されていたが,専用ハードウェアロジックではなく,DirectX Compute Shaderの活用により,GPGPUソフトウェアの形で実装できるのではないかという,議論がなされてきている。
DirectX Compute Shaderを使えば,3Dグラフィックスとしてレンダリングした複数の映像フレームを,適応型の処理によって1フレームに合成するといったことも実現できるからだ。
DirectX Compute Shaderは,現状のリアルタイム3Dグラフィックスレンダリングパイプラインを拡張する意味合いの目的でも,期待されているのである。
DirectX 11は,2009年に登場する見込みであり,対応GPUも2009年中に出てくると予想されている,戦国IXA RMT。Windows 7だけでなく,Windows Vistaにも提供され,さらにDirectX 10世代のハードウェアでも,DirectX Compute Shaderを利用できる仕組み(=リファイン版DirectX 10)が提供される予定だ。つまり,2009年(の後半)以降,DirectX Compute Shaderは,多くのPCユーザーが利用できるようになる見込みなのである。
NVIDIA,AMD両GPUメーカーもDirectX Compute Shaderへの対応姿勢を見せているため,GeForceやATI Radeonといった区別なく,DirectX Compute ShaderベースのGPGPU動作はサポートされることになる。単一のGPGPUソフトウェアを,メーカー不問のGPU環境下で透過的に動作できるようになるのだ。ゲーム向けGPGPUソリューションは「NVIDIAかAMDか」の踏み絵を迫られていたが,DirectX Compute Shaderによって,ゲームデベロッパが一気に対応姿勢を見せてくることを期待できる。
関連トピック記事: