Use the GPU Resident Drawer
The GPU Resident Drawer automatically uses the BatchRendererGroup
API to draw GameObjects with GPU instancing, which reduces the number of draw calls and frees CPU processing time. For more information, refer to How BatchRendererGroup works.
The GPU Resident Drawer works only with the following:
- Graphics APIs and platforms that support compute shaders.
- GameObjects that have a Mesh Renderer component.
Otherwise, Unity falls back to drawing the GameObject without GPU instancing.
If you enable the GPU Resident Drawer, the following applies:
- Build times are longer because Unity compiles all the
BatchRendererGroup
shader variants into your build.
Enable the GPU Resident Drawer
To enable the GPU Resident Drawer, follow these steps:
- Go to Project Settings > Graphics, then in the Shader Stripping section set BatchRendererGroup Variants to Keep All.
- Go to the active HDRP Asset, then in the Rendering section set GPU Resident Drawer to Instanced Drawing.
If you change or create GameObjects each frame, the GPU Resident Drawer updates with the changes.
To include or exclude GameObjects from the GPU Resident Drawer, refer to Make a GameObject compatible with the GPU Resident Drawer.
Analyze the GPU Resident Drawer
To analyze the results of the GPU Resident Drawer, you can use the following:
- Frame Debugger. If the GPU Resident Drawer groups GameObjects, the Frame Debugger displays draw calls called Hybrid Batch Group.
- Rendering Debugger
- Rendering Statistics to check if the number of frames per second has increased, and the CPU processing time and SetPass calls have decreased.
- Unity Profiler
Optimize the GPU Resident Drawer
How much the GPU Resident Drawer speeds up rendering depends on your scene. The GPU Resident Drawer is most effective in the following setups:
- The scene is large.
- Multiple GameObjects use the same mesh, so Unity can group them into a single draw call.
Rendering usually speeds up less in the Scene view and the Game view, compared to Play mode or a final built project.
The following might speed up the GPU Resident Drawer:
- Go to Project Settings > Player, then in the Other Settings section, disable Static Batching.
- Go to Window > Panels > Lighting, then in the Lightmapping Settings section enable Fixed Lightmap Size and disable Use Mipmap Limits.