VRゲームでパフォーマンスが出るように改善

 2016年8月24日~26日の3日間、パシフィコ横浜で開催された、日本最大級のコンピュータエンターテインメント開発者向けカンファレンス“CEDEC 2016”。2日目に開催されたセッション“UE4 VRのロードマップ”のリポートをお届けしよう。

 本セッションで講演を行うのは、Epic Games Support EngineerのJoe Conley(ジョー・コンリー)氏。Unreal Engine 4のVR作品対応に関する最新情報が紹介された。では、セッション内容をお届けする。

Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_01
▲Epic Games Support EngineerのJoe Conley(ジョー・コンリー)氏

 まずは、Unreal Engine 4の進捗について。Epicでは実際にゲームを開発し、それをテストケースとして、エンジンの改善や最適化を行っている。実際に開発している作品として、『Bullet Train』が紹介された。(参考記事はこちら

 本作を開発するうえで、いくつかの新機能を搭載。ひとつは、不可視のジオメトリをカリング(描写しないこと)し、見えるところにのみポストプロセス(アンチエイリアスやブラー、被写界深度などのエフェクト)を適用する機能。見えない部分は描画しないことで、エンジンの描画速度を向上させている。プラットフォームによって異なるが、たとえばPSVRでは1.0msを節約できる。「小さい数字に思えるかもしれないが、状況によっては効果が大きい」(コンリー氏)。

Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_02
Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_03
▲メッシュを使って、見えるピクセルのみにポストプロセスをかける。

 「VRではゲームの反応速度もかなり大切です」とコンリー氏。レイテンシーを改善するため、GPUスレッドの作業を開始する直前に、カメラ、アタッチメント、モーションコントローラーなどを更新し、できる限り反応を早く感じられるよう改善。60Hzのプラットフォームでは大きな違いが出るそうだ。

Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_04
▲4.11でカメラシステムを完全に書き換え、大きく改善。
Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_05
▲レイテンシーの改善。上にある赤い線が以前のもので、緑の線が改善後のレイテンシー。

 もうひとつの重要な最適化が、INSTANCED STEREO RENDERING。これは両目用の画像のメッシュを同時に描画するもので、CPUとGPUの時間を節約できるそうだ。PCおよびPS VRでのみ有効だが、近い将来にモバイルプラットフォームでも対応予定。

 ただし、クリッピングを頂点シェーダーで行うのは、PS4にはあまり向いていないとのこと。そこで、PSVRでは、マルチ・ビューという異なるアプローチで最適化。こちらは4.13から実装予定だそうだ。「モバイルも、PS VRと似たような実装になる」(コンリー氏)。

Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_06
Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_07
▲従来は片目ずつ映像を描画していたが、両目の映像を同時に描画するよう改良。

 PSVR向けでは、アーリーZパスも改善。以前は、スタティックメッシュのみ対応してため、最大限に活用できていない状況だった。そこで、ダイナミックメッシュにも対応。ドロー時間はわずかに増えたが、GPUのコストは大きく下がったため、「トータルでは改善された」(コンリー氏)。

Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_08
▲アーリーZパスの改善。

 Unreal Engine 4.12では7つのプラットフォームに対応。標準ですべてに対応しているため、開発側で何かをすることなく、各プラットフォームで実行できるとのこと。「今年はVR元年と言われているが、インストールベースはまだ少ない。開発者にとっては、できるだけ多くのプラットフォームへ、簡単にリリースできることが大切」とコンリー氏は述べる。

Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_09
▲最近発表された“Google Daydream”にも対応。Googleと共同で開発した映像も紹介された。まだ全貌が見えないプラットフォーム“Magic Leap”のデモ動画も、UE4で作成されたそうだ。

VRエディタを使い、VR画面で直接ゲーム制作!

 ここからは、エンジンおよびフレームワークにおける新機能の紹介。VRでは高フレームレートを維持することが大切で、GPUだけではなく、CPUのパフォーマンスも重要。そのため、処理が重い部分は、ブループリントからC++へ変換することをオススメしてきたそうだ。

 4.12では、ブループリントからC++への自動変換ツールを実験的に搭載。こちらはパッケージ化する際に変換するため、編集は扱いやすいブループリントで、実際のランタイムでは、C++のパフォーマンスを得られるメリットがあるとのこと。「かなりフレキシブルに使える」とコンリー氏。

Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_10
▲C++への自動変換機能を搭載。まだ実験段階で、将来的にはもっとパフォーマンスが向上するとのこと。

 フレームレートを維持するためには、「ターゲットとするプラットフォームのパワーに応じてスケーリングすることも重要」とも述べた。そのために、リアルタイムにスケーリングを変更する機能を搭載。「フレームレートをキープしながら、リッチな映像を実現できる」そうだ。

Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_11
▲プラットフォーム側からタイミング情報を得て、リアルタイムにスケーリングを調整。
Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_12
▲実写とVRの動画を混ぜたミックスリアリティ(MR)にも着目。これは、VRゲームの宣伝でかなり役立つため、このような動画を作れる機能を追加予定とのこと。

 続いて、レンダリングについて。こちらは『Bullet Train』を例に、VRで高品質な映像を実現する機能、およびテクニックが紹介された。

 「『Bullet Train』では、デスクトップ ディファード レンダラを使用してゲームを作成」とコンリー氏。ディファード レンダラ(陰影計算を遅らせるレンダリング手法)はGBufferにある多くの情報を活用し、エフェクトを活用してリッチな映像を作成できるそうだ。

 たとえば、『BULLET TRAIN』で登場した、看板が床に反射している図。こちらは反射を計算して描画しているわけではなく、看板のモデルを利用した板ポリゴンを看板の下に配置し、反射らしく見えるようにゆがみを加えて、描画しているそうだ。「このエフェクトを実現するためのマテリアルは、かなり簡単」(コンリー氏)。同様のテクニックは、キャラクターが床に反射する映像でも使用。こちらは足の回転に対応するため、いくつかのポーズを用意し、ブレンドしたそうだ。

Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_13
▲床に映り込む看板の映像は、反射を計算しているわけではなく、簡単な処理で“それっぽく”再現している。
Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_14
▲同様のテクニックで、キャラクターの映り込みも再現。

 電車内でのライティングにも、GBufferを利用している。もともとは70以上の動的ライトを使用してシーンを作成したが、そのまま使用したのでは処理が重すぎる。そこで、事前に作成したライトとシャドウのテクスチャを利用して、ライティングのフェイクを作成。こちらをワールドに投影して、電車の外から社内に入り込む光を再現しているとのことだ。

Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_15
▲電車内の光源処理は、フェイクを作成してテクスチャで再現。

 「ディファード レンダラを利用すれば、ビジュアルインパクトが強いVRゲームを作れると思っている」とコンリー氏。ただし、すべてのVR体験で有効ではなく、トレードオフとなるケースも存在する。

 そこで、デスクトップ フォワード レンダラを発表したとコンリー氏。両者で特徴は異なり、たとえばフォワード レンダラはより早く上手にスケールダウンできるが、ディファード レンダラのすべての機能はないとのこと。なぜうまくスケールダウンできるかは、AA(アンチエイリアス)でMSAAを使っていることが理由だそうだ。「より小さくスケーリングしても、最終的なイメージクオリティはそれほど低下しない」(コンリー氏)。「さらにMSAAは4x、8xなどパスを変更できるため、解像度を低くしてパスを上げたり、逆に解像度を高くしてパスを下げるなど、自身のコンテンツに合わせて対応できる」そうだ。

Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_16
▲2タイプのレンダラ。どちらがいいというワケではなく、それぞれ一長一短があるそうだ。
Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_17
▲使用するAAが異なるため、スケーリングの特徴も変化する。

 「ディファードレンダラは、多機能だが使いこなすのは難しい」とコンリー氏。なお4.13にはフォワード レンダラがあるが、「個人的には、使うにはまだ早いと思います」とのこと。「4.13ではいくつかの機能しかなく、最適化のプロセスはまだ始まっていないので、パフォーマンスはまだ発揮できない。4.14では、もっと使えるものになるだろう」とコンリー氏は語った。

 続いてはコンリー氏が「個人的にもっともおもしろいと思う」コンテンツである、VRエディタについて。

Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_18
▲VRエディタは、スタンフォード大学とのコラボで完成したそうだ。2チームが同時に開発していたが、両者ともアプローチの仕方が異なったとか。

 開発のきっかけは、VRゲームのレベル(ステージ)を作成するとき、最初と最後の20パーセントにおける時間を短縮したいと思ったそうだ。これは、PCで操作してレベルを作成し、今度はVRヘッドセットをかぶってテストプレイ。その後、VRヘッドセットを脱いで、またPCで調整……というサイクルで開発してきた。この、毎回VRヘッドセットを着脱する時間が無駄で、生産効率が下がる。

 また、第二の対象ユーザーとしている、プロではないクリエイターに向けた展開でもある。たとえばこれからインディーでVRに参入したいと思っている人でも、VRエディタは使いやすいとのこと。

 このエディタは4.12からプレビュー版を同梱。実際に利用したフィードバックを得て、今後の方向性に役立てるそうだ。

Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_19
▲ふたつのモーションコントローラーを使用し、VR画面で直接オブジェクトを編集できる。

 VRエディタの、つぎのステップについても紹介された。まずは編集ギズモの改善。つかめる範囲を大きくし、回転や配置の操作性を改良し、もっと使いやすくなったそうだ。

 また、従来のUIをVRでインタラクションするのは難しかったそうだが、これを解決するために、ウィジェットインタラクションコンポーネントを追加。3D空間に配置しているUMGやSlateウィジェットと簡単にインタラクション可能になった。すでに存在していたUIをエディタで使用することが簡単になったと言う。

Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_20
▲ゲーム空間に浮かぶメニューを、レーザーポインタで操作できる。
Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_21
▲VRエディターを使い、フォリッジを編集したり、テクスチャとメッシュの頂点にペイントすることもできる。

 VRエディタから直接ゲームを開始できるようにもなった。以前は開発かゲーム起動か、どちらかを選んでから開発環境を立ち上げる、という感じだったそうだが、開発画面とゲームを自由に行き来できるため、利便性が向上したそうだ。さらに作成画面では、VRエディタヘッドセットをかぶるだけで、自動的にVR画面に移行する機能も。

Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_22
▲フラッシュライトの機能をモーションコントローラーに追加。ステージの暗い部分の編集作業も行いやすくなった。

 また、UEが使いやすくなっている理由のひとつとして、ドキュメントが充実していることにも触れた。できる限りドキュメントを追加、更新して日本語化している。また付属しているテンプレート(サンプルプログラム)は、ゲーム開発を早くスタートさせるために大きく役立つとコンリー氏。4.13からVRバージョンを搭載し、カメラの設定例やテレポートなど、必須となる共通のタスクがあるため、すぐに作業を開始できるそうだ。

Unreal Engine 4は、VRゲームへの対応にも超積極的だった!【CEDEC 2016】_23

 VRゲームへも意欲的に対応を行うUnreal Engine 4。同エンジンを利用した、リッチなVR作品がたくさん登場することを期待したい。