レギュラーセッション

自動生成マップの描画を高速化!~ComputeShaderを使ったオクルージョンカリングの理論と実装~

講演形式
レギュラーセッション
講演時間
08月23日(水) 13:30 〜 14:30
講演ルーム
第2会場
受講スキル

自動生成マップなどUnityのデフォルト機能では最適化が難しいようなゲームを扱っている方

ComputeShaderなどGPUを活用したシステムを触ったことがある方

得られる知見

ComputeShaderを利用したオクルージョンカリングの実装方法を学ぶことで、自動生成や破壊可能なマップでも最適化を行えるようになること

今回のオクルージョンカリングシステムのメリットとデメリットを知ることで、最適化の選択肢を増やすことができる

Unityのデフォルトの機能に頼らない最適化が可能であることを知ることで、より柔軟かつ効率的にパフォーマンスを向上が可能であることを知ることができる

セッションの内容

最初に、本ゲームは屋内で対戦するオンラインFPSゲームであることや、対戦する建物のマップを自動生成すること、建物内のほとんど全ての壁や床を壊せることなど、本ゲームでの要件や、ComputeShaderやオクルージョンカリングなど今回のセッションに必要な基礎知識を説明します。

次に、Unityのオクルージョンカリングはベイクが必要で自動生成とは相性が悪いことや、ゲーム中にオブジェクトを削除すると描画がおかしくなるなど、Unityデフォルトの問題点と、ComputeShaderによる独自実装によってそれらを解決できることを説明します。

また、OcclusionQueryや階層的Zバッファなどの今回採用しなかった手法と、今回採用したComputeShaderとバウンディングボックスとレイによる可視判定を行うオクルージョンカリングシステムについて、それぞれのメリットとデメリットを表にまとめてわかりやすく説明し、採用した理由を説明します。

そして、実際に実装したコードについて解説を行います。全体的な設計や、OccluderやOccludeなどocclusion cullingを実装する上で必要な概念、主要なコード部分について解説します。今回実装したコードは、整理をしたうえでGithub上でMITライセンスで公開を予定していますので、聴講者はそれを見ながら講演を聞くこともできます。

最後に、このシステムについて「描画が正常にされないことがある」などのデメリットと、エディタ拡張でそれを解決する方法について説明します。

佐藤克海

株式会社Fractal Games

開発部

講演者詳細を開く >

<講演者プロフィール>

北海道情報大学に在籍しながら株式会社Fractal GamesにてFPSゲーム開発に従事。
アンチチートシステムの実装やグラフィック周りの最適化や機能開発の実装を行いました。
また個人ゲーム開発も実施しており、クラウドファンディングやSteamでのリリースを実施しています。
これらの経験を生かしてビジネス分野での知見の提供も行っています。
並行してSuishow株式会社のメタバース開発にてテックリードとして従事。他メンバーの育成やアーキテクチャ設計、プロジェクトマネジメントなどを実施しました。

<受講者へのメッセージ>

私達がゲームを開発する上で直面するのは数々の課題ですが、その中でもパフォーマンスの維持は一段と重要な課題となります。
今回の私のセッションでは、そんなパフォーマンス最適化の一部としてComputeShaderを用いたOcclusionCullingの実装について深く掘り下げます。これらを実装する際に必要となるアルゴリズムの知識やノウハウを共有し、皆様に具体的なイメージをお持ちいただければと思います。

また、私が説明するコードは公開いたしますので、セッション中にすぐ理解できない部分があっても問題ありません。お帰りになってから、自分のペースで動かし、じっくりと理解していただければと思います。

私のセッションを通じて、皆様が新しい最適化の手法に触れ、それが新たな知見やアイディアの種になることを願っています。
閉じる