パッケージ
Windows 8.x公式サイトへ
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[GDC 2012]上から下まで性能の幅が広いWindows 8のMetroデバイス。ゲームにはどのような影響が?
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2012/03/10 23:10

イベント

[GDC 2012]上から下まで性能の幅が広いWindows 8のMetroデバイス。ゲームにはどのような影響が?

搭載機の性能差が広がる「Windows 8」ゆえの問題
その解決方法をMicrosoftがレクチャーする


Microsoft Dan McLachlan氏
画像集#001のサムネイル/[GDC 2012]上から下まで性能の幅が広いWindows 8のMetroデバイス。ゲームにはどのような影響が?
 GDC 2012では,Microsoftが「Microsoft Developer Day」と銘打った多数のスポンサーセッションを開催していた。大半のセッションの主題はXbox LiveかWindows 8のMetroのいずれかで,同社がこの2つにいかに力を入れているかが分かる。ゲームプログラマー向けのMetroに関するセッションは2本が用意されていて,本稿ではこのうち後半の部をお届けする。セッションを担当したのは,MicrosoftのDan McLachlan氏だ。

 McLachlan氏がまず強調したのは,Windows 8を搭載するマシンは「レンジが広い」という点である。

Windows 8を搭載する幅広いデバイス。右下のタブレット,下中央のタッチパネル搭載クラムシェル機,左下のノートPC,左上のスレートPC,そして右上のハイパフォーマンスデスクトップまで,さまざまなタイプがあり,それぞれ性能も違う
画像集#002のサムネイル/[GDC 2012]上から下まで性能の幅が広いWindows 8のMetroデバイス。ゲームにはどのような影響が?

 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」を実行するデモを行ってみせた。

画像集#003のサムネイル/[GDC 2012]上から下まで性能の幅が広いWindows 8のMetroデバイス。ゲームにはどのような影響が?
パーティクルで花火のようなパターンを描く「SpriteBatch」を,DirectX 9.1レベルのマシンで動作させた様子。右上にパーティクル数が表示されているが,約30FPSのときのパーティクル数は500
画像集#004のサムネイル/[GDC 2012]上から下まで性能の幅が広いWindows 8のMetroデバイス。ゲームにはどのような影響が?
同じデモをDirectX 10レベルのGPUで実行。フレームレートは約50FPSに上がり,パーティクル数も4352と一気に跳ね上がる
画像集#005のサムネイル/[GDC 2012]上から下まで性能の幅が広いWindows 8のMetroデバイス。ゲームにはどのような影響が?
同じくDirectX 11のGPUで実行。フレームレートは約54FPS,パーティクル数は50496と表示されている

 デモで実演されたように,一般的にはGPUがサポートするDirectXのレベルが上がるほど性能は高いのだが,McLachlan氏は「性能が高いのではない。性能のレンジが広がるのだ」と強調しつつ,グラフを示してみせた。

DirectX 9.1からDirectX 11.1まで,歴代のDirectXをサポートするGPUの平均的な性能と,性能の幅を示したグラフ。グラフ中の縦線が,そのDirectXをサポートするGPUの性能の幅,右肩上がりに結ばれている線が平均的な性能である。世代が進むほど性能の幅が著しく広がっていることが分かるだろう
画像集#006のサムネイル/[GDC 2012]上から下まで性能の幅が広いWindows 8のMetroデバイス。ゲームにはどのような影響が?

 McLachlan氏の主張を,より分かりやすい言葉で言い換えれば,ローエンドGPUとハイエンドGPUの性能幅は,DirectXの世代が進むほどに広がっているというわけだ。グラフではDirectX 10以降,ローエンドの性能は変わっていないことになっているが,確かにそうかもしれない。

 以上のように,性能,機能の幅が広いデバイスをMetroスタイルのゲームではサポートするべきだとMcLachlan氏は指摘するわけだが,これは大変そうなことだと思えるだろう。

 まずグラフィックスの機能の面に注目すると,DirectXのレベルはグラフィックス機能のレベルの違いでもある。

