Documentation

Unity Engine


Unity Engine


Choose a method for optimizing draw calls

Compare the different methods for optimizing draw calls.
Read time 3 minutesLast updated a month ago

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.

Check the number of draw calls

Important
The Built-In Render Pipeline is deprecated and will be made obsolete in a future release.
It remains supported, including bug fixes and maintenance, through the full Unity 6.7 LTS lifecycle.
To check if your scene sends too many draw calls, do any of the following:

Choose optimization methods

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.

Feature

Type

Multithreaded

Recommendation in URP

Recommendation in HDRP

Recommendation in the Built-In Render Pipeline

Scriptable Render Pipeline (SRP) BatcherReduces render state updatesDX12, Vulkan, and compatible console APIs only, if you enable Graphics Jobs.Enable. Refer to SRP Batcher in URP.Enable. Refer to SRP Batcher in HDRPNot supported
GPU Resident DrawerUses GPU hardware instancingYesEnable. Refer to GPU Resident Drawer in URP.Enable. Refer to GPU Resident Drawer in HDRPNot supported
BatchRendererGroup
(BRG) API
Uses GPU hardware instancingYesUse 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 checkbox in materialsGPU hardware instancingNoDisable, to avoid extra shader variants.Disable, to avoid extra shader variants.Enable if you have many instances or lights. Refer to GPU Instancing.
Static batchingCombines meshesNoDisable. 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.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:
  • Use the same materials for different GameObjects as much as possible.
  • If you want to render the same mesh with different properties, for example different colors, use Material Variants instead of multiple materials.
  • Avoid using the
    MaterialPropertyBlock
    API in URP and HDRP.

Use multiple optimization methods

You can use multiple draw call optimization methods in the same scene, but each GameObject uses only some methods depending on its mesh and shader.
If you enable all the features in the table, Unity does the following:
  • Static meshes: combines the meshes with static batching.
  • Dynamic meshes with a compatible shader: uses the SRP Batcher with the GPU Resident Drawer or the BRG API.
  • Remaining meshes with a compatible shader: uses GPU Instancing.

Additional resources