イベント
[GDC 2017]PS4&Xbox One用タイトルのPC移植スペシャリストが語る「DX12の理想と現実」
具体的なセッション名は,Nixxes Software代表のJurien Katsman氏が登壇した「DX12 - and(How to avoid) death by a thousand Cuts」(千の傷から死を免れるためのDirectX 12活用術)と,Ubisoft MontrealのTiago Rodrigues氏による「Moving to DirectX 12: Lessons Learned」(DirectX 12への移行にあたって学んだこと)。要は,実際のタイトル開発と移植に関わったゲームデベロッパが「DirectX 12って結構大変なんだよ?」と見解を述べたわけである。
本稿ではこれら2つのセッションから,前者のレポートをお届けしてみたい。
DirectX 12は難しい
Katsman氏の率いるNixxes Softwareは,スクウェア・エニックスがパブリッシングしているタイトル群のPC移植版を手がけることの多いスタジオだ。
Nixxes Softwareが近年手がけたDirectX 12対応移植版としては,「Rise of the Tomb Raider」「Deus Ex: Mankind Divided」が挙げられるが,まさにこれら2タイトルの移植を通じて得られた知見を報告するという形で,Katsman氏はセッションを進行していった。
そんなKatsman氏の感想は,「DirectX 12対応は,言うだけならば簡単だが,実際に挑戦してみると難しい」というものだ。GPUメーカーによって挙動の特性が異なるうえ,DirectX 11対応版を完成させてからDirectX 12への移植を試みると,思ったほどパフォーマンスが上がらないのだそうだ。
とにかく苦労したのは,Nixxes SoftwareがDirectX 12への移植に取りかかったのがまさにDirectX 12の黎明期だったことに起因する諸問題だったという。GPUのDirectX 12対応デバッグツールがなく,ドキュメントも完成度が低く,開発は手探り状態。ドライバの完成度も低いうえ,各機能に対する最適化の洗練度はGPUメーカーによって違うという状況だったと,Katsman氏は振り返っていた。
DirectX 12の場合,リソース管理や描画命令の組み立てと発行管理を開発者が自前で設計,実装しなければならない。そのため,開発難度はDirectX 11時代と比較して数段上がることになる。
Katsman氏いわく,「とくに難度が高かったのはメモリ管理」。「一言でまとめるなら,DirectX 11に劣るとも優らずといったところ」だそうだ。
たとえば,「とりあえず多めにメモリを確保」という開発方針は,DirectX 12では通用しない。必要な分を先に確保し,臨機応変に解放制御も行わなければならないのである。また,メモリ管理制御を一度に集中させると,ストールしてゲーム進行がカク付く場合があるため,分散して行うよう気を配る必要もあるのだとか。
DirectX 11気分で多め多めにメモリを確保しているとうまくいかない |
メモリ管理の制御を一度にやるとストールの可能性も |
DirectX 12では,CPUプログラム側で描画コマンドを自ら構築して発行することまで行うが,DirectX 12側の描画コマンドはドライバを経てGPU側に送られた時点で,当該GPU用のネイティブコマンド列に変換されている。
このネイティブコマンド列をバッファリングするためのメモリ確保は,DircectX 12のAPIである「Command Allocator」経由で行うのだが,その確保と解放の繰り返しは性能に響くのだという。「なので,なるべく使い回すような方針でパイプラインを設計したほうがいい」(Katsman氏)。
また,DirectX 12では,あるデータ群がどのような形式のどんなデータなのかを記述しておく「Descriptor」という概念を導入しており,リンク木構造(※データとともに,「次のデータがある場所」までのポインタとインデックス,アドレスなどがセットになっているデータ構造)の「Descriptor Heap」形式でDescriptorデータを管理しているのだが,このDescriptor Heapの更新変更処理が,NVIDIA製GPUでは性能面で大きく足を引っ張ることを確認したという。なので,この処理の最適化が,NVIDIA製GPU搭載環境で高い性能を引き出すには効いてくるそうだ。
また,マルチコアCPUによるマルチスレッド実装で描画コマンドを並列構築するのはいいことだが,「一定量まとまってから発行するようにした場合,描画コマンドが多くなりすぎて,結果,溜め込んだ時間分だけ遅延することになりかねない」とも,Katsman氏は警鐘を鳴らしている。
Async Computeは,グラフィックスレンダリングと非同期にCompute Shaderを動かすもので,AMDが「自社のGPUにおいてのみ,効率よく実行できる」と主張して話題になった。ただ,Katsman氏の経験上,「DirectX 12登場直後の古いドライバでは,動作があまり安定しなかった」とのことだ。
なお,最近ではドライバの最適化が進み,AMDとNVIDIA,両社のGPUでAsync Computeは安定して動作しているとのことである。
そして,氏が最後に挙げたのは,DirectX 12のマルチGPU関連機能だ。
DirectX 12では,システムに複数のGPUが搭載されているとき,ゲームプログラム側で各GPUを任意の用途に使えるというのが,ウリの1つとして訴求されていた。たとえば,「GPU 0をグラフィックス描画用,GPU 1は物理およびAIシミュレーション用に使い分けられる」「GPU 0と1,両方に搭載されたグラフィックスメモリの総容量を余すことなく使える」といった謳い文句を,見たり聞いたりした読者も多いことだろう。
だがKatsman氏は,「これらも,実際にやろうとすると難度が高い」とバッサリ切っている。性能の異なるGPUを,しかもユーザーごと,どういう組み合わせになるか分からないGPUを複数まとめて,効果的に活用するのは極めて難しいそうだ。
結局,Rise of the Tomb RaiderとDeus Ex: Mankind Dividedでは,スペックと性能が近しい2基のGPUを搭載した環境でのみ,交互にレンダリングを行って性能向上を図るAFR(Alternative Frame Rendering)の実装を行うに留めることになったという。
これはKatsman氏の独自分析だが,現状,一般ゲーマーの期待も,2基(以上)のGPUを個別に使いこなす活用よりも,AFRでフレームレートを向上させる方向を向いているとのことだった。
DirectX 12に対する幻想を捨てよ!?
「MicrosoftとGPUメーカーのマーケティング活動により,よい意味でも悪い意味でも,一般ユーザーの間で,DirectX 12に対する過剰な期待が集まっている」とKatsman氏は言う。
一般のゲーマーは,「オレのGPUがDirectX 12で何十%も速くなるのはいつなのよ?」と期待し続けている。しかし,実際にDirectX 12対応パッチが出たら,導入によってフレームレートは数%低下した,などという事例も出てきており,業界内では行く末を心配する声も出てきているそうだ。
MicrosoftとGPUメーカーの「DirectX 12関連製品売りたい」思惑が,ゲーマーに過大な期待を抱かせている!? |
「DirectX 12の恩恵を受けている気がしないんだけど」という一般ユーザーの声が高まりつつあるとKatsman氏 |
「実際のところ,『DirectX 12で性能向上率が高くなるのは,条件が揃ったときに限られる』という現実がある」とKatsman氏は言う。
たとえば,高性能なCPUとGPUを搭載するハイエンドシステムにおいて,DirectX 12が解消するとされるCPUのボトルネックはほぼ起きない。また,4Kのような高解像度や,PCならではの高いグラフィックス設定プリセットを選択した場合,GPUにかかる負荷自体が高く,DirectX 12によって稼いだ性能向上率がほとんど目立たないという状況になりがちだ。
ハイエンドCPUとGPUを搭載していないシステムでは性能面での明確なメリットが得られ,ゲームプログラムやレンダリングパイプラインの設計方針を,PlayStation 4やXbox One版に近い,一貫性のあるものにできるというメリットもあるとのことだ。
「DirectX 12対応は困難ながら,対応する価値がある。ただし,現実的な視点を持って対応すべきだ。過度な期待は禁物」と述べたKatsman氏は,「DirectX 11と比較するな。ただ面白いゲームを作れ。結果は後からついてくる」と開発者にエールを送って講演を締めくくった。
「DirectX 12に対する幻想を捨てろ」 |
「DirectX 11版とDirectX 12版を比較するな」 |
たしかに,DirectX 12とDirectX 11で比較テストを行うときには,超高性能なシステムを用意して「違いがない」とするよりも,むしろ「どういう条件だとDirectX 12版のほうが高いフレームレートを示すのか」を明らかにしたほうが,情報としての価値は高いだろう。
ゲームメディア側としても「DirectX 12はDirectX 11よりも速くなって当たり前」という認識をあらため,DirectX 12対応ゲームのベンチマークスコアと向き合っていく必要があるかもしれない。
Nixxes Software公式Webサイト(英語)
4GamerのGDC 2017特集ページ
- 関連タイトル:
DirectX
- この記事のURL: