GPU instancing is a draw call optimization method that uses a single draw call to render multiple GameObjects that use the same mesh and material. This speeds up rendering when you draw things that appear multiple times in a scene, for example, trees or bushes.
GPU instancing is a built-in functionality of GPUs. Each copy of the mesh is called an instance. Each instance can have different properties, such as color or scale.
The performance benefits of GPU instancing depend on the platform and the GPU. For each draw call, Unity has to collect, combine, and upload properties from various memory locations, so the performance overhead might outweigh the benefits. The performance benefits are better on mobile platforms than on desktop platforms.
To use GPU instancing, refer to Enable GPU instancing for a prebuilt material.
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.
For more information on migration, refer to Migrating from the Built-In Render Pipeline to the Universal Render Pipeline and Render pipeline feature comparison.
GPU instancing is compatible with all Unity render pipelines, with the following limitations:
For information on draw call optimization methods you can use instead of GPU instancing, refer to Choose a method for optimizing draw calls.
GPU instancing supports the following types of GameObject:
The following meshes are compatible if you use prebuilt materials:
The following shaders support GPU instancing:
To create a custom shader that supports GPU instancing, refer to the following: