本記事はCraft Egg Advent Calendar 2021の12/16の記事です。
前回の記事は@ce_gassyさんの 新卒エンジニアが業務を行う上で意識したこと でした。
◆ 概要
- Built-in な RP, URP, SRP Batcherの適用とで比較検証を行ってみました。
◆ 環境
- Unity : 2020.3.24f1
- Universal RP(com.unity.render-pipelines.universal) : 10.7.0
- 依存パッケージ
- com.unity.render-pipelines.core : 10.7.0
- com.unity.shadergraph : 10.7.0
- com.unity.mathematics : 1.1.0
- 簡易的な測定を行うためにGraphyを利用しています。
- 依存パッケージ
- ほか
- Windows11
- Core i9-10900F
- GeForce GTX 1050 Ti
◆ 検証の流れ
- Build-in な Render Pipeline で測定環境を構築し測定する。
- Unlit Shaderをメニューから生成する。
- MeshRendererを持つ Prefab(Sphere) と 生成したシェーダを参照する Materialを用意する。
- MonoBehaviour.Start で指定数分 Prefabと Materialを Instantiateさせる。(雑に30000オブジェクトほど Instantiateしてみています)
- URPに切り替えるのみの対応を施し測定する。
- UniversalRenderPipelineAssetをメニューから生成する。
- 生成した UniversalRenderPipelineAssetをデフォルトのまま Graphics設定に反映する。
- Unlit Shaderに対して URPならびに SRP Batcher対応を行い計測する。
◆ 検証結果
-
対応前のベース状態 : 約15fps
-
URPに切り替えるのみ : 約15fps
-
SRP Batcher対応 : 約30fps
◆ 対応内容
- SPARKCREATIVE Tech Blog シェーダーをUniversal Render Pipelineに対応させたかった覚書 を参考にさせていただきました。
- 対応毎に測定しておりましたが、1番負荷が軽減されたのは
CBUFFER_START
〜CBUFFER_END
の記述追加による SRP Batcher対応でした。
- 対応毎に測定しておりましたが、1番負荷が軽減されたのは
◆ まとめ
- 今回はひとまずPCエディタ上で測定しました。
- 検証条件を整理、見直した上でモバイルも測定し効果的であることが実証されたなら、まだ対応していないシェーダーの対応検証を進めようと思います。
明日は@Tomy_0331の記事です!