お気に入りタイトル/ワード

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

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

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

LINEで4Gamerアカウントを登録
Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2013/11/18 10:00

ニュース

Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?

 AMDが米国で開催していた開発者向けイベント「AMD Developer Summit 2013」(略称,APU13。以下略称表記)では,GCN世代のRadeon専用となる独自グラフィックスAPI「Mantle」の詳細が明かされた。その内容は4Gamerでもレポート済みだ。

AMD独自グラフィックスAPI「Mantle」の詳細が明らかに。理論上はGeForceのMantle対応も可能!?


Johan Andersson氏(Technical Director Frostbite,EA DICE)
画像集#001のサムネイル/Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?
 さらに,イベント3日めとなる2013年11月13日(北米時間)には,ゲームグラフィックスにおける活用に特化した情報が,「Mantle for Developers」という題名の基調講演で明らかになった。本稿でお届けするのは,その内容だ。
 講演を担当したのは,EA DICEのテクニカルディレクターであるJohan Andersson氏。氏は,EA DICEから独立した「Electronic Artsグループのゲームエンジン部門」であるFrostbiteが手がける最新世代のエンジン「Frostbite 3」の開発に携わっており,今回は,「Battlefield 4」(以下,BF4)を実際にMantleへ対応させてきた立場から,Mantleの利点や可能性を解説していた。
 先の記事と一部重複する内容もあったが,詳しくレポートしていきたい。


広がりを見せるMantle対応ゲーム

EAグループは15タイトルが対応予定


BF4のMantle版は12月後半に提供予定
画像集#015のサムネイル/Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?
 Andersson氏によると,12月後半のリリースを目標に開発が進められているMantle対応版BF4は,PlayStation 4のレンダリングエンジンをMantleに実装するという形になるそうだ。実質的な開発期間はわずか2か月程度だという。
 ただし,「より深いレベルでの最適化やマルチGPUのサポートも行い,PC版のグラフィックス要素もすべて持ち込んでいるので,PS4版の移植というわけではない」とも,氏は断っている。

 BF4と同じFrostbite 3エンジンを使うゲームとしては,「Plants vs. Zombies: Garden Warfare」も,Mantleへの移植が進行中だという。こちらは,高性能な単体GPUではなくAPUが対象であり,ハイスペックPCでの描画性能にどこまで迫れるかをテーマとして,開発が進められているとのことだ。

 またEA DICE以外にも,Electronic Artsグループ(以下,EA)の他スタジオが手がけるゲームのうち,15タイトルがMantle対応前提で開発されていることも明らかにされた。具体的に名前が挙がったタイトルは,「NEED FOR SPEED RIVALS」や「Dragon Age: Inquisition」で,そのほかに「Mirror'sEdge」シリーズの新作や「Star Wars」の新作ゲーム,そして「Mass Effect」新シリーズなどが,Mantle対応予定であるという。

画像集#016のサムネイル/Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?
「Plants vs. Zombies: Garden Warfare」は,APUでの快適動作を目指してMantleに対応する
画像集#017のサムネイル/Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?
EA DICEに留まらず,EAグループでは15タイトルものMantle対応ゲームを予定している


多彩なハードウェアをサポートしなくてはならない

DirectXやOpenGLが抱える問題


 さて,Andersson氏による講演の主題は,Mantle対応タイトルの紹介ではなく,「Mantleで何ができるのか」である。それを理解するには,特定のGPUアーキテクチャを前提に,抽象化レイヤーを薄くしてアプリケーションが直接にGPUを制御する」というMantleの仕組みが,なぜ求められるのかを知る必要があるだろう。実際,Andersson氏も,まずそこから説明を始めている。

 そもそもDirectX(のDirect 3D)やOpenGLといったグラフィックスAPIは,さまざまなメーカーの多種多様なアーキクチャのGPUを対象として開発されたものだ。そのため,「これらのAPIを使って開発すれば,最終的にどのGPUでも,同じプログラムで(性能面はともかく)同じ結果が得られる」ことが大前提となっている。
 これらのAPIが登場した1990年代は,いくつもの半導体メーカーが独自アーキテクチャのGPUを市場に投入するという,混沌とした時代だった。そのため,アーキテクチャの違いを隠蔽し,どのGPUでも同じようなグラフィックスを表現できるような「安定した仕組み」が必要とされていたのだ。

