[URP] Unlock 60 FPS: Renderer Performance & Draw Call Reduction
Solution
Unity 2021.3.x - Unity 6.3.x
Published Tue, Mar 17
The application exhibits a rendering bottleneck where the frame rate is locked at a suboptimal 30 FPS. Profiler analysis confirms that Update logic is efficient, but the DrawCalls count and real-time lighting overhead in the Universal Render Pipeline are exceeding the frame budget for a 60 FPS target.
To achieve a stable 60 FPS, rendering overhead must be reduced by optimizing how the engine handles geometry and light.
-
Consolidate environment prefabs. By merging static objects into a single
MeshRendereror utilizing theStatic Batchingflag, the total DrawCalls are reduced as the GPU processes the environment as fewer combined meshes. -
Implement
Lightmappingfor static geometry. Pre-calculating lighting information offloads the calculation of shadows and bounce light from the GPU to a texture, significantly lowering the performance cost compared to real-time solutions. -
Set the
Lightcomponent Mode toMixed. This allows your script to maintain dynamic lighting for moving characters while leveraging the DrawCalls efficiency of baked lighting for the static environment.
Additional Tips
- Enable the
SRP Batcherin yourURP Assetto further optimize DrawCalls for compatible shaders. - Use the
Frame Debuggerto identify redundant draw operations that can be batched or culled. - Verify that
Occlusion Cullingis enabled to prevent rendering objects hidden behind other geometry.
TL;DR
Consolidate environment geometry to minimize DrawCalls and utilize baked lighting to offload GPU cycles in the Universal Render Pipeline.
Related Posts Haven't quite found a solution to your problem? We think these posts might help you.
Content inspired by a Unity discussion post.