VR Performance Features

Information on different performance optmizations for VR.

Choose your operating system:




Due to the demanding rendering requirements Virtual Reality (VR) requires a number of performance optimizations and new rendering modes that are specific to VR have been introduced to Unreal Engine 4 (UE4). In the following document we will take a look at these features and how to use them in your UE4 VR projects.

Variable Rate Shading and Fixed Foveated Rendering

Variable Rate Shading (VRS) is a feature supported on newer GPUs that provides various methods for adjusting the shading rate of pixels in a render target (or targets). The default shading rate in any setup is 1:1, where 1 pixel-shader invocation applies to 1 target pixel on the screen. With VRS, you can specify alternate shading rates, specifically 1x2, 2x1, 2x2, 2x4, 4x2, and 4x4. For example, for 2x2 shading rate, you would see a single pixel shader invocation for a group of 2x2 pixels (4 pixels), and for 4x4 you'd see a single pixel-shader invocation for a 4x4 group (16 pixels).

Shading rate can be applied either on a per-material basis, or via a shading rate image attachment (via Tier 2 VRS).

Fixed Foveated Rendering is a technique which can make use of image-based VRS in VR headsets to adjust the shading rate for a target, reducing the shading rate towards the periphery of the view. Due to optical distortion, the GPU ends up throwing away increasing amounts of pixel detail towards the edge of the image, so by applying a VRS image that reduces shading rate further out from the image center, you can improve performance with little perceptual degradation in image quality.

Fixed-foveation uses an attachment generated via compute shader:


The center (black) areas on both sides correspond to the center of each stereo view; darker areas are higher shading rate, with black being full (1x1, 1 pixel-shader invocation per pixel), dark red at half-rate in both x and y (2x2, 1 pixel shader invocation per 4 pixels), and lighter red quarter rate (4x4, 1 pixel shader invocation per 16 pixels).

Initial results with VRS attachments applied to the base pass and transparency passes show significant promise. Currently this is still proof of concept, and it could be applied elsewhere other than base and transparency passes.

Project Settings

Use the DX12 RHI (DirectX 12 Rendering Hardware Interface) on the Windows platform.

To access VRS settings, from the main menu, go to Edit > Project Settings . Then, in the Project Settings window, go to Rendering > VR .


Console Variables

You can use the following console variables:




Enable or disable VRS across the engine (material-based VRS and any active image-based VRS).


Enable or disable image-based VRS only. Per-material VRS will still function if it is enabled and supported.


HMD fixed foveated rendering quality and performance setting.

Known Limitations

  • Only available on Windows devices with DirectX 12 and VRS Tier 2 support.

  • Vulkan is currently not supported.

  • Not compatible with NVIDIA's DLSS.

  • Eye-tracked foveated rendering is currently not supported.

VR Instanced Stereo

Instanced Stereo Rendering was introduced to help lessen the performance impact of VR in UE4. The feature can be enabled by checking the Instanced Stereo option that can be found under Edit > Project Settings > Rendering > VR .

Click for full image.

After Instanced Stereo rendering has been enabled, it will require an engine restart, and shader recompile. The base pass, and early-z pass, works with static meshes, skeletal meshes, sprite particles, and mesh particles with the feature turned on (both serial and parallel rendering paths). Instanced Stereo currently works on PC (DirectX) and PS4 with support for other platforms coming after the initial 4.11 release. Here is a video showing Standard Stereo Rendering in VR, versus Instanced Stereo Rendering in VR.

VR Multiview Support for Mobile

Certain (supported) mobile devices can now support VR Multiview. Mobile Multiview is similar to Instanced Stereo rendering that is available to desktop PC's, and works by providing an optimized path for Stereo Rendering on the mobile device's CPU. To enable this feature, you will need to do the following:

Due to the experimental nature of this feature, it will only work on modern Mali-based GPUs. As this feature matures, and support for more mobile devices come online, this warning will be removed.

  1. From the Main Toolbar, go to Edit > Projects Settings , to open the Editor's Project Settings.

  2. Then, go to Engine > Rendering > VR , and look for the Mobile Multi-View (Experimental) option.

  3. Enable the Mobile Multi-View (Experimental) option by click on the checkmark box next to its name, and then restart Editor for the changes to take effect.

    Click for full image.

For this feature to work, you will need your Android build settings to be setup like the following:

  • Make sure that Support OpenGL ES2 is enabled in the Android > Build section.

  • Make sure that both Mobile HDR and Instanced Stereo Rendering are disabled.

  • Currently, Mobile Multiview will only work with modern Mali-based GPU's.

  • If you package a project with this feature on, but don't have a compatible GPU, it will be disabled at runtime.

VR Forward Rendering


By default, Unreal Engine 4 (UE4) uses a Deferred Renderer as it provides the most versatility and grants access to more rendering features. However, there are some trade-offs in using the Deferred Renderer that might not be right for all VR experiences. Forward Rendering provides a faster baseline, with faster rendering passes, which may lead to better performance on VR platforms. Not only is Forward Rendering faster, it also provides better anti-aliasing options than the Deferred Renderer, which may lead to better visuals.

Please see the Forward Shading Renderer documentation for more information on this feature.

VR Performance Profiling

To track down assets that are too expensive for VR, you need to profile what your project is doing on the CPU and GPU as much as possible over the lifetime of your project.

  • GPU Profiling - To activate the GPU profiler, all you need to do is press CTRL + SHIFT + ,(Comma Key) together, while running your project. After the keys have been pressed, you will see a new window come up that should look similar to the image below. VR_GPU_Profiler.png

  • CPU Profiler - Profiling what your project is doing on the CPU is a bit more involved than profiling for the GPU. To find out more on how to do this, please refer to the Performance Profiler documents.

VR Post Process Settings

Due to the demanding rendering requirements of VR, many of the advanced Post Processing features that are enabled by default should be disabled, or your project could suffer from performance problems. To accomplish this in your project, you will need to do the following.

  1. Add a Post Process(PP) volume to your level if there is not one already there.

  2. Select the PP volume, and in the Post Process Volume section, enable the Unbound option so that the settings in the PP volume will be applied to the entire level.


  3. Expand the Settings of the Post Process Volume , and then go through each section to disable any active PP settings by enabling that property; clicking on it, and then setting the value from the default (usually 1.0) to 0 , thus disabling the feature.


    When doing this, you won't need to hit every section and set all of the properties to 0. Instead, first disable the really heavy hitting features like Lens Flares, Screen Space reflections, Temporal AA, SSAO, Bloom and anything else that might have an impact on performance.

Help shape the future of Unreal Engine documentation! Tell us how we're doing so we can serve you better.
Take our survey