DirectXやOpenGLといったAPIは,ゲーム側から見ればブラックボックスのようなものである,という説明スライド
画像集#002のサムネイル/Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?
 「安定した仕組み」の実現にあたっては,「ハードウェアアーキテクチャの違いを隠蔽する」ための,“分厚い”ハードウェア抽象化レイヤーを用意することになる。これにより,たとえばゲームなどといったアプリケーション側から見た見たDirectXやOpenGLは,なかばブラックボックス的に動く存在となった。
 だがそのために,ハードウェアが本来持つ性能を生かし切るのが難しくなるという弊害が生じることにもなる。Andersson氏は,現状のDirectXやOpenGLの仕組みだと,「マルチコアのCPUを搭載するPCであっても,GPUに命令やデータを送るときに,マルチコアであるメリットを生かせていない」と指摘する。

 ここは少し説明が必要だろう。ゲームグラフィックスは,ざっくり言うと,以下の手順で描画されている。

  1. アプリケーションがDirectXやOpenGLのAPI(Application Program Interface,命令や関数をまとめたもの)を呼び出す
  2. APIが,「GPUに処理させるための命令書」を,「コマンドバッファ」(Command Buffer)と呼ばれるメモリ領域に積み上げる
  3. 積み上げた命令書を,グラフィックスドライバがGPUに順次受け渡す(※受け渡すことを,専門用語では「発行する」という)
  4. グラフィックスドライバに受け渡された順番で,GPUが実際の処理を行う

 ここでポイントとなるのは,DirectXやOpenGLの場合,コマンドバッファの管理が,アプリケーションではなく,API側で行われているということ。そして,DirectXやOpenGLも,コマンドバッファを処理するときにマルチコアCPUを活用できるように改善が進められてはきた。
 しかしAPI側は,アプリケーション側のスレッド(=プログラムの細かい単位)管理とは完全に切り離されているので,アプリケーション側と完全に並列化させて処理するような,細かい制御ができない。それどころか,場合によってはアプリケーション側の実行スレッドと衝突して,処理が遅延してしまうことすら起こり得る。Andersson氏が指摘する,「メリットを生かせていない」とは,こうしたことを意味しているのだ。

DirectXとOpenGLにおける「処理の並列化の限界」を示したスライド。コア数が多くても,「Render」のスレッドは「CPU 1」でしか処理されていない
画像集#003のサムネイル/Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?

 そこでMantleは性能を引き出すために,DirectXやOpenGLとは違うアプローチを取った。Mantleではコマンドバッファの管理や,コマンドバッファからGPUへのコマンド発行までをアプリケーション側で実行できるように設計されている。
そのため,各CPUスレッドが独自にコマンドバッファを持ち,それぞれを順次GPUへ発行することが可能となる。これはマルチコアCPUの稼働率を上げ,GPUが駆動するまでの遅延を短縮することにもつながるので,結果としてハードウェアの性能を引き出せるというわけだ。

Mantleならば,コマンドバッファの制御自体をCPUごとに並列化処理させられるので,処理効率が上がる
画像集#004のサムネイル/Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?


アプリケーションがGPUを細かく制御できるMantleなら,

今までにないグラフィックスレンダリングが可能に?


現代のGPUは,グラフィックスレンダリング(Graphics)とGPGPU(Compute),DMAといった実行部を組み合わせたものだ
画像集#006のサムネイル/Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?
 現代のGPUはグラフィックスレンダリングの機能だけでなく,GPGPU(汎用GPU処理)や,グラフィックスメモリとメインメモリ間の転送を処理する「DMA」(Direct Memory Access)といった実行部を備えている。これらの実行部も,やはりコマンドバッファに積み上げられたコマンドによって動作することに違いはない。

MantleにおけるGPU処理の最適化は,CPU側プログラムとの協調動作で実現できるというスライド
画像集#005のサムネイル/Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?
 となれば,アプリケーションでコマンドバッファを管理できるMantleの仕組みを使うことにより,アプリケーションの処理(ロジック)にピタリと協調させた形で,GPUの各実行部を動作させることが可能だ。「GPUの動作がブラックボックス内にあるDirectXやOpenGLの仕組みとは,ここが大きく異なる部分だ」と,Andersson氏は述べる。

 Mantleであれば,「あるグラフィックスレンダリングが画面を描画している間に,DMAに命じて,次の描画に必要なデータをメインメモリからグラフィックスメモリ側へ転送さておく」といった協調動作を,アプリケーションが明示的に実行できる。
 あるいは,GPGPU側でライティングをレンダリングしながら,グラフィックスレンダリング側では影生成を並行して行わせ,両方の結果を最終的に合成するといったことも可能となる。

画像集#007のサムネイル/Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?
協調動作による最適化の例。ここではDMA処理を他の処理にオーバーラップさせている
画像集#008のサムネイル/Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?
別の最適化例。GPGPUとグラフィックス処理を,あえてオーバーラップ実行させている

 なお,「GPGPUをグラフィックス用途に使う」ことに違和感を覚える人はいるかもしれないが,これはPlayStation 4やXbox One世代のゲームグラフィックスにおいて流行している手法だ。GPGPUを用いてカリング工程やポストエフェクトを処理するといった仕組みは,Andersson氏が手がけたFrostbite 3エンジンでも実装されている。

 話を戻そう。グラフィックスレンダリングとGPGPU,DMAの各実行部をアプリケーションが的確に制御でき,それぞれを適切にオーバーラップさせて並列処理できるため,Mantleは「レンダリングパイプラインそのものに革新を与えられる」と,Andersson氏は述べた。

