Dynamic Batching (ダイナミックバッチング)は、ゲームグラフィックスのレンダリングや最適化(テクニカルアート)において極めて重要となる技術用語です。動いている小規模なオブジェクト(弾丸やシンプルなコインなど)の頂点情報を毎フレームCPUでリアルタイムにグループ化し、ドローコールを削減する自動最適化機能。
現実世界での例え:お客さんを1人ずつ個別のタクシーで送るのではなく、『同じ方向へ向かう人をバスに乗せて相乗り』させる動的相乗り
ダイナミックバッチングは、「同じ目的地(マテリアル)へ向かう複数の小さな荷物(小さなメッシュ)を、出発直前(毎フレーム)に急いで1台のトラック(1回のドローコール)に相乗りさせて送り出す臨機応変な配送システム」です。ただし、毎フレーム「荷物の相乗り先を計算して詰め合わせる作業」をCPUがその場で行うため、荷物が重すぎたり多すぎると、トラックを分けるより詰め合わせ計算(CPU負荷)の方が重くなってしまうというトレードオフがあります。
図:Dynamic Batching (ダイナミックバッチング)の基本的な処理フローと仕組みを日本語表記で分かりやすく図解したインフォグラフィック
詳細な仕組みと動作原理
Project Settingsで「Dynamic Batching」を有効にし、同じマテリアルを使う微小なオブジェクトの頂点をCPUがメモリ上で瞬時に合体させてから1回で描画します。