Version: Unity 6 (6000.0)
Language : English
GPU instancing
Enable GPU instancing

Introduction to GPU instancing

GPU instancing is a draw call optimization method that renders multiple copies of a meshThe main graphics primitive of Unity. Meshes make up a large part of your 3D worlds. Unity supports triangulated or Quadrangulated polygon meshes. Nurbs, Nurms, Subdiv surfaces must be converted to polygons. More info
See in Glossary
with the same material in a single draw call. Each copy of the mesh is called an instance. This is useful for drawing things that appear multiple times in a sceneA Scene contains the environments and menus of your game. Think of each unique Scene file as a unique level. In each Scene, you place your environments, obstacles, and decorations, essentially designing and building your game in pieces. More info
See in Glossary
, for example, trees or bushes.

GPU instancing renders identical meshes in the same draw call. To add variation and reduce the appearance of repetition, each instance can have different properties, such as Color or Scale. Draw calls that render multiple instances appear in the Frame Debugger as Render Mesh (instanced).

Requirements and compatibility

This section includes information about the platform, render pipelineA series of operations that take the contents of a Scene, and displays them on a screen. Unity lets you choose from pre-built render pipelines, or write your own. More info
See in Glossary
, and SRP Batcher compatibility of GPU instancing.

Platform compatibility

GPU instancing is available on every platform. However, the performance benefits of GPU instancing depend on the platform and the GPU you’ve chosen. For example, the performance benefits are more prominent on mobile platforms than on desktop platforms.

Render pipeline compatibility

Feature Universal Render Pipeline (URP) High Definition Render Pipeline (HDRP) Custom Scriptable Render Pipeline (SRP) Built-in Render Pipeline
GPU instancing Yes (1) Yes (1) Yes (1) Yes

Notes:

  1. Only if the shaderA program that runs on the GPU. More info
    See in Glossary
    isn’t compatible with the SRP Batcher. Refer to Make materials incompatible with the SRP Batcher for more information.

Lighting

GPU instancing supports Unity’s Baked Global Illumination system. Unity Standard Shaders and surface shadersA streamlined way of writing shaders for the Built-in Render Pipeline. More info
See in Glossary
in the Built-In Render Pipeline support GPU instancing and Unity’s Baked Global IlluminationA group of techniques that model both direct and indirect lighting to provide realistic lighting results.
See in Glossary
system by default.

Each GPU instance supports global illumination from one of the following sources:

  • Any number of Light ProbesLight probes store information about how light passes through space in your scene. A collection of light probes arranged within a given space can improve lighting on moving objects and static LOD scenery within that space. More info
    See in Glossary
    .
  • One lightmapA pre-rendered texture that contains the effects of light sources on static objects in the scene. Lightmaps are overlaid on top of scene geometry to create the effect of lighting. More info
    See in Glossary
    .
    Note: An instance can use multiple atlas regions in the lightmap.
  • One Light Probe Proxy VolumeA component that allows you to use more lighting information for large dynamic GameObjects that cannot use baked lightmaps (for example, large Particle Systems or skinned Meshes). More info
    See in Glossary
    (LPPV) component.
    Note: You must bake the LPPV for the space volume that contains all the instances.

GPU instancing automatically works with:

  • Dynamic Mesh RenderersA mesh component that takes the geometry from the Mesh Filter and renders it at the position defined by the object’s Transform component. More info
    See in Glossary
    affected by Light Probes.
  • Static Mesh Renderers you bake to the same lightmap texture. A Mesh Renderer is static in this context if it includes Contribute GI in its Static Editor Flags.
GPU instancing
Enable GPU instancing