Version: Unity 6.0 (6000.0)
言語 : 日本語
ドローコールのバッチ処理
Set up GameObjects for batching

ドローコールのバッチ処理の概要

ドローコールのバッチ処理は、メッシュを結合することで、より少ないドローコールでレンダリングできるようにする ドローコールの最適化 方法です。Unity には 2 つのビルトインのドローコールのバッチ処理方法があります。

  • 静的バッチ処理: 静的 ゲームオブジェクトを結合し、まとめて描画します。
  • 動的バッチ処理: 小さいメッシュの頂点を CPU 上で変換して類似したものをグループ化し、1 回のドローコールで描画します。

Unity のビルトインのドローコールバッチ処理は、手動でメッシュをマージするよりもいくつかの点で優れています。特に、メッシュを個別にカリングできる点です。ただし、欠点もあります。静的バッチ処理ではメモリーとストレージのオーバーヘッドが発生し、動的バッチ処理では一定程度の CPU オーバーヘッドが発生します。

レンダーパイプラインの互換性

機能 ユニバーサルレンダーパイプライン (URP) HD レンダーパイプライン (HDRP) カスタムのスクリプタブルレンダーパイプライン (SRP) ビルトインレンダーパイプライン
Static Batching はい はい はい はい
Dynamic Batching はい いいえ はい はい

制限

多くの場合、透明シェーダーはメッシュを後方から手前の順にレンダリングする必要があります。Unity では透明なメッシュをバッチ処理するために、まずメッシュを後方から手前の順に並べ、それからバッチ処理を試みます。メッシュを後方から手前に向かってレンダリングする必要があるため、通常、透明なメッシュには不透明なメッシュほど多くのバッチ処理を行うことはできません。

Transform コンポーネントに対称的な値を持つゲームオブジェクト同士には、動的なバッチ処理を適用することができません。例えば、あるゲームオブジェクトのスケールが 1 で、別のゲームオブジェクトのスケールが –1 の場合、Unity はそれらをまとめてバッチ処理することができません。

ドローコールのバッチ処理を使用できない場合、互いに近いメッシュを手動で結合することが適切な代替方法となり得ます。メッシュの結合の詳細は、メッシュの結合 を参照してください。

注意: C# スクリプトから共有マテリアルプロパティにアクセスする場合は、Renderer.material ではなく、Renderer.sharedMaterial を必ず使用してください。Renderer.material はマテリアルのコピーを作成し、そのコピーをレンダラ―に割り当てます。これにより、Unity がそのレンダラーのドローコールをバッチ処理するのを防ぎます。

ドローコールのバッチ処理
Set up GameObjects for batching