More Related Content
Similar to Unity2018/2019における最適化事情 (20)
More from Unity Technologies Japan K.K. (20)
Unity2018/2019における最適化事情
- 28. Profiler Reader
• 現在 UnityJapanのgithub上で公開
https://github.com/unity3d-jp/ProfilerReader
• CUIで ログファイル→csv変換を呼び出す事も考慮
• ユーザー側でも独自にcsvを追加することが可能
• UnityEditorのバージョンアップごとにログファイルの
フォーマットがバージョンアップされるので、
ProfilerReaderも都度バージョンアップして対応中
- 41. AndroidでのWorker Threadの調整
• Androidで5.6 -> 2017.4でAnimator等のテストでハイエ
ンド寄りの端末でパフォーマンス劣化があった
• モバイル開発チームで、Android SystraceやUnity
Profilerを行った
• WorkerThreadを作成する際にCPUのLittele Coreの数
を考慮に入れるように処理を変更
• RenderThreadの優先度も変更
- 54. Stripping Scriptable Shader Variants
• Unityではビルド時に余計なShader Variantを自動的に
判別して削っていた
• 2018.2からアプリケーション開発者側でも判別して削
ることが可能になった
https://blogs.unity3d.com/jp/2018/05/14/stripping-scriptable-shader-variants/
- 56. Stripping Scriptable Shader Variants
Shader
SubShader
Pass
Shader情報と
Shader Program
Shaderのステージ(vertex/fragment)、キーワード毎に実体がある。
2018.2からは、ビルドに含むか含まないかをC#のコールバックで
制御できるようになる
- 58. Stripping Scriptable Shader Variants
IPreprocessShadersインタフェースを継承して、
OnProcessShaderの IList<ShaderCompilerData> を
操作して、どのVariantをビルドに含めるか選択する
- 61. LWRP
• Scriptable Render Pipelineの実装の内の一つ
• 2019.3からは Universal RPとなる
• 標準Shaderが、モバイルでも考慮されて作られている
• 描画パイプラインのカスタマイズの幅が大きい
• ただカメラコールバックが使えなくなるなどポストエ
フェクト系は作りなおしが必要になる
- 63. SRP Batcher
• Scriptable Render Pipeline使用状況でかつ、SRP
Batcherに対応したShaderでのみ有効
• Materialのセットアップを描画の最初の時に出来る限り
行い、その後のMaterial切り替えを出来る限り抑える
• GPU Instancingとの共存は出来ない
• Platformによりけりだが、Instancingより速いケース
が多い
https://blogs.unity3d.com/jp/2019/02/28/srp-batcher-speed-up-your-rendering/
- 79. DOTS
• Data Oriented Technology Stack
• NativeContainer,C# JobSystem,Burst,ECSなどのデー
タ志向型のテクノロジーを総称したもの
- 81. C# JobSystem
• Unity 2018.1から利用可能
• Unityが確保したJob用のWorkerThreadを利用して処理
の高速化を図る
• アプリごとのC#処理もWorkerThreadで出来るが、
ManagedHeapにアクセスできない等の制約あり
• 各機能が徐々にC# JobSystem向けのAPIを提供
• ParticleSystem,Physics,Navimesh等
- 86. Burst
• Unity のPackageManagerより配布
• 既にpreview外れている
• ILコードより、もっと効率的なコードを書き出す
• 関数単位で、適応するか選択可能
• 限定された機能のみのC#を高速化する
• 新しいMathライブラリを使う必要あり
https://docs.unity3d.com/Packages/com.unity.burst@1.1/manual/index.html
- 89. ECS
• まだ previewという形で PackageManagerから配布
• 2018/2019という時点では、まだまだ発展途上
• ECSは UnsafeなC#で書かれている
• Burstで高速化されることが前提にある
- 94. Mesh API v2
• 2019.3にて、ランタイムでの動的なMesh生成のための
APIが更新
• C# のGC Allocしないで、動的Meshの生成が可能