動的バッチ処理は、移動するゲームオブジェクトをバッチ処理して ドローコール を削減する ドローコールのバッチ処理 方法です。メッシュと パーティクルシステム のようなランタイムに動的に生成されるジオメトリとでは、動的バッチ処理は異なります。メッシュと動的ジオメトリの内部的な違いについては、メッシュの動的バッチ処理 と 動的に生成されたジオメトリの動的バッチ処理 を参照してください。
ノート: メッシュの動的バッチ処理は、古いローエンドデバイスでのパフォーマンスを最適化するために設計されました。最近の消費者向けハードウェアでは、動的バッチ処理が CPU で行う作業が、ドローコールのオーバーヘッドよりも大きくなることがあります。これはパフォーマンスに悪影響を及ぼします。詳細については、メッシュの動的バッチ処理 を参照してください。
このセクションでは、動的バッチ処理とレンダーパイプラインの互換性についての情報を紹介します。
機能 | ビルトインレンダーパイプライン | ユニバーサルレンダーパイプライン (URP) | HD レンダーパイプライン (HDRP) | カスタムのスクリプタブルレンダーパイプライン (SRP) |
---|---|---|---|---|
動的バッチ処理 | はい | はい | なし | はい |
Unity では、パーティクルシステムなどの動的ジオメトリには常に動的バッチ処理を使用します。
メッシュに動的バッチ処理を使う場合は以下を行います。
Unity は、共通の使用情報 に記載されている条件を満たす場合、動くメッシュを自動的に同じドローコールにバッ チします。
メッシュの動的バッチ処理は、GPU ではなく CPU ですべての頂点をワールド空間に変換して行われます。つまり、動的バッチ処理が最適化となるのは、変換作業がドローコールを行うよりもリソースを消費しない場合のみです。
ドローコールのリソース要件は、多くの要因、主にグラフィックス API に依存します。例えば、コンソールや Apple Metal のような最新の API では、一般にドローコールのオーバーヘッドははるかに低く、多くの場合、動的バッチ処理ではパフォーマンスの向上は望めません。アプリケーションで動的バッチ処理を使用することが有益かどうかを判断するには、動的バッチ処理を使用した場合と使用しない場合で、アプリケーションを プロファイル してください。
シャドウパスに必要なマテリアル値が同じである限り、マテリアルが異なっていてもシャドウキャスターの動的バッチ処理が使用可能です。例えば、複数の木箱に異なるテクスチャを持つマテリアルを使用することができます。マテリアルのアセットが異なっていても、その違いはシャドウキャスターパスには関係なく、影のレンダリング段階で木箱のゲームオブジェクトの影をバッチ処理することができます。
以下のシナリオでは、Unity は動的バッチ処理を全く使えない、または限定的にしか適用できません。
以下のレンダラーは、パーティクルやラインなどのジオメトリを動的に生成し、動的バッチ処理を用いて最適化することができます。
動的に生成されたジオメトリに対する動的バッチ処理は、メッシュに対するものとは異なる動作をします。
この方法は、Unity が 静的バッチ処理 のためにドローコールを送信する方法と似ています。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.