Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「IDOLY PRIDE」における描画最適化術 / IDOLY PRIDE Graphics Optimization

「IDOLY PRIDE」における描画最適化術 / IDOLY PRIDE Graphics Optimization

CA.Unity#2で発表した資料になります。
ScriptableRendererPipelineと、描画APIを利用したパフォーマンスチューニングについて紹介します。

QualiArts

July 13, 2021
Tweet

More Decks by QualiArts

Other Decks in Technology

Transcript

  1. アジェンダ • 実行環境 • ScriptableRenderPipeline(SRPBatch) • 描画API ◦ レンズフレア(DrawProcedural) ◦

    ボリュームライト(DrawMeshInstancedProcedural) ◦ 観客(DrawMeshInstancedIndirect)
  2. 実行環境 • Unity2020.3.4f1 • UniversalRenderPipeline 10.5.0 • GPU Lightmapper •

    HDR+Linear Rendering • 対象プラットフォーム ◦ Android→Vulkan(OpenGLES3.1も一応動作…) ◦ iOS→Metal GPU family 3以降(Apple A9) ◦ 5年前のハイエンドがギリギリ動く目安 Unity新機能たくさん かなり攻めてる
  3. UniversalRenderPipeline(SRP) • ScriptableRenderPipelineを拡張したUnityの新 しい描画システム • HDRPと違い、様々な端末で動作するように チューニングされている • RendererFeatureを作成することで簡単に CommandBufferを追加できる

    Legacyではカメラに追加だったので非常に面倒 +SceneViewの扱いが面倒だった • ポストエフェクトはPostProcessPassを複製して 書き換えすることで処理効率化
  4. 軽量化するには? • C#が重すぎる!!(100個くらいのオブジェクトで割とアウト) • C# JobSystem (Burst) = 神 •

    ComputeShader = 超神 • ComputeBufferを描画APIと組み合わせる(SSBO対応必須) Compute >>>…>>> Burst >>>>>...>>>>>C# 体感これくらい
  5. レンズフレア(DrawProcedural) • アイプラではProFlareを使用 • 描画、更新処理はほぼ全て書き換え • DrawProceduralで描画 • 9ms →

    1.6ms(ベンチマークシーン) C# 座標系、画面内判定 Burst 値更新しつつ ComputeBufferに整形 ComputeShader DepthTextureと当たり判定