UnityRef is currently in early development. Some features may be incomplete and/or not functioning.

UNITYREF

Your Pit Stop For Solving ANYTHING in Unity

optimization

[URP] Unlock 60 FPS: Renderer Performance & Draw Call Reduction

Solution

renderingperformancelightingoptimization

Unity 2021.3.x - Unity 6.3.x

Published Tue, Mar 17

Issue

 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.

Explanation

To achieve a stable 60 FPS, rendering overhead must be reduced by optimizing how the engine handles geometry and light.

  1. Consolidate environment prefabs. By merging static objects into a single MeshRenderer or utilizing the Static Batching flag, the total DrawCalls are reduced as the GPU processes the environment as fewer combined meshes.

  2. Implement Lightmapping for 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.

  3. Set the Light component Mode to Mixed. 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 Batcher in your URP Asset to further optimize DrawCalls for compatible shaders.
  • Use the Frame Debugger to identify redundant draw operations that can be batched or culled.
  • Verify that Occlusion Culling is 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.