ニュース
[WinHEC 2006#04]次の次のDirectXはDirectX 10.1だ!
2006/05/26 23:59
 Windows Vistaに搭載されるDirectXはDirectX 10であり,これがWindows Vista専用に供給されるものであることは,すでに前回のレポートで述べたとおりだが,WinHEC 2006では,“その次”のバージョンである「DirectX 10.1」(Direct3D 10.1)についての情報開示も行われた。
 セッションではDirectXとDirect3Dを同義で使用していたため,特別な断りがない限りは本稿でもそのように記述することをお断りしたうえで,さっそく紹介していきたい。

■Direct3D 10.1はDirect3D 10の上位互換

Direct3D 10.1はDirect3D 10の上位互換
 Direct3D 10.1は「Direct3D 10の仕様をすべて含む上位版」という位置づけで,時期は明らかになっていないものの,いずれWindows Vista環境に提供されることになる。
 投入タイミングはDiret3D 10.1に対応した,次世代のグラフィックスチップの登場とほぼ同時点になる見込み。これは,これまでWindows XP環境下においてDirectX 9.0,9.0b,9.0cが提供されてきた経緯とよく似ている。

 ただし,DirectX 9世代では,ATI Technologies(以下ATI)がRadeon 9700を投入したときにDirectX 9.0,NVIDIAがGeForce FXを投入したときに9.0b,GeForce 6シリーズのタイミングで9.0cがリリースされてきたが,「仕様の一貫性」を最重要視するDirectX 10では,もう少し,足並みを揃えた形でのアップデートになるはずだ。ある時期にDirect3D 10.1の仕様が発表され,その対応ハードウェアが,ATIやNVIDIAといった主要ベンダーが(多少の時期のズレがあるにせよ)リリースされてくるという形態になるだろう。

 前回のレポートを読んでくれた読者の頭には,疑問が一つ浮上すると思う。
 「DirectX 10では,その仕様の一貫性が保証され,Capsテストが不要になるというのがMicrosoftの主張だった。だが,DirectX 10.1が出てくれば,いくら『DirectX 10の上位互換』であっても,システムがDirectX 10.1対応なのかDirectX 10対応なのかを判断する必要があるのではないか?」

 その指摘は鋭い。なぜなら“10.1か10か”というバージョンチェックは必要になってくるからだ。
 とはいえ,逆にいえば,そのシステムがDirectX 10.1対応なのかDirectX 10対応なのかを調べるだけで済むわけで,DirectX 9世代のように,使えるテクスチャフォーマットの組み合わせを調べたりといった,使いたい機能一つ一つの有効性をチェックする必要はないため,開発者の負担は最小限に留まる。

■Direct3D 10.1で変わるもの

WDDM 2.1とDirect3D 10.1は関係が深い
 Direct3D 10.1ではドライバモデルも大きく変わる。ドライバモデルの詳細については,回を改めてレポートするが,Direct3D 10.1では,グラフィックスチップの完全なる仮想化が実現され,その仮想化した技術がハードウェア的に実装されるようになる。
 もっとも,Windows Vista環境におけるドライバモデルは,当初「WDDM 2.0」(Windows Display Driver Model 2.0),あるいは「WDM 1.0」(Windows Driver Model 1.0)となり,簡単にいえば,前者がDirectX 10世代,後者がDirectX 9世代のグラフィックスチップによって利用される。このとき重要なのは,この世代において,グラフィックスチップの仮想化は,CPUにかなりの負担をかけながらの実装形式となることだ。
 これに対してDirect3D 10.1世代のGPUでは,グラフィックスチップの仮想化技術を支援するための専用ハードウェアが実装されるようになる。そして,この仮想化技術を有効活用するドライバモデルとして,「WDDM 2.1」(Windows Display Driver Model 2.1)が用意される予定となっている。

 「グラフィックスチップの仮想化ってなんだ?」と思った読者も少なくはないだろう。グラフィックスチップの仮想化とは,Windows Vista環境下のすべてのアプリケーションがグラフィックスチップを活用し,あたかも「グラフィックスチップが当該アプリケーション専用に動いているように振る舞ってくれる」ようにするものだ。

 もう少し突っ込んで説明しよう。現在のOSにおいて,CPUやメモリは仮想化されている。各アプリケーションは,CPUやメモリが“自分専用”に動いているものとして動作しており,実際には「CPUやメモリといったリソースを,OS側が当該アプリケーションに一定時間貸し与える」という格好になっている。グラフィックスチップの仮想化とは,こうした概念をグラフィックスチップにも適用しようというものなのである。

 例えば,あるエンコードソフトで,グラフィックスチップのシェーダユニットやビデオプロセッサエンジンを活用してビデオエンコード処理を行いつつ,グラフィックスチップのビデオ再生支援機能を用いつつ別のビデオを見る,などといった場合,いずれのアプリケーションでも最大のパフォーマンスを得るためには,グラフィックスチップとグラフィックスメモリを,双方アプリケーションで均等に活用できなければならない。こうしたグラフィックスチップのマルチタスキング,グラフィックスメモリの仮想メモリ化をスムースに行えるようにするためには,グラフィックスチップ側の対応と,仮想化を実現するドライバが必須になる。そして後者は,DirectX 10.1で提供されるというわけだ。

いわばプログラマブルアンチエイリアシング処理を実装しようというわけだ
 また,アンチエイリアシング処理におけるプログラマビリティを,Direct3D 10.1で導入しようとする動きがあることも,セッションでは述べられた。これは,Direct3D 10シリーズの最重要課題である「仕様の一貫性」に関連した要素だ。

 現在のグラフィックスチップにおけるアンチエイリアシング処理は,その映像フレームの見栄えを最終的に決定づける重要要素であるにも関わらず,その処理はグラフィックスチップに一任されてしまっており,グラフィックスプログラマやデザイナが介入できない,実質的にブラックボックスとなっていた。描画フレームをアートとして考えた場合,アンチエイリアシング処理は,いわばアーティストの手の及ばない領域だったのである。
 要は,このアンチエイリアシング処理をプログラマブル(というかコンフィギュアラブル?)に拡張して,グラフィックスエンジン側で制御できる手段をDirect3D 10.1に導入しようというわけだ。

 制御できる項目としては,マルチサンプリング アンチエイリアシングにするのか,スーパーサンプリング アンチエイリアシングにするのか,はたまたアンチエイリアシング処理に用いるサブピクセルの取り出しパターンはどうするのか,「どの領域をアンチエイリアシング処理すべきか/すべきでないのか」というマスクパターンの導入などが挙げられている。

■Direct3D 10.1で導入される新要素は?

グラフィックスチップの進化はこれからも続く
 このほか,まだ予定というか,構想にすぎないが,現在は4点近傍(ある点に対して上下左右の四つの点)に限定されているシャドウフィルタリングの発展仕様の導入,現在は16ビット浮動小数点形式(FP16)テクスチャまでしかサポートされていないテクスチャフィルタリングの32ビット浮動小数点形式(FP32)までの拡張,レンダーターゲットごとに独立したブレンドモードを実現できるようにする……といったことの,DirectX 10.1における導入が考えられている。

 また,グラフィックスチップの仮想化が完成され,GPGPU(グラフィックスチップにグラフィックス処理以外の汎用演算を行わせようとするアイデア)の実現において,グラフィックスチップがコプロセッサ的に活用される機会が増えるのであれば,天文学や数値計算などの科学技術計算分野に利用される機会も増えてくるだろう。そのとき,現状のように最大演算精度がFP32だと,この分野で用いるには精度が足りない。そこで倍精度のFP64サポートも計画されているとのことだ。

 さらに,グラフィックスチップそのものではなく,Direct3D 10.1コアに関しても,現在のCPUトレンドであるマルチコアを有効活用するようなアーキテクチャを導入する計画もあるという。Microsoftによれば「主にGPGPU的なグラフィックスチップ活用面で起こりうる,CPUとグラフィックスチップ間のデータ転送を効率化したい」とのことだが,具体的に何をするのかは見えてこなかった。グラフィックスチップ用のドライバもマルチコア対応が意識しはじめているが,いま一つその効果を体感できない。これは,現状では根幹となるDirect3Dコアがそもそもマルチコアに対応していないため,その下層のグラフィックスドライバがいくらマルチコア対応をしたところで大した効果を得られないためとされているが,このあたりは,DirectX 10.1コアがマルチコアCPUに対応すると,状況が変わってくるかもしれない。

 なお,シェーダ的な拡張面において,第4のプログラマブルシェーダ「テッセレータ」(ポリゴン分割処理ユニット)の導入がDirect3D 10で見送られたことは前回のレポートで述べたが,DirectX 10.1のセッションにおいても,特別に言及はされなかった。

2007年にDirect3D 10が実動開始するとなると,Direct3D 10.1の登場は,順調に推移しても2008年以降になるだろう


■Windows Vistaでグラフィックスチップの仮想化を急ぐMicrosoft

Direct3D 10に対応したグラフィックスチップはまだないが,エミュレーションで同等の機能を実現するリファレンスラスタライザは利用できるようになっている。Windows Vista β2のユーザーで,興味のある人はダウンロードして試してみるといいだろう
 今回,DirectX 10.1に関するセッションに出席して感じたのは,Direct3D 10.1に対し,Microsoftは,新しいグラフィックスフィーチャーの採用よりも,グラフィックスチップやグラフィックスメモリ仮想化の,完全なる実現を急いでいるということだ。
 Windows Vistaでは,ユーザーインタフェースが3D化されてきている。これは言い換えると,すべてのアプリケーションが3Dグラフィックスを使うようになるため,3D機能をゲームが独占できなくなるということでもある。
 現在のPCシステムにおいて,グラフィックスチップは演算プロセッサとしてあまりにも高性能であり,重要度が高く,それでいてその振る舞いは独立性が高くて,扱いにくい。CPUがマルチコア化しても,PCシステム全体の性能向上にはあまり貢献できていない今,グラフィックスチップの徹底活用,すなわちグラフィックスチップの仮想化こそが最重要テーマだと,Microsoftは考えているのだろう。

David Blythe氏(Software Architect,Windows Graphics,Microsoft)
 また,セッションでは,CrossFireやNVIDIA SLIといったマルチグラフィックスカードソリューションの実現手法が,グラフィックスチップベンダーごとに異なる点も指摘された。MicrosoftのWindowsグラフィックス ソフトウェアアーキテクトのDavid Blythe氏は,この一般化も重要課題であると述べる。せっかくグラフィックスチップが複数あるのに,ただ一つのフレームを高速に描画したり,一つのアプリケーション(=3Dゲーム)の映像を高速に描画するためだけに活用されるのは,あまりにももったいないというわけだ。
 例えば,グラフィックスチップやグラフィックスメモリの仮想化が実現されれば,グラフィックスカードを差せば差すほど,ゲームだけでなく,描画全般やエンコード,映像処理のパフォーマンスを向上できるようになるかもしれない。もっといえば,異なるメーカーのグラフィックスチップ(=グラフィックスカード)を,複数用意したケースでもリニアなパフォーマンス向上が得られるようになるかもしれない。グラフィックスチップとグラフィックスメモリの仮想化は,次のDirectXの最大の使命なのである。

 裏を返せば,Direct3D 10.1世代のグラフィックスチップは,この仮想化に多大なリソースを割いた結果,グラフィックス機能面での進化はあまり見られなくなるという可能性もあるわけだが。(トライゼット 西川善司)


Windows Vista
■開発元:Microsoft
■発売元:マイクロソフト
■発売日:2007/01/30
■価格:エディション,入手方法による

【この記事へのリンクはこちら】

http://www.4gamer.net/news/history/2006.05/20060527001140detail.html