GPGPUによるジオメトリやラスタライズと,グラフィックスレンダリングを協調動作させることで,今までできなかったレンダリングパイプラインが,実用的な速度で実現可能になる,というスライド
画像集#009のサムネイル/Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?
 たとえば,GPGPUでジオメトリ処理とラスタライズ処理を行い,最後のピクセルシェーディングだけをグラフィックスレンダリングで行うといった手法も,Mantleならば実用的な処理速度で可能になりそうだ。
 具体的には,膨大な数の頂点データを扱う「ポイントクラウド」や,Pixar Animation StudiosがCG映画制作で活用している「マイクロポリゴン化レンダリング」といった手法を,Mantleならゲームグラフィックスで実現できる。つまり,三角形(ポリゴン)メッシュの3Dモデルを使わないゲームグラフィックスが,現実のものとなるわけだ。

GPGPUでグラフィックスレンダリングのフロントエンドを処理する例。PlayStation 3時代後期に,CellプロセッサのSPUでこれを行う手法がはやった
画像集#010のサムネイル/Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?
 いきなりそこまで突っ走らなくても,たとえばPlayStation 3のゲームグラフィックスで流行したように,特殊な頂点シェーダをCellプロセッサ内の「SPU」で実行するといったGPGPU的フロントエンドが,Mantleなら問題なく実装できるはずである。描画不要なポリゴンを破棄するカリングや,遮蔽可否判定を行う「オクルージョンクエリ」(遮蔽探査)を,GPGPUで処理できるようになるだろう。
 このように,GPGPUとグラフィックスレンダリングを併用する手法が,GPUとCPUを効率よく活用する仕組みと組み合わされば,「Mantle対応アプリケーションでは,新しいレンダリングメカニズムを実現できるかもしれない」と,Andersson氏は期待を示していた。

Mantleにより実現できるかもしれない,新しいゲームグラフィックスの例をAndersson氏は挙げた
画像集#011のサムネイル/Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?


Mantleの成否を握るのは……Windows以外への展開?


 さて,Mantleは今のところ,Windows環境のみに提供されている。ターゲットのハードウェアがPCであり,PCゲームの主たるプラットフォームがWindowsである以上,これは必然であろう。

 しかしAndersson氏は,Mantleを「他のプラットフォームにも展開していってほしい」と,基調講演の中で要望した。具体的な対象として氏が挙げたのは,LinuxとMac OS,そしてAndroidのようなモバイルOSだ。
 たとえば,MantleがLinuxに対応すれば,Valveが計画しているLinuxベースのゲーム機「Steam Machine」が面白い存在になるだろうと,Andersson氏は述べる。また,モバイル機器の場合,「絶対的な性能が低いからこそ,MantleのようなAPIが意味を持つ」とも主張していた。

画像集#012のサムネイル/Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる? 画像集#013のサムネイル/Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?
Andersson氏は,LinuxやMac OS,モバイル機器へMantleを広げるべきだと主張する

Mantleの普及にはマルチベンダ化,いうなればNVIDIAの参加が必要とAndersson氏はやんわり指摘する
画像集#014のサムネイル/Frostbite 3エンジンの凄腕開発者が語る「Mantle」の可能性。Windows以外でもサポートできる?
 PCで動くLinuxはともかく,モバイル機器はまだAMDが進出できていない分野なので,同社が単独で進めるのは困難だ。実現にはSoC(System-on-a-Chip)向けGPUを手がける企業との連携が必要になるだろう。
 また,先日掲載したMantleのセッションでは,AMDでMantleのチーフアーキテクトを務めるGuennadi Riguer氏が,「NVIDIAなどの競合GPUメーカーが“Mantleの仕組み”に参加することも技術的には可能」と述べていた。
 Andersson氏もこれを踏まえたうえで,「現代のGPUならばアーキテクチャ的に,他ベンダーのGPUでもMantleのフレームワークを導入可能だ」と主張し,「すべてのGPUが,Mantleでコントロールできるようになることを望む」と訴えた。

 9月の発表時点では,MantleはPS4,Xbox Oneへの採用を追い風に,ゲームデベロッパをGCNアーキテクチャに囲い込む戦略といった読みもあった。だが,発表から1か月以上経ってみると,ゲーム開発者コミュニティから良好なフィードバックが得られており,意外にもこの先,大きな勢力として成長していくのではないかという気配も見えてきている。
 そのうえAndersson氏のように,GPUメーカーからも一目置かれる大手スタジオのスタープログラマーから,NVIDIAやそれ以外のGPUメーカーに参画を期待するコメントが出てくると,AMD以外のGPUやGPUコアIPメーカーも,何らかのリアクションを見せる必要に迫られるかもしれない。
 Mantleにまつわる今後の動向からは,目が離せなさそうだ。

AMD Developer Summit 2013 公式Webサイト(英語)

  • 関連タイトル:

    Mantle

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