Tutorial — Performance Profiling

Augmented Traveler local tutorial. Back to Unreal — Tutorials · headsets: Tutorial — OpenXR Headset Builds · kiosk look: Tutorial — Kiosk Lighting for a Life-Size MetaHuman

How to find out why a build is slow and fix the right thing. A figure that stutters breaks the illusion. On a headset it can make visitors feel sick.

Draft. Record real numbers from the first kiosk and Quest builds in section 6.

1. Budgets

Surface Target Frame budget
Kiosk 60 fps (or locked 30 if agreed) 16.7 ms (33.3 ms)
Quest 3 72 fps minimum (Meta requires 72/80/90/96/100/120 Hz for interactive apps) 13.9 ms at 72; 11.1 ms at 90
Other standalone headsets 72–90 fps 11.1–13.9 ms
Pixel Streaming server 60 fps at the stream resolution 16.7 ms

Meta store check: apps must hold their rate. Meta asks for at least 45 minutes of testing with OVR Metrics Tool. We use the same test for venue builds.

2. First look: stat commands (any build with a console)

Command Tells you
stat fps Frame rate
stat unit Frame, Game (CPU gameplay), Draw (CPU render), GPU, RHI times; in 5.8 also VRAM. The largest number is your bottleneck
stat unitgraph The same, as a graph over time (spikes)
stat gpu GPU time per pass (Lumen, shadows, hair, translucency…)
ProfileGPU (Ctrl+Shift+Comma) The GPU Visualizer: a one-frame breakdown
stat scenerendering, stat rhi Draw calls, primitives
stat startfile / stat stopfile Record stats to a file

Rule: find whether CPU (Game or Draw) or GPU is the limit before changing anything.

3. Deep look: Unreal Insights

  1. Launch the build with tracing, for example -trace=default,gpu,memory. The default channels include Cpu, Gpu, Frame, Log and Bookmark.
  2. Open Unreal Insights and load the trace, or connect live.
  3. Use the Timing view to find slow frames and see what ran on each thread.
  4. Mark program moments with Trace.Bookmark (for example "Monologue start", "Answer start") so you can find the Q&A spikes.
  5. 5.8 adds annotations and UObject counters. Memory Insights and LLM (-llm) find memory growth over a long kiosk day.

4. Headset tools (Quest)

Tool Use
OVR Metrics Tool On-device overlay: fps, CPU/GPU level, GPU utilisation; the 45-minute test
Meta Quest Developer Hub Logs, performance analyser, device management
RenderDoc Meta Fork GPU frame capture for Quest (tile-based rendering details)
Unreal Insights on Quest Meta's guide for tracing UE5 on device
Android GPU Inspector Adreno GPU profiling; Quest support not explicitly listed

Meta's method: decide CPU- or GPU-bound, then capture. xr.SecondaryScreenPercentage.HMDRenderTarget reduces the pixel load.

5. Where MetaHumans cost the most, and what to do

Cost Fix
Strand hair Cards on headsets (strands only at LOD0–1; cards at LOD2–5); groom LODs (Grooms — Tutorials)
Face rig (RigLogic) 5.8 lets you set RigLogic precision and backend per platform (FP16 on mobile) and restores rig state in cooked builds
LODs MetaHumans have 8 LODs. Mobile starts at LOD3 with 2K textures and cards; head vertices go from about 24,000 (LOD0) to 130 (LOD7). Force LODs to test
Cloth simulation Skinned-only garments on headsets (Tutorial — Period Layers, Hoops and Skirts)
Live lip sync GPU-heavy: measure the MetaHuman audio source versus Audio2Face on the target (Tutorial — Authoring a Q&A Experience with Ambient Idle)
Lighting Kiosk: fewer shadowed lights, Lumen Lite, TSR percentage. Headsets: baked only (Tutorial — Place Kits for Historic Interiors)
Shader stutter Quest: 5.8 disables the chunked PSO cache on Quest; collect PSOs during QA runs to reduce hitches

6. Our measurements (fill in)

Build Date Scene fps Game ms Draw ms GPU ms Bottleneck Notes
Kiosk Mitchell monologue
Kiosk Mitchell Q&A
Quest 3 Vestal House room

7. Check before any venue build

Sources