The Vanishing of Milliseconds

Optimizing the UE4 renderer for Ethan Carter VR

Screencap source.

Show me the numbers

GPU profiles from the PS4/Redux and VR versions, side by side. Spacing has been added to have the corresponding data line up. Detailed textual log data available as Gists: PS4/Redux and VR version.
Timing graphs displayed with the STAT UNITGRAPH command, side by side.

Hitting the road to VR

Killing superfluous renderer features

Left eye taking up more than twice the time? That is not normal.

Experiments with shared visibility

Output of STAT INITVIEWS in the PS4/Redux version.
Output of STAT INITVIEWS in the VR version.

Stereo instancing: not a silver bullet

Comparing against a pre-change build reveals a considerable perf hit: on foliage-less scenes (where we’ve already been GPU-bound) we experience a ~0.7 ms gain on the draw thread, but a ~0.5 ms loss on the GPU.

Foliage makes everything much, much worse, however (even after fixing it). Stat unit shows a ~1 ms GPU loss with vr.InstancedStereo=0 against baseline, and ~5 ms with vr.InstancedStereo=1!

The all-seeing eyes

The problematic opening scene.
Note the missing ground in the foreground, in the bottom-left visualizer panel.

Fog so thick one might have spread it on bread

RenderDoc’s depth test overlay. An occlusion query dispatched for an extremely distant, large (about 5,000 x 700 x 400 units) object, showing a positive result (1 pixel is visible).
RenderDoc’s depth test overlay in UE4’s base pass. A mesh of decent size (~30k vertices, 50 x 50 x 30 bounding box), distant enough to occupy just 3 pixels (L-shaped formation in the centre). Successful in coarse occlusion testing, but failing the per-pixel depth tests.

Insane LODs

The money shot

STAT RELEVANTLIGHTS output. Left: scene with fully static lighting. Right: fully dynamic lighting; one point light has shadow casting disabled.




Rendering engineer at Frostbite. Opinions are my own.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store