Performance Budget Calculator
Pick your target platform and see a realistic per-frame performance budget.
Target platform & frame rate
Mobile — 30 FPS target
| Metric | Budget |
|---|---|
| Draw calls | ~100 – 150 |
| Triangles on screen | ~150K – 300K |
| Texture memory | ~256 – 512 MB |
| Active rigidbodies | ~20 – 40 |
| Particles on screen | ~200 – 500 |
| Realtime shadow-casting lights | 1 (directional only) |
Batching (static / dynamic / SRP Batcher) matters more here than raw triangle count — draw calls are usually the first bottleneck on mobile GPUs. Leave ~20% headroom for thermal throttling on long sessions.
Mobile — 60 FPS target
| Metric | Budget |
|---|---|
| Draw calls | ~50 – 100 |
| Triangles on screen | ~100K – 200K |
| Texture memory | ~256 – 512 MB |
| Active rigidbodies | ~10 – 25 |
| Particles on screen | ~100 – 300 |
| Realtime shadow-casting lights | 0 – 1 (baked preferred) |
Half the budget of 30 FPS with the same hardware — every millisecond counts. Fill rate is usually the limit: avoid overdraw from large transparent particles and full-screen post-processing, and consider a dynamic resolution scale.
PC / Console — 60 FPS target
| Metric | Budget |
|---|---|
| Draw calls | ~500 – 2000 |
| Triangles on screen | ~1M – 5M |
| Texture memory | ~1 – 4 GB |
| Active rigidbodies | ~100 – 300 |
| Particles on screen | ~2000 – 5000 |
| Realtime shadow-casting lights | ~2 – 4 |
GPU-side (fill rate, shader complexity) and CPU-side (physics, gameplay logic) budgets need to be profiled separately — a 60 FPS target leaves little slack for either side to dominate.
PC — 144 FPS target (competitive / high-refresh)
| Metric | Budget |
|---|---|
| Draw calls | ~300 – 800 |
| Triangles on screen | ~500K – 2M |
| Texture memory | ~1 – 3 GB |
| Active rigidbodies | ~50 – 150 |
| Particles on screen | ~1000 – 2500 |
| Realtime shadow-casting lights | 1 – 2 |
At this frame rate the CPU main thread is the usual bottleneck, not the GPU. Keep Update() work minimal, cache component lookups, avoid per-frame allocations (GC spikes are visible at 7 ms), and use the Jobs system / Burst for anything heavy.
VR — 90 FPS target
| Metric | Budget |
|---|---|
| Draw calls | ~100 – 200 (per eye) |
| Triangles on screen | ~500K – 1M (per eye) |
| Texture memory | ~512 MB – 1 GB |
| Active rigidbodies | ~30 – 60 |
| Particles on screen | ~300 – 800 |
| Realtime shadow-casting lights | 0 – 1 (bake everything you can) |
VR renders twice (once per eye) and has zero tolerance for dropped frames — missing budget causes motion sickness, not just stutter. Standalone headsets (Quest) sit closer to the mobile budgets above. Profile on-device, not in the Editor.
Frame budget = 1000 ms ÷ target FPS. The metric ranges are starting points for a typical URP project, not hard limits — your real budget depends on shader complexity, resolution, and how much CPU time gameplay code needs. Use the Profiler and Frame Debugger to find your bottleneck.
📦 Over budget on draw calls or CPU?
Mesh Baker combines meshes to cut draw calls, and A* Pathfinding Project Pro keeps large numbers of AI agents inside a CPU budget. Both are in our roundup of Asset Store tools worth paying for.