タイトルの通りですが、複数人で開発していると自分が知らないところでUniversal Render Pipeline(URP)の設定が変更されていて、
久しぶりにMeta Quest実機でビルドしたらFPSが20台まで低下していたので、その原因についての備忘録です。
プロファイラーを見ると描画系が重い事が分かったので、背景をすべて削除して実機で確認してもFPSが低下したままで、非常に悩みました。
今回発覚した原因は以下の個所から確認できます。
各所のファイル名は任意に付けられるものですが、
Assets→Create→Rendering→Universal Render Pipeline→Pipeline Asset(Forward Renderer)
でデフォルトでつけられている名称で表記しています。
ProjectSettings→Quality→Renderingに先ほどの手順で作成できる「UniversalRenderPipelineAsset」がアタッチされています。
「UniversalRenderPipelineAsset」のGeneral→RendererListに「UniversalRenderPipelineAsset_Renderer」がアタッチされています。
この「UniversalRenderPipelineAsset_Renderer」の下にある「Add Renderer Feature」を押して、「Screen Spacce Ambient Occlusion」を追加すると、
以下のようにデフォルトで「New Screen Space Ambient Occlusion」という名前でRenderer Featuresが追加されます。
このScreen Space Ambient Occlusionがとにかく重く、FPSが低下する原因になっていました。
設定の変更で軽くする事はできるかもしれないですが、ひとまずこれを無効化する事で対応しました。
設定を見直す対応をするのであれば、Unity公式の以下のページが参考になるはずです。
Ambient Occlusion
「Unity URP 重い」などで検索をしても既に知っているような情報しか見つけられず、
描画で重いのはわかっていながらもなかなかここにたどり着けませんでした。
最終的には他人のコミットを1つづつ確認していって約1か月さかのぼった所で発見、といった感じでした。
追記:
検証してないので推察ですが、VRだとScreen Space Ambient Occlusionが右目と左目の両方に対して処理が必要なので、2倍のコストがかかって重いのかなと思いました。