Hyper Casual Games 3D Shader,Unity,URP UPRの様々なバッチングについてまとめ

UPRの様々なバッチングについてまとめ

UnityのURPの機能でSRP BacherDynamic Batching などまとめてみました。

  • GPU Instancing
  • SRP Bacher
  • Dynamic Baching
  • Static Baching

GPU Instancing

https://docs.unity3d.com/ja/Manual/GPUInstancing.html
・同じマテリアル且同じメッシュのオブジェクトをまとめて描画する機能
・使用するにはマテリアルにEnable GPU Instancingを設定
・そのシェーダーのシェーダーバリアント数が倍増する
・違うメッシュに適用できない
・Skinned Meshは使えない
・Billboardのパーティクルは使えない。メッシュパーティクルは使える。ParticleSystemにEnable GPU Instancingを設定する必要があります。

説明:https://docs.unity3d.com/Manual/PartSysInstancing.html

SPR Batcher

https://docs.unity3d.com/Manual/SRPBatcher.html

日本語:https://blogs.unity3d.com/jp/2019/02/28/srp-batcher-speed-up-your-rendering/
・同じシェーダーバリアントのマテリアルの違うメッシュてもまとめて描画する機能
・使用するにはURP設定ファイルのSPR Batcherをチェックすること
・シェーダーはSPR Batcherに対応しないと使えません。

(シェーダーはSPR Batcherのcompatibleやnot compatibleを表示する)
・シェーダーのシェーダーバリアント数が多いと効きにくいです。
・違うメッシュに適用できます。
・Skinned Meshは使える(Unity 2019.3.0 Alpha 5から)
・メッシュやBillboardのパーティクルは使えません。


Dynamic Batching

https://docs.unity3d.com/ja/Manual/DrawCallBatching.html
・同じマテリアルのProperty入力一致の小さいメッシュのオブジェクトをまとめて描画する機能
・使用するにはURP設定ファイルのDynamic Batchingをチェックしましょう。
・CPU 上でゲームオブジェクトのすべての頂点をワールド空間に変換することによって機能するので、このCPU処理がドローコールより重い場合使う利点がありません。
・ライトマップ付きオブジェクト 、マルチパスのシェーダーは使えない。プラスとマイナススケールのオブジェクトは一緒にバッチ処理できません。
・メッシュとBillboardのパーティクルは使えます。

Static Batching

https://docs.unity3d.com/ja/Manual/DrawCallBatching.html
・右上のStaticのBatching Staticを設定した同じマテリアルのメッシュに適用できます
・ドローコールは減らせるが、メモリ消費量が増える
・ビルドの時点でゲームオブジェクトのすべての頂点をワールド空間に変換するとによって機能するので、アプリのサイズが増える
・大量な同じメッシュのバッチングには向かない、バッチングできたメッシュを全オブジェクトに適用するからメモリ消費が増える

・シェーダーバリアントの判別はマテリアルのキーワードリストで判別している為
同じ設定のマテリアルがあっても、別シェーダーのキーワードが残ると違うシェーダーバリアントと判別されてバッチ処理が分かれることになります。
・バッチ処理できるマテリアルを一気に処理することではなく、決まった順番バッチ処理していくので違うシェーダーバリアントのマテリアルが混ざるとバッチ処理が分断されます。
・影のレンダー処理もバッチ処理できるが、こちらは同じシェーダーバリアントでもバッチ処理しないことがあります。
幸い影はレンダーで生成しないように設定できるので、影響の少ない影を生成しないようにすれば軽くなる(キャラの顔、壁についてるもの、小物など)
・MeshRendererとSkinnedMeshRendererは同じマテリアルでも一緒にバッチ処理できない
・シェーダーがSRP Batcherサポートしても SpriteRendererには効かないようです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Related Post

MK TOON – STYLIZED SHADERMK TOON – STYLIZED SHADER

MK Toonは簡単に言えば、 セルルック、スタライズルック、ランプルックなど様々なToon表現ができるシェーダーです。 もっと簡単にいえば、アニメやアメコミ、漫画、みたいな質感が作れるシェーダーです。 アーティストフレ […]

UNITYの便利な基本操作UNITYの便利な基本操作

UNITY初心者が最初に知っておきたいシーン内の移動で便利な機能をまとめてみました。 長年使っている人でも意外と知らない方もいましたので知っていると嬉しい機能です。 目次 目次 選択したオブジェクトをフォーカス 矢印のグ […]