ニュース
[CEDEC 2006#15]Windows Vistaに見る新しいグラフィックスの可能性
ただ,セッション冒頭で川西氏が「誤解のないように」と念押しした以下の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側でブラーの面倒を見る必要がなくなるというわけだ。
●GPUによる表面の凹凸
右に示したデモにおけるカメレオンの表皮にある凹凸は,ジオメトリシェーダユニットで生成したもの。凹凸のないモデルをGPUに渡し,ジオメトリシェーダで凹凸のポリゴンを追加することにより描画しているのである。結果,リアルな凹凸を表示しつつ,CPUがグラフィックスパイプラインに送り込むデータ量を大きく削減できる。
●インスタンシングの応用例
例えば,大量の蟻がウジャウジャと動くシーンを想像してみよう。DirectX 9以前では,描画対象となる蟻のデータすべてをグラフィックスパイプラインへ流し込む必要があり,CPUやバスに大きな負荷がかかる。これに対して,DirectX 10なら,1匹の蟻のデータを流し込んで,あとはインスタンシングで複製すれば,目的のシーンを作り出せる。これにより,グラフィックスパイプラインに渡すデータ量を大きく削減でき,結果として,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サイトを使った説明を行った。
これまでのWebページでは,何かボタンを押すと,別のページが開いていったわけだが,WPFを利用すると,ムービーや3Dグラフィックスなどが絡み合ったコンテンツを作成できる。こうしたコンテンツのデザイン面が,XML,正確を期せばXMLをベースにした「XAML」(eXtensible Application Markup Language)を記述するだけでできてしまうのである。
従来,画面のデザインと,「あるメニューを選んだときに何が起きるか」という動作の部分=ロジックは密に関連していた。しかし,プログラマは,プログラム能力は優秀でも,デザインセンスもいいとは限らない。結果として,使いづらい,見た目のよろしくないアプリケーションがまかりとっていた。
しかし,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
- 関連タイトル:
DirectX
- この記事のURL:
(C)2007 Microsoft Corporation.