Performance and profiling
How to measure where a frame's time goes, tell a CPU-bound scene from a GPU-bound one, and use Unreal's stat commands and Insights, Unity's Profiler and Frame Debugger, RenderDoc and PIX to find what to fix.
Profiling is measuring where the time in each frame actually goes, so that you fix the real problem instead of the one you guessed. Epic's documentation frames the first question plainly: developers "want to determine if a bottleneck (negative performance impact) exists in the Game thread, in the Draw (rendering) thread, or on the GPU" (Unreal Engine 5.8 Documentation: Stat Commands in Unreal Engine).
For an artist, the distinction matters because each bottleneck needs a different fix. Fewer triangles will not help a scene that is slow because of too many draw calls, and merging meshes will not help a scene that is slow because foliage is shading the same pixels six times (see overdraw).
#Frame budgets
A frame budget is the time you have to produce one image. The arithmetic is simple: at 60 frames per second each frame gets 1000 ÷ 60 ≈ 16.7 ms; at 30 fps, 33.3 ms. On VR headsets the target is higher: Meta's Quest guidance measures against 72 frames per second (Meta Horizon Developers: WebXR Performance Optimization Workflow), which leaves about 13.9 ms a frame.
Budgets are also set in counts, not only milliseconds. Meta recommends under 100 draw calls per frame on Quest 2 and under 200 on Quest 3 (Meta Horizon Developers: Device Optimization Comparison). Budgets are then broken down per asset: see polygon and triangle budgets for published per-object triangle caps and texel density for texture rules. Texture memory is a budget of its own; Hugh Chew's video on texture performance covers VRAM, compression, sampling and draw calls (YouTube: Your Textures Are Killing Performance, Here's…). See polygon and triangle budgets and texel density.
#CPU-bound or GPU-bound
Modern engines split the work. In Unreal, stat unit shows four main numbers (Unreal Engine 5.8 Documentation: Stat Commands in Unreal Engine):
- Frame: "the total amount of time spent generating one frame of the game."
- Game: the game thread. "If Frame time is close to Game time," the game thread is the bottleneck.
- Draw: the rendering thread, which prepares work for the GPU. "If Frame time is close to Draw time," the rendering thread is the bottleneck.
- GPU: "how long the video card takes to render the scene."
Whichever number sits closest to Frame is where the time goes (Unreal Engine 5.8 Documentation: Stat Commands in Unreal Engine). Epic advises reading these in a non-debug build, not a debug one (Unreal Engine 5.8 Documentation: Stat Commands in Unreal Engine).
What each result usually means for art:
| Bottleneck | Typical art-side causes | Where to look next |
|---|---|---|
| Game thread | Usually gameplay code rather than art | Ask a programmer; Unreal Insights |
| Draw / render thread | Many objects, many materials, many draw calls; the CPU pays for each draw regardless of how simple the object is (Meta Horizon Developers) | draw calls, instancing, hierarchical LOD |
| GPU | Expensive materials, overdraw from translucency and foliage, too many dynamic lights, high resolution | Shader complexity views, RenderDoc or PIX |
#Tools in Unreal Engine
Stat commands. Typed into the console. stat fps "Displays Frames per Second (FPS) counter", stat gpu "Displays GPU statistics for the frame", and Epic calls stat scenerendering "a good starting point to find general areas of slow performance in the rendering process" (Unreal Engine 5.8 Documentation: Stat Commands in Unreal Engine).
View modes. The Shader Complexity view colours pixels from green ("very inexpensive") to red ("expensive"), with "pink and white" marking a large jump to "very expensive" (Unreal Engine documentation: Viewport Modes in Unreal Engine). Epic notes that small white areas can be tolerated, but a screen mostly covered in bright red or white is a problem (Unreal Engine documentation: Viewport Modes in Unreal Engine). Light Complexity "shows the number of non-static lights affecting your geometry" (Unreal Engine documentation: Viewport Modes in Unreal Engine).
Unreal Insights. For deeper work, Insights is "a telemetry capture and analysis suite that can capture events from your project at high data rates" (Unreal Engine 5.8 Documentation: Unreal Insights in Unreal Engine). Its Timing Insights window "collects performance data", and you start a trace from the Trace/Insights widget in the editor's bottom toolbar (Unreal Engine 5.8 Documentation: Unreal Insights in Unreal Engine). Artists rarely need it day to day, but it is where a technical artist will show you why your level hitches.
Nanite and draw calls. Nanite geometry "bypasses traditional draw calls" (Unreal Engine Documentation: Nanite Virtualized Geometry), but Epic's Fortnite team still found that "masked materials in Nanite incur a significant cost during base pass shading" (Unreal Engine tech blog: Bringing Nanite to Fortnite Battle Royale in…). Profile Nanite scenes for shading cost, not only geometry.
#Tools in Unity
The Profiler. "The Unity Profiler is a tool you can use to get performance information about your application" (Unity Manual: Unity Profiler). You can connect it to devices on your network or attached to your computer, to test "how your application runs on your intended release platform", or run it in the editor "to get an overview of resource allocation" (Unity Manual: Unity Profiler).
The Frame Debugger lets you "pause the application on a particular frame and display the list of rendering events that constitute the frame", then "step through each event and display the graphical state of the scene at that point" (Unity Manual: Introduction to the Frame Debugger). It is the quickest way to see what is drawn, in which order, and how many separate events a single prop produces.
Scene view draw modes. The Overdraw mode renders objects "as transparent silhouettes", and "the transparent colors accumulate, making it easy to spot places where one object is drawn over another" (Unity Manual: Scene view View Options toolbar). The Mipmaps mode colour-codes textures: red means a texture "is larger than necessary" at the current distance and resolution (Unity Manual: Scene view View Options toolbar).
#External GPU tools
RenderDoc is an open-source frame debugger: "RenderDoc is 100% open source", and it supports "Windows, Linux, and Android for capture and replay out of the box" (renderdoc.org: RenderDoc). You launch your game through it and press the capture key, "F12 or Print Screen"; the next frame is saved (RenderDoc documentation: Quick Start). The Event Browser is "the primary method of stepping through the frame", the Texture Viewer inspects "textures and render targets", and the Mesh Viewer lets you "inspect the geometry data as it passes through the pipeline" (RenderDoc documentation: Quick Start).
PIX is Microsoft's tool: "a performance tuning and debugging tool for Windows and Xbox game developers using DirectX 12" (PIX on Windows blog: Introduction - PIX on Windows). It offers "GPU captures for debugging and analyzing the performance of Direct3D 12 graphics rendering" and "timing captures for understanding the performance and threading of all CPU and GPU work" (PIX on Windows blog: Introduction - PIX on Windows).
#Common mistakes
- Profiling in the editor and trusting the numbers. Unity frames the editor run as an overview and points to your intended release platform for real results (Unity Manual: Unity Profiler); Epic asks for a non-debug build (Unreal Engine 5.8 Documentation: Stat Commands in Unreal Engine).
- Optimising before measuring. Triangles are the easiest thing to count, so they get blamed. On Quest, Meta notes that draw-call CPU cost can limit you long before the GPU runs out of triangle throughput (Meta Horizon Developers: WebXR Performance Optimization Workflow).
- Changing five things at once. Change one thing, measure again, keep or revert.
- Ignoring spikes. Epic singles out particle effects, which "tend to cause performance spikes with a large amount of overdraw for a short period of time" (Unreal Engine documentation: Viewport Modes in Unreal Engine). Average frame time can hide them.
#In different tools
| Engine or tool | First look | Deeper look |
|---|---|---|
| Unreal Engine | stat unit, stat fps, Shader Complexity view (Unreal Engine 5.8 Documentation; Unreal Engine documentation) |
stat gpu, stat scenerendering, Unreal Insights (Unreal Engine 5.8 Documentation) |
| Unity | Profiler connected to the target device; Overdraw and Mipmaps draw modes (Unity Manual; Unity Manual) | Frame Debugger (Unity Manual) |
| Any engine on Windows, Linux, Android | — | RenderDoc frame capture (renderdoc.org) |
| DirectX 12 on Windows and Xbox | — | PIX GPU and timing captures (PIX on Windows blog) |
#Further reading and watching
stat unit. Beginner, free.References
- · Stat Commands in Unreal Engine · Unreal Engine 5.8 Documentation, 2026 · docs · accessed 2026-10-21
- · WebXR Performance Optimization Workflow · Meta Horizon Developers, 2026 · docs · accessed 2026-10-20
- · Device Optimization Comparison · Meta Horizon Developers, 2026 · docs · accessed 2026-10-20
- · Your Textures Are Killing Performance, Here's Why · YouTube, 2026 · video · accessed 2026-10-21
- · Viewport Modes in Unreal Engine · Unreal Engine documentation · docs · accessed 2026-10-21
- · Unreal Insights in Unreal Engine · Unreal Engine 5.8 Documentation, 2026 · docs · accessed 2026-10-21
- · Nanite Virtualized Geometry · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-20
- · Bringing Nanite to Fortnite Battle Royale in Chapter 4 · Unreal Engine tech blog · article · accessed 2026-10-20
- · Unity Profiler · Unity Manual, 2026 · docs · accessed 2026-10-21
- · Introduction to the Frame Debugger · Unity Manual, 2026 · docs · accessed 2026-10-21
- · Scene view View Options toolbar (Draw modes) · Unity Manual, 2026 · docs · accessed 2026-10-21
- · RenderDoc · renderdoc.org, 2026 · tool · accessed 2026-10-21
- · Quick Start · RenderDoc documentation, 2026 · docs · accessed 2026-10-21
- · Introduction - PIX on Windows · PIX on Windows blog, 2026 · docs · accessed 2026-10-21
Pages that link here
- Welcome Overview
- How to use this handbook Guide
- Roles in 3D game production Topic
- Anatomy of a polygon mesh Topic
- Field of view Key term
- Hard-surface modeling Topic
- Height and displacement maps Key term
- Texture streaming Key term
- Texture atlases Topic
- Real-time lighting Topic
- Shadows and virtual shadow maps Key term
- Cascaded shadow maps Key term
- Shadow bias and shadow acne Key term
- Level design and environment art Overview
- Telemetry and heatmaps Key term
- Set dressing and art passes Topic
- Frame budgets Key term
- Texture memory (VRAM) Key term
- The technical artist Topic
- Draw calls Key term
- Overdraw Key term
- Exercise: lighting one scene four ways Exercise
- Essential talks and videos Reference
Last updated 2026-10-22