Frame budgets
The time available to produce one frame, 1000 ms divided by the target frame rate. Everything in the game, art included, has to fit inside it.
A frame budget is the time the game has to produce one image. The arithmetic is fixed: Unity's guide puts it as "less than 33.33 ms per frame (1000 ms / 30 fps)" for 30 fps, and "16.66 ms per frame (1000 ms / 60 fps)" for 60 fps (Unity: Best practices for profiling game performance). Gameplay, physics, animation, audio and rendering all share that time.
performance and profiling explains how to measure. This page is about the budget itself: the numbers, how they are split, and what they mean for art.
#The numbers
| Target | Milliseconds per frame |
|---|---|
| 30 fps | 33.3 ms |
| 60 fps | 16.7 ms |
| 72 Hz (VR) | 13.9 ms |
| 90 Hz | 11.1 ms |
| 120 fps | 8.3 ms |
The values are 1000 ÷ frame rate. Valve's wiki gives the same 16.6 ms and 33.3 ms, calling 60 fps "the optimal and recommended figure" and 30 fps "the lowest acceptable figure" (Valve Developer Community: Budget).
#Mobile devices and heat
On phones, a game should not use the full frame time. Unity's advice: "leave a frame idle time of around 35%" to "combat device thermal issues over extended play times", which leaves a 30 fps mobile game a budget of about 22 ms per frame (Unity: Best practices for profiling game performance).
#VR and player comfort
Unity notes that "A consistently high frame rate in VR games is essential to avoid causing nausea or discomfort to players" (Unity: Best practices for profiling game performance). VR budgets are both smaller and less forgiving.
#How the budget is split
The frame is not one block of time. Work runs on several threads and the GPU at once, and "A project's performance is bound by the chip and/or thread that takes the longest" (Unity: Best practices for profiling game performance). Unreal's stat unit shows the main parts: Frame, Game (game thread), Draw (render thread), GPU and RHIT (the RHI thread) (Unreal Engine Documentation: Stat Commands in Unreal Engine). If Frame is close to Draw, "the game's performance is likely being bottlenecked by the rendering thread" (Unreal Engine Documentation: Stat Commands in Unreal Engine). Measure in "a non-debug build" (Unreal Engine Documentation: Stat Commands in Unreal Engine).
For art, the GPU part usually matters most. Valve: "In most situations, it is graphics processing that takes up the majority of a budget" (Valve Developer Community: Budget). Source's built-in tool for watching it is the console command showbudget (Valve Developer Community: Budget).
#Frame budgets and art
- Everything costs time. Draw calls, overdraw, shadow-casting lights, expensive materials and dense geometry all spend milliseconds. See draw calls, overdraw, polygon and triangle budgets and real-time lighting.
- Worst case rather than average. A budget is broken by the busiest view, not the typical one. Profile the densest spot of your level.
- Budgets also exist in memory. Unity's guide ends a profiling pass by checking "that the application is also within its memory budget" (Unity: Best practices for profiling game performance). See texture memory.
#Related pages
performance and profiling · texture memory · draw calls · overdraw · polygon and triangle budgets · level of detail · real-time lighting · the technical artist
#Further reading and watching
References
- · Best practices for profiling game performance · Unity · article · accessed 2026-10-21
- · Budget · Valve Developer Community · docs · accessed 2026-10-21
- · Stat Commands in Unreal Engine · Unreal Engine Documentation · docs · accessed 2026-10-21
- · The Rendering Technology of Killzone 2 (GDC 2009) · Guerrilla Games, 2009 · talk · accessed 2026-10-21
Pages that link here
- Real-time vs. offline rendering Topic
- Polygon and triangle budgets Topic
- Detail maps and macro variation Topic
- Time of day Key term
- Performance and profiling Topic
- Texture memory (VRAM) Key term
- The technical artist Topic
- Exercise: lighting one scene four ways Exercise
- Postmortems worth reading Reference
Last updated 2026-10-22