(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!

    

VRゲームのGPU/CPUパフォーマンスチューニング【Unity】【VR】【SYNC 2022】


このエントリーをはてなブックマークに追加


はじめに

今回は『SYNC 2022』の講演の動画を見て勉強しつつ、

ついでに記事にまとめちゃおうという感じのやつです。


そして、題材にする講演は、

Meta Quest 2の性能を最大限生かしたリッチなグラフィックを実現するには」です!

今年9月にリリースしたVRゲーム『DYSCHRONIA: Chronos Alternate』エピソード1では、Meta Quest 2の性能の最大限に活かした大量の魚群パノラマを体験できます。背景のポリゴン数はシリーズ前作の『ALTDEUS: Beyond Chronos』の3倍以上の中、360度視界で光り輝く魚の群れや巨大なクジラが泳ぐ幻想的な世界のグラフィック表現を実現した方法をご紹介します。 技術的には、ハードでのパフォーマンス測定の結果を踏まえた、解像度やアンチエリアス等のバランス調整や、ブルーム表現を中心に解説します。

こんな人におすすめ:
・VR開発に興味をお持ちの方
・VRタイトルのグラフィック向上を目指されている方

受講者が得られる知見:
・Quest 2のパフォーマンス特性に沿ってリッチなグラフィックを表現するための知見

出演:
山本 順也 (MyDearest株式会社)
尾上 明広 (MyDearest株式会社)


なお、自分が気になった所を抜粋してまとめているため内容に抜けがある点はあしからず。


講演内容

この講演はDYSCHRONIA:CAという現在Meta Quest2向けに配信されているVRゲーム

パフォーマンスチューニングをどうやって行っていったかという内容でした。


Meta Quest2向けのゲームは2画面(両目分)描画する必要がありますし、

最低秒間72回(72FPS)は描画する必要がありますが、


スペック自体が高く、対象端末は一つだけなので

スマホ向けゲームと比べて物凄く辛いという程ではななかったそうです。



GPUのパフォーマンスチューニング

まずGPU側のパフォーマンスチューニングについてですが、

ブルーム(光が綺麗に滲むようなエフェクト)を導入した上で

ある程度の高解像度とパフォーマンスを保つ事を方針としてチューニングしたそうです。


解像度を最大の80%まで落とせば重いシーンでも72FPSを維持できたそうですが、

そもそもMeta Quest2向けにリリースするには解像度を85%以上にする必要があるそうで、

単純に解像度を下げるだけではだめだったそうです。


また、MSAA(マルチサンプルアンチエイリアシング、ジャギーを除去する技術)をなしにすれば

重いシーンでも72FPSを維持できたそうですが、品質に問題が出てしまうため、


MSAAのレベルを2に落とした上で解像度も90%まで下げる事で目標のFPSを達成したそうです。


なお、解像度を上げずとも「解像度感」を高める事は可能だそうです。

例えばモデル側の作りを見直す事でジャギーを減らしたり、


解像度を下げるほど強く出るハイライトは鈍くしたりしたそうです。


負荷というと半透明な物の描画は重くなりがちですが、

VRだと両目分描画が必要になるのでさらに顕著に重くなります。

なので半透明部分を出来る限りポリゴン化し極力減らしたそうです。


FFRという外側の解像度だけ下げる機能もパフォーマンスを上げるには有効ですが、

プラッシュアップなど開発後半に重くなる事を考慮して、

最後の最後まで有効にせず、へそくりとして使ったそうです。



CPUのパフォーマンスチューニング

次にCPU側のパフォーマンスチューニングについてですが、

リリース要件である72FPSを死守するというのが基準です。


まず、uGUIの仕様とVRゲームは相性が悪く、

プレイヤーが動くだけで再計算が走るという許容出来ない負荷を発生させるため、

SpriteやMeshに置き換えて表現したそうです。


さらに、キャラが特定の方向(プレイヤー等)を見るLookAt処理は

Burstに対応させる事でかなり軽量化出来たそうです。


また、XR Interaction ToolkitはUnity公式パッケージなのに激重だそうで、

不要な処理をなくす事で半分以下の処理時間に出来たそうです。


パフォーマンスチューニングの話ではないですが、

最終的にコアが余っていてもったいなかったので、


なんと5000匹以上の大量の魚群を表示するのに使ったそうです。


魚群実装の技術としてはMeta Quest 2やVRの特有のものではなく、

オーソドックスな技術を使ったそうですが、


最初は想定以上に性能が出なかったそうです。


その原因は他機能とのバッティングだったそうで、


最終的にはJobを投げるタイミングを分散させる事で解決したそうです。



おわりに

解像度とMSAAのバランスをとってパフォーマンスを上げることや、uGUIとVRゲームの相性の悪さなど、

Quest2のみならずVR全般で役立つ情報満載で凄い勉強になりました……!