ニュース
[CEDEC 2006#15]Windows Vistaに見る新しいグラフィックスの可能性
2006/09/04 17:35
 CEDEC 2006の3日め,大トリの一つとして用意されていたのが,Microsoft日本法人,マイクロソフトのテクニカル エバンジェリストである川西裕幸氏による「Windows Vistaの新しいグラフィックステクノロジ―Direct3D 10とWindows Presentation Foundation」という講演だ。

3Dグラフィックスを追いかけている人には,もはやお馴染みの川西裕幸氏
 DirectX 10をテーマにした講演は,CEDEC 2006でも多く用意されていた。4GamerでもATI TechnologiesのセッションNVIDIAのセッションをレポートしているが,川西氏のセッションにおける“DirectX 10パート”も,基本的にはそれらを総括するもので,取り立てて目新しい情報はなかったといっていいだろう。
 ただ,セッション冒頭で川西氏が「誤解のないように」と念押しした以下の3点は,ゲーマーに関わるものなので触れておこう。いずれも,4GamerのDirectX 10関連記事を丹念に読んでいれば自明だが,「初耳」という読者もいるはずだからである。

●DirectX 10を利用するにはDirectX 10を
●ハードウェアでサポートするGPUが必須

 Windows VistaはDirectX 10をサポートするが,DirectX 10を利用するためには,ハードウェアで対応するGPU(グラフィックスチップ)が必須。Windows Vistaをインストールしても,ハードウェアの要件を満たさない限りDirectX 10は使えないのだ。

●Windows VistaのAeroはDirectX 9 Ex上で動いている
 Windows Vistaの新しいユーザーインタフェース(UI≒デスクトップ)であるAeroは,DirectX 9 ExというWindows Vista上のDirectX 9互換レイヤー上で動いている。AeroがDirectX 10を使用しているかのような(またはAeroのルックスがDirectX 10のおかげで実現できているかのような)記事をたまに見かけるが,Aeroの動作に,DirectX 10はまったく関係ない。また,DirectX 9 ExによりDirectX 9互換となるため,DirectX 9.0c以前のゲームはWindows Vista上で問題なく動作する。

●DirectX 10はWindows Vista(と将来のWindows)にしか提供されない
 従来はWindows 2000など古いWindowsに対しても提供されてきたDirectXだが,DirectX 10はWindows Vista以降にしか提供されない。Windows XPを利用している限り,DirectX 10対応ゲームはプレイできないのだ。これは,DirectX 10がWindows Vistaの新しいドライバモデル「WDDM」(Windows Display Driver Model)に依存しているためである。

■DirectX 10で実現されるもの

 さて,川西氏の講演で注目すべきは,特徴的なデモ(のムービー)を使ってDirectX 10の効用が語られた点だ。DirectX 10対応のGPUがまだ発表されていないので仕方ないとはいえ,実動デモではなくムービーというのがやや残念だったが,主立ったムービーを紹介しつつ,使用されている技術を簡単に紹介していこう。

●GPUによるモーションブラー
モーションブラーのデモ。これは,GPUによって処理されているという
 速い動きをするキャラクターなどに残像を付けるモーションブラーは,現在のゲームにも見られるが,ブラーを実現するためには,CPU側にかなりの負担がかかっていた。これに対し,DirectX 10ではGPU側でブラーを生成できる。

 このムービーでは中央で武装したキャラクターが回転しており,(少々分かりにくいかもしれないが)ブラーがかかっている。このブラーは,ジオメトリシェーダでキャラクターより一回り大きなポリゴンを生成して動かすことで実現しているとのこと。GPU側がブラーを作ってくれるので,CPU側でブラーの面倒を見る必要がなくなるというわけだ。

●GPUによる表面の凹凸
ジオメトリシェーダで表現される,カメレオンの凸凹した表皮
 表面の凹凸は,バンプマッピングと呼ばれる陰影処理で実現されることが多いが,より大きな凹凸を表現するのならポリゴンで描くほうが自然だ。

 右に示したデモにおけるカメレオンの表皮にある凹凸は,ジオメトリシェーダユニットで生成したもの。凹凸のないモデルをGPUに渡し,ジオメトリシェーダで凹凸のポリゴンを追加することにより描画しているのである。結果,リアルな凹凸を表示しつつ,CPUがグラフィックスパイプラインに送り込むデータ量を大きく削減できる。

●インスタンシングの応用例
このムービーでは木が生えた不思議な浮島がいくつも漂っているが,実はグラフィックスパイプラインに送られているモデルは一つだけ。残る浮島はインスタンシングによって複製されているのだ
 DirectX 10ではモデルのインスタンシングがサポートされる。「インスタンシング」(Instancing)というのはプログラム用語で,少々分かりにくいが,ここでは「一つのデータから複数の3Dを生成する」くらいの意味で捉えるといい。

 例えば,大量の蟻がウジャウジャと動くシーンを想像してみよう。DirectX 9以前では,描画対象となる蟻のデータすべてをグラフィックスパイプラインへ流し込む必要があり,CPUやバスに大きな負荷がかかる。これに対して,DirectX 10なら,1匹の蟻のデータを流し込んで,あとはインスタンシングで複製すれば,目的のシーンを作り出せる。これにより,グラフィックスパイプラインに渡すデータ量を大きく削減でき,結果として,CPUやバスの負荷を下げられるのだ。

 ……講演ではそのほかにもいくつかムービーが紹介されたものの,DirectX 9時代との違いが分かりにくいものだったので,ここでは割愛したい。いずれにせよ,DirectX 10ではGPUの役割が大きくなり,CPU負荷を削減できる方向の改善がなされていることが分かると思う。
 またそれ以外にも,DirectX 9にあった大きな“面倒”がDirectX 10では解決している。DirectX 9では,「ピクセルシェーダが持つ○○の機能を利用できるかどうか」などを調べて,利用できないなら利用できないなりに,プログラム側で対処しなければならなかった(全然動きません,という対処の仕方もあるわけだが)。これに対してDirectX 10ではあらゆるGPUの能力は同じと保証されている――性能差はもちろんあるが,“できること”には違いがないし,あってはならない――など,プログラマーが幸せになる改善が多数ある。

 さらに,DirectX 10はXbox 360とのクロスプラットフォーム開発をしやすくなるよう設計されており,Xbox 360とコードの共通化が可能だ。このため,PCとXbox 360に対応したDirectX 10世代のゲームというのは,これまでのDirectXの歴史からすると,早めに出揃うことになるだろう。まあ,これは取りも直さず,Windows Vistaの導入とハードウェアの買い換えを迫られるわけで,ゲーマーにとっては頭の痛い話でもあるわけだが。

■ゲームに役立つかもしれない(?)
■Windows Presentation Foundation


 以上がDirectX 10に関する話だったが,川西氏のセッションではもう一つ,「Windows Presentation Foundation」(以下WPF)も取り上げられた。WPFはUIを作るための枠組み(フレームワーク)で,ゲームと直接の関係はないが,まったく無関係ともいえないため,簡単に紹介しておこう。

 WPFについて一言でまとめるなら,「2Dや3D,ムービーなどのオブジェクト,メニューボタンなどのUIを同じ土台の上で扱えるようにしよう」というものだ。従来は,ソフトウェアで3Dを描く場合はそのためのコードを,2Dのムービーを見せるなら,またそのためのコードを……という具合で,バラバラに開発していく必要があった。2Dと3Dのユーザーインタフェースなどが混在したアプリケーションを作るのは,それなりに難しかったわけだ。

 WPFは,これらを容易に(そして同時に)扱えるようにする新しいフレームワークである。もっといえば,XML(Extensible Markup Language)という,HTMLに似た言語を記述するだけで,2Dや3DのUIが作れてしまう。
 では,どんなことができるのか? 「WPFはXMLで記述する以上,WebサイトでもWPFベースのアプリケーションが利用できる」として川西氏は,下に挙げるような架空のWebサイトを使った説明を行った。

例では,スポーツウェアの通販サイトが示された。左の画面はトップページで,中央ではムービーが流れ,さらに画面の下ではキューブが回転している。この状態でキューブをクリックすると,右の画面のように,キューブが拡大し,商品の詳細説明が行われる。ジャケットは3Dで描画されており,回転して閲覧可能。もちろん,ここから購入することもできる,といった感じだ


 これまでのWebページでは,何かボタンを押すと,別のページが開いていったわけだが,WPFを利用すると,ムービーや3Dグラフィックスなどが絡み合ったコンテンツを作成できる。こうしたコンテンツのデザイン面が,XML,正確を期せばXMLをベースにした「XAML」(eXtensible Application Markup Language)を記述するだけでできてしまうのである。

 右のスライドは,XAMLで書いた「Hello, worldアプリケーション」(最もシンプルなアプリケーション)の例。XAMLを記述して,Hello, worldと描かれたボタンを表示させている。

 従来,画面のデザインと,「あるメニューを選んだときに何が起きるか」という動作の部分=ロジックは密に関連していた。しかし,プログラマは,プログラム能力は優秀でも,デザインセンスもいいとは限らない。結果として,使いづらい,見た目のよろしくないアプリケーションがまかりとっていた。
 しかし,WPFにおいて,画面のルックス部分はXAMLで制作できるので,(プログラム知識のない)専門のデザイナーに任せやすくなる。デザイナーから上がってきたXAMLベースの画面デザインに,プログラマがロジックを追加していくことにより,“格好いい”アプリケーションを完成させるという,完全分業が可能になるのである。これは,かなり画期的だ。
 ちなみに,「XAMLをゼロから書き起こすのは大変なので」(川西氏),専用のオーサリングツールがマイクロソフトから提供される予定になっている。

 実は,XMLを使ってUIを記述するというアイデアはWPFが最初ではない。例えばMozilla Foundationが開発したレンダリングエンジンで,Webブラウザ「Firefox」などが採用する「Gecko」では,XMLでユーザーインタフェースを記述できる。WPFはGeckoの考え方を極限まで推し進めたものといえるかもしれない。

 と,ここまで読んだところで,「これがゲームに何の関係があるの?」といぶかる読者もいると思う。
 その答えとして,例えば,将来のゲームにおけるUI部分にXAMLが利用される可能性が挙げられよう。また,XAMLと組み合わせるロジック部分には,C#やVBScriptなどスクリプト言語を利用できるため,いわゆる“紙芝居”ゲームに,動きや3Dオブジェクトを交えたようなものが,より簡単に作れるようになる可能性もある。本格的なゲーム作りに使えるわけではないが,ゲーム方面でも,今後の展開を何かしら期待できる技術なのである。
 なお,WPFはWindows Vistaには標準で組み込まれ,Windows XPでも次世代の.NET Framework 3.0(リリース時期は未定)をインストールすることで利用できるようになる予定だ。(米田 聡)


Windows Vista
■開発元:Microsoft
■発売元:マイクロソフト
■発売日:2007/01/30
■価格:エディション,入手方法による
DirectX
■開発元:Microsoft
■発売元:Microsoft
■発売日:-
■価格:N/A
→公式サイトは「こちら」

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

http://www.4gamer.net/news/history/2006.09/20060904173506detail.html