GDC 2010において,AMDは,同社のマルチディスプレイ技術
「ATI Eyefinity」(以下Eyefinity)とマルチGPU技術
「ATI CrossFireX」(以下,CFX)をPCゲームでサポートするうえでの技術的なポイントを解説し,開発者に最適化を呼びかけた。
Thomas Fortier氏(Graphic Developer Relations Engineer, AMD)
|
そんなセッションのタイトルは
「Graphics Programming for Multi-GPU and Multi-Monitor Games」(マルチGPUやマルチモニタを利用するゲームに向けたグラフィックスプログラミング)。タイトルはCFXが先だが,実際のセッションにおいて,AMDでゲームデベロッパなどの技術サポートを担当するThomas Fortier氏は,Eyefinityに重点を置いて解説していたので,本稿もその重み付けに従って紹介してみたい。
Eyefinityによる多画面ゲーム環境のポイント
マルチディスプレイ対応は,ゲーマーにとってプラスにこそなれ,マイナス要素にはならないとして,積極的なサポートをGDC 2010の来場者に要請
|
Eyefinityについて,Fortier氏の考えは明確だ。いわく,「ゲームプレイにおいて,広い視野角を持つことはプラスになりこそすれ,マイナスにはなり得ない」。Eyefinityは,従来型マルチディスプレイ技術の延長線上にある存在のため,アプリケーションへの実装も難しくないと説明する。
Fortier氏によると,ゲームタイトルをEyefinityへ対応させるに当たって,基本中の基本になるのは
「スタンダードではないディスプレイモードや表示比率を排除しない」ことだそうだ。
|
Eyefinity対応にあたっては,一般的なディスプレイとは異なる解像度やアスペクト比(縦横比)を排除しないことが前提条件となる |
|
3x1構成の場合,ゲームプログラムやWindowsでは,ディスプレイ3台分の横幅および1台分の高さを持った画像をレンダリングするが,ユーザー側からは,それが3台のディスプレイに分割されて見える |
Eyefinityでは,主に
(ディスプレイ台数)x(縦の並び) という書き方で,用いるディスプレイの数と並びが示されるが,例えばディスプレイ解像度1280×1080ドットのディスプレイを用いた3x1のEyefinity表示だと,ゲームプログラムは,3840×1024ピクセルからなる一つのエリアをレンダリングし,グラフィックスカード側で,1280×1024ピクセル×3に分割表示させることになる。
このとき,デベロッパが心がけるべきなのは,メニューと,FPSにおける照準(Crosshair)の位置決めだとFortier氏。それぞれ,「頻繁にメニュー操作を行う必要があるゲームだと,画面の両サイドにメニューを置いた場合,カーソルの移動だけでかなりの時間がかかり,プレイヤーをイライラさせることになる」,「FPSで,照準が画面中央あたりに来るようデザインされていると,3x2構成のEyefinityでは,(中央にある2枚のディスプレイ上下中央に照準が置かれてしまい)ベゼルの干渉を受けて操作しづらくなる」という見解を示した。
マルチディスプレイ環境では,メニューやユーザインタフェースの配置が,ゲームプレイの快適さを大きく左右する(左)。広大なゲームフィールドをスクロールさせるのが大変で,シングルディスプレイ構成時よりもプレイ効率が下がってしまうとか,照準がベゼルに隠れてしまったりすることがないよう,デザイン面での配慮がかかせない
|
|
本セッションで,Eyefinityは,3x1や3x2の構成で実現する前提で話が進んでいた。Eyefinity発表時に披露された柔軟な構成に対応するのは,もう少し先になる印象を受ける
|
|
もう一つ,重要なポイントとして氏が挙げていたのは,
「ゲームのEyefinity対応を進める場合,3x1,または3x2構成に絞って開発を進めること」だった。2009年9月に,ATI Radeon HD 5000シリーズを発表したとき,AMDは「3x1+1」や「3x1+1x3」といった構成なども柔軟にサポートする意向を示していたが,ゲーム開発においては,同じディスプレイを3台もしくは6台使う前提に立ったほうがいいというわけだ。
このほかセッションでは,中央に最新のワイド表示対応ディスプレイを置きつつ,両サイドに,4:3や5:4表示対応の古いディスプレイを配置するような構成の是非について開発者から質問が出て,「縦方向の解像度さえ揃っていればサポートされる」という見解が示された。さらに,プロジェクター6台を使って,ベゼルの干渉がないプレイ環境を構築する方法や,3D立体視表示への対応予定についても質問が出たりと,Eyefinityに対する関心の高さが窺えた点は,付記しておく必要があるだろう。
AMDは今後,Eyefinity認証プログラムを通して,対応状況をエンドユーザーが判断しやすくなるようにしていく
|
また,Fortier氏は
AMDが先日アナウンスしたEyfinityの認証プログラムについても触れ,Eyefinityのディスプレイ解像度をサポートするゲームタイトルに
「Eyefinity Ready」,ユーザーインタフェースやメニューなどをEyefinityへ最適化したタイトルには
「Eyefinity Validated」のロゴを与えるとした。これにより,Eyefinityを利用したいユーザーが,ゲームタイトルの対応状況を確認しやすくなるという。
CFX最適化へのヒントを提示
AFRでは,フレーム間の依存関係や,CPUとGPUの同期処理により,並列処理性能が削がれる可能性を抱える
|
CFXによるマルチGPU構成において問題になるのは,複数のGPUでフレームを順番にレンダリングしていく「Alternate Frame Rendering」(以下,AFR)において,フレーム間の従属関係や,CPUとGPUの同期ポイントがあると並列処理性能が損なわれること。そこでFortier氏は「マルチGPU環境では,各GPUがグラフィックスメモリを持っていることを有効活用してほしい」として,フレームごとにGPU同士がデータをやりとりするのではなく,(頂点シェーダからの出力をバッファに書き出し,再び頂点シェーダに戻せる機能である)ストリームアウトを用いて,従属関係にあるリソースを各GPUの管理下に置くことを推奨する。
フレーム間でリソースの依存関係があるとき,シングルGPU構成時と同じアプローチをとってしまうと,GPUとグラフィックスメモリとの間で頻繁なデータ転送が必要となり,パフォーマンスに影響してしまう(左)。この問題を解決するためには,依存関係があるいくつかのリソースのコピーを互いに共有する必要があるとされた
|
|
「各GPUが持つグラフィックスメモリを有効に活用するのが,マルチGPUにおけるパフォーマンスのスケーラビリティを維持するコツだ」(Fortier氏)
|
|
CPUとGPUの同期問題に対しても,「フレーム間をまたがるクエリを持たせない」「クエリの結果を,少し間を置いて受け取るようにする」といった対策を取るだけで,CPUとGPUがバランス良く機能するようになると説明している。
「PCゲーム市場においては,いまもマルチGPU環境が成長を続けている」とFortier氏。マルチGPU環境に対するプログラムの最適化が,パフォーマンスを求めるゲーマーへの訴求ポイントになると強調した。
CPUとGPUの同期問題では,フレーム間にまたがるクエリーなどを持たないように気を配るべきという。これら最適化を完璧にこなせば……(下に続く)
|
|
(続き)どんなPCゲームでも,2GPU構成時に,2倍のパフォーマンスが得られると,Fortier氏は主張している。もっとも3GPU以上だと,まだ「ゲームによる」としか言えないようだが
|