イベント
[GDC 2012]上から下まで性能の幅が広いWindows 8のMetroデバイス。ゲームにはどのような影響が?
搭載機の性能差が広がる「Windows 8」ゆえの問題
その解決方法をMicrosoftがレクチャーする
McLachlan氏がまず強調したのは,Windows 8を搭載するマシンは「レンジが広い」という点である。
McLachlan氏によると,Windows 8を搭載してMetroスタイルが使われるマシンは,下はタブレットから上はゲーミングデスクトップまで,タイプの幅が広いのが特徴だという。そして,タッチパネルをサポートする点こそ共通だが,機能や性能の幅も従来よりかなり広くなる。
「これら“ワイドレンジのデバイス”に対応する必要があることが,ゲームプログラミングのポイントになる」とMcLachlan氏は指摘する。
「幅広い性能」には,グラフィックス要素ももちろん含まれる。Windows 8では,DirectX 9.1(ユーザーレベルではDirectX 9cという名前が使われている)レベルのGPUからDirectX 11.1をサポートするGPUまで,やはり幅広く利用されることになる。注意が必要なのは,例えばDirectX 11のGPUがDirectX 9.1のGPUよりも性能が高いとは,必ずしも言えないという点だ。
McLachlan氏は「平均的な性能はDirectX 9.1のGPUよりDirectX 11のGPUのほうが確かに高い」という。実際に,DirectX 9.1,DirectX 10,DirectX 11をそれぞれサポートする3台のマシンで,Windows 8 Metroスタイルのサンプルプログラム「SpriteBatch」を実行するデモを行ってみせた。
デモで実演されたように,一般的にはGPUがサポートするDirectXのレベルが上がるほど性能は高いのだが,McLachlan氏は「性能が高いのではない。性能のレンジが広がるのだ」と強調しつつ,グラフを示してみせた。
McLachlan氏の主張を,より分かりやすい言葉で言い換えれば,ローエンドGPUとハイエンドGPUの性能幅は,DirectXの世代が進むほどに広がっているというわけだ。グラフではDirectX 10以降,ローエンドの性能は変わっていないことになっているが,確かにそうかもしれない。
以上のように,性能,機能の幅が広いデバイスをMetroスタイルのゲームではサポートするべきだとMcLachlan氏は指摘するわけだが,これは大変そうなことだと思えるだろう。
まずグラフィックスの機能の面に注目すると,DirectXのレベルはグラフィックス機能のレベルの違いでもある。
DirectX9.1,10,11でサポートされた機能を3段に分けてリストアップしているスライド。左の段がDirectX 9.1,中央の段がDirectX 10,右の段がDirectX 11で拡張された機能だ。これだけサポートする機能にも幅があるわけである |
さらにDirectX11.1で追加される機能のリスト。今回のセッションでは個々の細かな説明はなかったが,一部は記事にて後述する |
リストで示されているように,グラフィックスの機能も大幅に増減するのがWindows 8 Metroデバイスだが,Metroでは「WinRT」上からDirectXを呼び出すことになる。WinRT上ではGPUがサポートするAPIのレベルがどうあれ,1組のAPI(Unified 3D APIという)でGPUを制御する。したがって,やろうと思えばDirectX 9.1からDirectX 11.1までを,1つのゲームプログラムでサポートできるわけだ。それを「やれ」というのがMcLachlan氏の,というよりMicrosoftの主張ということになる。
グラフィックスの質が落ちるのか落ちないのか?
ご想像のとおり,機能性能の幅が広いプラットフォームに対しては,下に合わせて作るのが楽だ。とはいえ,Windows 8 MetroゲームがDirectX 9.1時代のグラフィックスの品質に逆戻りというのでは本末転倒であり,ゲーマーとしても嫌だろう。
そこでMcLachlan氏は,グラフィックスの質をAPIのレベルに合わせて向上させる,いくつかの解決策を示して見せていた。
スライドに挙げられている以外にも,APIのレベルに応じてテクスチャのサイズを上げていく方法や,アンチエイリアスのサンプリング数を変えるといった方法で,APIのレベルに応じて品質を上げる手法を提案していた。
幅広い性能に関しては,まず「パフォーマンスのキャリブレーションが必要」だという。つまり,ゲームスタート時などにフレームレートを測って,得られたレートに応じた動作をするようなゲームを作成するというわけだ。
また,McLachlan氏は「電力性能とパフォーマンスはトレードオフの関係にある」と指摘する。Windows 8 Metroを採用するマシンはバッテリーを電源として使うものも多いため,電力消費には気を使う必要があるということだ。
したがって,「いずれにしても極力レンダリングの負荷は減らすべき」とし,いくつかの方法を提案していた。そのうちの一つに,低精度浮動小数点数(Low Precision)の演算の利用がある。
リストのように,低精度で問題ない部分は「min16float」という低精度型に置き換えなさいというわけだが,先のリストを確認してていただければ分かるとおり,低制度浮動小数点数演算はDirectX 11.1からサポートされる機能であるため,おそらく今も多数を占めるであろうDirectX 9.1レベルのGPUには対応できないのが難点ではないかと思われる。
また,「タイルベースのレンダリングに最適化しなさい」というアドバイスをしていたのも特筆しておいていいだろう。タイルベースのレンダリングはPowerVR系を始め,ARMのMaliなどARM採用のマシンで使われているレンダリング手法である。Metroスタイルのゲームは当初から,これらのGPUを意識すべしということになる。
詳細は省くが,タイルベースのレンダリングを採用するGPUはメモリ帯域が狭いので,不必要なビデオバッファからのコピーは避けるというのが原則。不必要なコピーを知ることができるAPIが追加されていると述べていたので,DirectX 11.1では多少,タイルベースのレンダリングを意識したAPIが追加されているのかもしれない。
そのほかにも開発者に向けて多岐にわたるアドバイスが行われていたが,ゲーマーとして気になるのは,幅広い性能,機能のGPUをサポートすることで,グラフィックスの質の低下を招かないかという点だろう。筆者の個人的な意見になるが,やはり落とすほうが楽なので落とすベンダーも増えるのではないか,というのがセッションに参加してみて抱いた正直な印象だ。
ただし非Metroのゲームでも,「Battlefield 3」のように幅広いGPUに対応しつつ,ハイエンドのGPUではグラフィックスの質を上げているゲームがすでにある。ベンダーが手間暇かければ,リッチなグラフィックスをサポートするMetro上のゲーム制作は可能だろう。ベンダーがMetroにどの程度力を入れるかにもかかっていそうだ。
- 関連タイトル:
Windows 8.x
- この記事のURL: