Use draw call optimization if the CPU sends too many draw calls to the GPU, which is also known as being CPU-bound. For more information about draw calls, refer to Introduction to optimizing draw calls.
To check if your scene sends too many draw calls, do any of the following:
The supported and recommended methods for optimizing draw calls depend on whether you use the Universal Render Pipeline (URP), the High Definition Render Pipeline (HDRP), or the Built-In Render Pipeline (BIRP).
| Feature | Type | Multithreaded | Recommendation in URP | Recommendation in HDRP | Recommendation in the Built-In Render Pipeline |
|---|---|---|---|---|---|
| Scriptable Render Pipeline (SRP) Batcher | Reduces render state updates | No. | Enable. Refer to SRP Batcher in URP | Enable. Refer to SRP Batcher in HDRP | Not supported. |
| GPU Resident Drawer | Uses GPU instancing. | Yes. | Enable. Refer to GPU Resident Drawer in URP | Enable. Refer to GPU Resident Drawer in HDRP | Not supported. |
BatchRendererGroup (BRG) API |
Uses GPU instancing. | Yes. | Use the GPU Resident Drawer instead, except for advanced use cases. | Use the GPU Resident Drawer instead, except for advanced use cases. | Not supported. |
| GPU Instancing | Uses GPU instancing. | No. | Disable, to avoid extra shader variants. | Disable, to avoid extra shader variants. | Enable if you have many instances or lights. Refer to GPU Instancing. |
| Batching | Combines meshes | No. | Disable. Static batching isn’t compatible with the BRG API or GPU Resident Drawer. | Disable. Static batching isn’t compatible with the BRG API or GPU Resident Drawer. | Enable static batching. Dynamic batching is no longer recommended. Refer to Batching. |
If you have many instances or lights, you can also use optimize mesh rendering using level of detail (LOD).
To get the best results from any draw call optimization method, do the following:
MaterialPropertyBlock API in URP and HDRP.You can use multiple draw call optimization methods in the same scene, but each GameObject uses only one of the following methods, in this priority order:
BatchRendererGroup API.