目次
Unity Profilerのアップデート
以下の6つのアップデートについて具体例を豊富に用いて解説しています。
- Profilerのフレーム上限数の引き上げによる可読性の向上
- Hierarchy Viewの Thread対応によってTimeline表示に切り替えなくてもMainThread以外のスレッドの処理も閲覧できるようになった点
- 実機上で Profilerのログファイルの書き出しが可能になる Profiler.SetAreaEnable
- IL2CPPでも Deep Profilingに対応した点
- Profilerで切り分けられる原因の幅を広げる FrameMetaData
- Profiler上での CreateGPUProgramの改善
講演スライド7ページ目では、Profilerのフレーム上限数が2,000フレームでも足りない方向けの非公式エディタ拡張について言及され、講演スライドの20ページ目では CreateGPUProgramの具体的な対策が紹介されています。
Profiling関連の Packageアップデート
下記2つの新機能について具体的に解説しています。
- PackageManagerに正式に入ったProfile Analyzer
- Profilerのログファイルを直接読み込んでサマリーをcsvで生成するProfiler Reader
既存機能のアップデートで最適化されたAPI
以下の4つのアップデートについて細かく丁寧に解説しています。
- AnimatorのGameObject非アクティブ時のリセット対策
- CPUでMesh結合処理をせずに済むため負荷を低く抑えられる GPU Instancing
- TerrainのGPU Instancing対応
- ParticleSystemの GPU Instancing対応
- Androidでの WorkerThreadの調整
- Unityの各バージョンと PhysXのバージョンの対応
また、ParticleSystemを GPU Instancing対応させる際に必要な Shader側の対応については、講演スライドの 39〜40ページで具体的に紹介していますのでご一読ください。
描画系の新機能
以下の4つの新機能について導入時の注意点と共に解説しています。
- GPU負荷が高い時に解像度を下げることでフレームレートを担保する Dynamic Resolution
- 不要な Shader Variantを自分で判別して削除できる Stripping Scriptable Shader Variants
- 描画パイプラインのカスタマイズの幅が大きい LWRP (Universal RP)
- Materialの切り替えを出来る限り抑える技術の SRP Batcher
なお、Stripping Scriptable Shader Variantsについて講演スライドの55〜59ページで具体的なケースを図解を用いて解説しています。
描画系以外の新機能
以下の注目の6つの新機能について詳しく解説しています。
- 不要な処理をループから排除することができる PlayerMainLoop
- Unity2019で PlayerMainLoopに追加された OnDemandRendering.renderFrameInterval
- GCを一定時間発生させなくするなどの制御を可能にする APIである GarbageCollector
- GC処理を少しづつ走らせることで大きなスパイクを回避する Incremental GC
- DOTS
- メモリのnew/DisposeをC, C++のように自前で管理できる NativeContainer
- Unityが確保した Job用の WorkerThreadを利用して処理の高速化を図る C# JobSystem
- 複数の Transformのrotation/positionを並行して操作できる IJobParallelForTransform
- ILコードよりも効率的なコードを書き出して C#を高速化する Burst
- データの連続性を考慮した新しいオブジェクト制御システムである ECS
- C#の GC Allocをすることなく動的Meshの生成が可能になった Mesh API v2
講演スライドのご紹介
PlayerMainLoop: 68〜71ページで具体例を図解で解説しています
IJobParallelForTransform: 83~84ページで図解で詳しく解説しています
91~93ページでは NativeContainer, C#, JobSystem, Burst, ECSの具体的な相関関係が図解で解説されています。
注目度が高い Unity2018と Unity2019の最適化を理解しやすい構成になっている講演です。ぜひご覧ください。
Unity2018/2019における最適化事情
なお、本講演の関連講演として以下の2つの代表的な講演のアーカイブとスライドも公開されておりますので、併せてご覧ください。
一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
講演スライド
講演アーカイブ