The 3D Handbook
Key term

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.

productionperformanceoptimisation

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).

Horizontal bars on a millisecond scale from 0 to 30. 30 fps is 33.3 milliseconds; 30 fps on mobile with 35 percent idle is about 22 milliseconds, shown in orange with a dashed idle section; 60 fps is 16.7; 72 hertz VR is 13.9; 120 fps is 8.3.
Frame budgets at common targets. On mobile, Unity recommends leaving about 35% of the frame idle to control heat, which turns a 33.3 ms budget into about 22 ms.Diagram by the handbook author

#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).

One system's slice of a budget, made public. Epic's Fortnite team had "four milliseconds for dynamic global illumination and reflections combined", and moved Lumen's work onto the async compute pipeline, shown here, to make "better use of the GPU's computational power".Epic Games, Unreal Engine tech blog

#Frame budgets and art

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

  1. Unity Technologies · Best practices for profiling game performance · Unity · article · accessed 2026-10-21
  2. Valve Developer Community · Budget · Valve Developer Community · docs · accessed 2026-10-21
  3. Epic Games · Stat Commands in Unreal Engine · Unreal Engine Documentation · docs · accessed 2026-10-21
  4. Michal Valient (Guerrilla Games) · The Rendering Technology of Killzone 2 (GDC 2009) · Guerrilla Games, 2009 · talk · accessed 2026-10-21

Also consulted

Last updated 2026-10-22