2008年以降~未来のDirectX「DirectX 10.1」と「DirectX 11"以降"」

DirectX 10がリリースされたばかりの2007年3月、サンフランシスコで開催されたゲーム開発者会議GDC 2007では、マイクロソフトからDirectX 10以降のロードマップについての言及がされた。

最初にDirectX 10のマイナーチェンジ版のDirectX 10.1がリリースされ、プログラマブルシェーダのバーションは4.1となる。

拡張される機能としては、WDDM2.1の本格サポートの他、マルチサンプル方式のアンチエイリアス(MSAA:Multi-Sampled Anti-Aliasing)のサンプル位置のプログラマブル化拡張、複数のレンダーターゲット間の個別ブレンディングメソッドのサポート、キューブマップテクスチャ配列のサポートといったSM4.0の機能拡充のような進化を遂げる。もちろん、機能拡張の足並みを揃えるため10.1という"0.1"の端数は含むものの、マイクロソフトがキッチリとしたバージョンコントロールを行うため、細かい亜流の登場はない。

DirectX 10.1/SM4.1は2008年3月提供予定のWindows Vista Service Pack1に含まれることになっており、SP1適用後利用可能になる。現時点ではDirectX 10.1/SM4.1対応GPUとしてはAMD(ATI)がRadeon HD 3000シリーズを、S3 GrqphicsはChrome 400シリーズを発表しているが、一方でNVIDIAはDirectX 10.1/SM4.1への対応は当面行わない方針を明らかにしており、DirectX 10.1/SM4.1がメジャーになるかどうかは分からない。結局、事実上、DirectX 10世代でもAMD(ATI)とNVIDIAの方針は決裂したということになる。

AMDのATI Radeon HD 3870。DirectX 10.1/SM4.1一番乗りのGPU

S3 GraphicsのChrome 440GTX。メインストリーム以下の格安DirectX 10.1/SM4.1対応GPUとして訴求される

そして、さらにその先、マイクロソフトはDirectX 11のリリースを予定している。

DirectX 11"以降"という表現を用い、どの機能がいつ実装されるかは未定としながらも、いくつかの大きな変革がもたらされることを明かにしている。

1つはよりGPUを汎用プロセッサ的に活用できる仕組みの導入だ。特に最初はメディアプロセッサ的なストリーミングプロセッサとして使いやすくする計画がなされているようだ。具体的には、GPUに送り込めるベクトルデータ構造をより柔軟に拡張したり、GPUで処理した出力データストリームを処理結果ごとにスイッチングして複数のバッファに振り分けるようにする仕組みを検討しているという。

また、3Dグラフィックス以外の科学技術計算用途に対応するために演算精度を現行の単精度から倍精度の64ビット浮動小数点(FP64)にも対応するという。機能的にそうした対応を行うことはもちろん、そうした汎用プロセッサとしての性能強化を行うために、GPU側にはメモリのランダムアクセス性能の強化やキャッシュシステムの改良も求められてくるはずだ。

さらに、DirectX 10/SM4.0のジオメトリシェーダに加えて、DirectX 11以降ではレンダリングパイプラインに新たな処理ステージが新設される。それが「テッセレーション」(Tessellation)のフェーズだ。テッセレーションは簡単に言えば、ポリゴンをあるメソッドに従って分割する仕組みのこと。既にDirectX 9/SM2.0時代からテッセレーションのサポートは行われていたが、特定のGPUを活用した場合に限定されていたために主流の機能ではなかった。しかし、DirectX 11以降ではこれが正式にスタンダードな機能として規定されるという。なお、テッセレーションを行うユニット、すなわち「テッセレータ」(Tessellator)は、最初はプログラマブルシェーダとしてではなく、固定機能ユニットとして提供されるという方針も示されている。ちなみに、現在、DirectX規格ではないが、Radeon HD 3000シリーズは固定機能としてのテッセレーションユニットを搭載している。これがDirectX 11で正式仕様となるかは不明だ。

テッセレータは固定ユニットとなるが、その代わり、ポリゴン分割を行う際の制御点をプログラマブルにコントロールする、「コントロール・ポイント・シェーダ」(Control Point Shader)という第四のプログラマブルシェーダが新設される。これは実質的にはテッセレータの働きを補助するプログラマブルシェーダともいうべきで、DirectX 11以降の、さらに未来のDirectX世代では統合される可能性がある。

DirectX 11以降のレンダリングパイプライン想像図

この他、DirectX 11以降では、リアルタイム3Dグラフィックスの積年の課題であった半透明オブジェクトの描画順序の呪縛からの解放を目指し「A-Buffer」の概念を何らかの形で導入していきたいと発表されている。

リアルタイム3Dグラフィックスでは半透明オブジェクトの描画は奥から手前に向かって描画しないと半透明描写が正しく再現されないため、描画前準備として3Dオブジェクトの並べ替えフェーズが必要であった。「A-Buffer」では、レンダリング時にシェーダで算出されたカラーの他に、輪郭のマスク情報や深度値情報などを一緒にフレームバッファに書き込んでいくことで、最終描画後にはつじつまが合うように映像を再構成する必要があるものの、レンダリング時の描画順序の依存性を完全排除できるというメリットがある。

もともとA-Bufferはジョージ・ルーカス率いるLucas Filmがオフラインレンダリング用に考案したテクノロジーであり、レンダリングが始まった時点ではGPU側からはその複雑性が予見できない仕組みだ。そのため、そのリアルタイム/ハードウェア実装はかなり複雑な仕組みになると予想される。しかし、このA-Bufferの仕組みは3Dアプリケーション開発者や3Dエンジン設計者にとっては、ソフトウェア側の負担を大幅に激減できるとあって、その実装にはかなりの期待が寄せられている。

DirectX 11の登場時期は全くの不明。なお、第4のプログラマブルシェーダが投入されることから考えてプログラマブルシェーダのバージョンは"1.0"上がり、SM5.0となると見て間違いないだろう。

A-Bufferの概念図。"A"にはanti-aliased(アンチエイリアス)、area-averaged(領域平均化)、accumulation(演算)といった複数の意味が込められている

(トライゼット西川善司)