画像集#008のサムネイル/[GDC 2012]上から下まで性能の幅が広いWindows 8のMetroデバイス。ゲームにはどのような影響が?
DirectX9.1,10,11でサポートされた機能を3段に分けてリストアップしているスライド。左の段がDirectX 9.1,中央の段がDirectX 10,右の段がDirectX 11で拡張された機能だ。これだけサポートする機能にも幅があるわけである
画像集#007のサムネイル/[GDC 2012]上から下まで性能の幅が広いWindows 8のMetroデバイス。ゲームにはどのような影響が?
さらに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のベレルに応じて,その機能を使いましょうという解決策。例えばDirectX 11以降ならテッセレーションを使う,DirectX 11.1ならStereo 3D(立体視)を使ってリッチに見せるなど
画像集#009のサムネイル/[GDC 2012]上から下まで性能の幅が広いWindows 8のMetroデバイス。ゲームにはどのような影響が?

 スライドに挙げられている以外にも,APIのレベルに応じてテクスチャのサイズを上げていく方法や,アンチエイリアスのサンプリング数を変えるといった方法で,APIのレベルに応じて品質を上げる手法を提案していた。

 幅広い性能に関しては,まず「パフォーマンスのキャリブレーションが必要」だという。つまり,ゲームスタート時などにフレームレートを測って,得られたレートに応じた動作をするようなゲームを作成するというわけだ。

McLachlan氏が示したキャリブレーションのコード例。詳細は省くが10フレーム分レンダリングして,かかった時間を測定している
画像集#010のサムネイル/[GDC 2012]上から下まで性能の幅が広いWindows 8のMetroデバイス。ゲームにはどのような影響が?

 また,McLachlan氏は「電力性能とパフォーマンスはトレードオフの関係にある」と指摘する。Windows 8 Metroを採用するマシンはバッテリーを電源として使うものも多いため,電力消費には気を使う必要があるということだ。

 したがって,「いずれにしても極力レンダリングの負荷は減らすべき」とし,いくつかの方法を提案していた。そのうちの一つに,低精度浮動小数点数(Low Precision)の演算の利用がある。

レンダリング負荷を抑える方法の一つが低制度浮動小数点数の演算を使うことだという。黄色く囲まれているところが低精度浮動小数点数(min16float)型
画像集#011のサムネイル/[GDC 2012]上から下まで性能の幅が広いWindows 8のMetroデバイス。ゲームにはどのような影響が?

 リストのように,低精度で問題ない部分は「min16float」という低精度型に置き換えなさいというわけだが,先のリストを確認してていただければ分かるとおり,低制度浮動小数点数演算はDirectX 11.1からサポートされる機能であるため,おそらく今も多数を占めるであろうDirectX 9.1レベルのGPUには対応できないのが難点ではないかと思われる。

 また,「タイルベースのレンダリングに最適化しなさい」というアドバイスをしていたのも特筆しておいていいだろう。タイルベースのレンダリングはPowerVR系を始め,ARMのMaliなどARM採用のマシンで使われているレンダリング手法である。Metroスタイルのゲームは当初から,これらのGPUを意識すべしということになる。

 詳細は省くが,タイルベースのレンダリングを採用するGPUはメモリ帯域が狭いので,不必要なビデオバッファからのコピーは避けるというのが原則。不必要なコピーを知ることができるAPIが追加されていると述べていたので,DirectX 11.1では多少,タイルベースのレンダリングを意識したAPIが追加されているのかもしれない。

画像集#012のサムネイル/[GDC 2012]上から下まで性能の幅が広いWindows 8のMetroデバイス。ゲームにはどのような影響が?

 そのほかにも開発者に向けて多岐にわたるアドバイスが行われていたが,ゲーマーとして気になるのは,幅広い性能,機能のGPUをサポートすることで,グラフィックスの質の低下を招かないかという点だろう。筆者の個人的な意見になるが,やはり落とすほうが楽なので落とすベンダーも増えるのではないか,というのがセッションに参加してみて抱いた正直な印象だ。

 ただし非Metroのゲームでも,「Battlefield 3」のように幅広いGPUに対応しつつ,ハイエンドのGPUではグラフィックスの質を上げているゲームがすでにある。ベンダーが手間暇かければ,リッチなグラフィックスをサポートするMetro上のゲーム制作は可能だろう。ベンダーがMetroにどの程度力を入れるかにもかかっていそうだ。
  • 関連タイトル:

    Windows 8.x

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:11月21日〜11月22日