自動生成マップなどUnityのデフォルト機能では最適化が難しいようなゲームを扱っている方
ComputeShaderなどGPUを活用したシステムを触ったことがある方
ComputeShaderを利用したオクルージョンカリングの実装方法を学ぶことで、自動生成や破壊可能なマップでも最適化を行えるようになること
今回のオクルージョンカリングシステムのメリットとデメリットを知ることで、最適化の選択肢を増やすことができる
Unityのデフォルトの機能に頼らない最適化が可能であることを知ることで、より柔軟かつ効率的にパフォーマンスを向上が可能であることを知ることができる
最初に、本ゲームは屋内で対戦するオンラインFPSゲームであることや、対戦する建物のマップを自動生成すること、建物内のほとんど全ての壁や床を壊せることなど、本ゲームでの要件や、ComputeShaderやオクルージョンカリングなど今回のセッションに必要な基礎知識を説明します。
次に、Unityのオクルージョンカリングはベイクが必要で自動生成とは相性が悪いことや、ゲーム中にオブジェクトを削除すると描画がおかしくなるなど、Unityデフォルトの問題点と、ComputeShaderによる独自実装によってそれらを解決できることを説明します。
また、OcclusionQueryや階層的Zバッファなどの今回採用しなかった手法と、今回採用したComputeShaderとバウンディングボックスとレイによる可視判定を行うオクルージョンカリングシステムについて、それぞれのメリットとデメリットを表にまとめてわかりやすく説明し、採用した理由を説明します。
そして、実際に実装したコードについて解説を行います。全体的な設計や、OccluderやOccludeなどocclusion cullingを実装する上で必要な概念、主要なコード部分について解説します。今回実装したコードは、整理をしたうえでGithub上でMITライセンスで公開を予定していますので、聴講者はそれを見ながら講演を聞くこともできます。
最後に、このシステムについて「描画が正常にされないことがある」などのデメリットと、エディタ拡張でそれを解決する方法について説明します。