- What is Foveated Rendering (FR)?
Foveated Rendering (or FR) is rendering technique that reduces the workload of the GPU by reducing the resolution of the image at the periphery of your vision.
The image is divided into 3 regions, with the resolution decreasing the further we get from the center region.
Fixed Foveated Rendering (or FFR) is a type of Foveated Rendering technique which assumes a fixed focal point, and does not use eye tracking. FFR is quite effective with VR headsets because 1) your eye gaze tends to always look at the center of the screen 2) the distortion created by the lenses of the headset alter your preception of the resolution near the edges of the screen.
FR is only effective at improving performance when you are being limited by your GPU. FFR will not help if you are limited by your CPU.
A comparison of FFR disabled (top) and FFR enabled (bottom)
In the comparison above, you can see the noticeable difference in quality near the bottom left corner. However, when looking through the lenses of the headset, the difference is barely noticeable.
The option to enable FR will appear in the menu if and only if your graphics card and graphics driver can support it. The following are supported:
- NVIDIA GeForce GTX 1600 series and RTX series, both DX11 and DX12.
- AMD RX 6000 series, with DX12 only.
The option to enable Eye Tracking (ET) will appear in the menu if and only if your headset and the application can support it. For more details, see Eye Tracking
There are two methods for configuring FFR in the OpenXR Toolkit.
In Preset mode, we offer two parameters:
- Mode, which can be set to Performance or Quality.
- Pattern, which can be set to Wide, Balanced or Narrow.
The Mode setting controls the resolution to apply for each of the 3 regions described earlier.
- Performance is equivalent to 1x - 1/4x - 1/16x (inner - middle - outer resolution).
- Quality is equivelent to 1x - 1/2x - 1/8x.
The Pattern setting controls the size of the rings separating the regions. There are 2 rings (3 regions). The size is expressed in percent of the vertical resolution.
- Wide is equivelent to 55% - 80% (inner ring - outer ring).
- Balanced is equivalent to 50% - 60% .
- Narrow is equivalent to 30% - 55%.
Note that the rings are not of circular shape, and instead they are of elliptical shapes, with their aspect ratio “flattened” alongside the horizontal axis.
In Custom mode, every aspect of the FR feature can be tweaked.
An exhaustive list of all settings for FR.
The resolution of the middle and outer regions (Middle resolution and Outer resolution) can be set to any of 1/2x, 1/4x, 1/8x and 1/16x. When the application is using DirectX 11, an additional option, Cull is available to completely disable rendering for a region.
Note: to avoid creating poor configurations, the resolution of the inner region is fixed to 1x, and the other regions cannot be set to that resolution (1/2x and below).
The size of the rings separating each region (Inner ring size and Outer ring size) can be set to any ratio. There are 2 rings (3 regions). The size is expressed in percent of the vertical resolution.
When enabled in the Menu tab, Expert settings are also unlocked, allowing you to further customize the size, aspect and positioning of the regions.
The Horizontal offset and Vertical offset settings allow you to move the center of the regions. Note that the Horizontal offset is expressed relative to the left eye (meaning a negative value moves the center towards the left), however the offset is applied in the opposite direction to the right eye (a negative value moves the center towards the right).
The Horizontal scale value lets you control the scale of the horizontal radius (also known as the semi-major axis) based on the vertical radius (also known as the semi-minor axis). A value of 100% means that the rings are circles. A value larger than 100% will result in flattened, oval-shaped rings.
Finally, the Left/Right Bias value lets you lower the resolution of all the regions at once, either for the left or the right eye only at a time. Each setting value changes the regions resolutions one notch down (for example +1 changes 1/2 to 1/4 and +2 changes 1/2 to 1/8). This setting can adjust the bias up to +4 on either eye. Select none to remove any bias.
Certain graphics settings in the application may create additional artifacts. There are a few ways to deal this this situation:
Increase the radius values or enable Expert settings and increase the Horizontal scale until the degradations are no longer visible (which may lead to a lower gain in frame rate).
Experiment with different resolutions in the Custom settings, and try both Prefer resolution settings in conjunction with the 1/2x and 1/8x resolutions.
Find and disable the graphic settings causing the issue (which may lead to a lower graphics fidelity).
In the example below, we see how the the “Light shafts” feature in Microsoft Flight Simulator 2020 creates undesirable black lines near the horizon line. However, when the feature is disabled, the artifacts are nearly completely gone.
A demonstration of light shafts on (top) and off (bottom) and the impact on visual quality with FFR.
This issue can also be resolved by using the 1/2x and 1/8x resolutions exclusively, and ensure that the Prefer resolution setting is set to Vertical.
Another way to reduce or conceal some of the visual artifacts is to use the sharpening features of the NIS or FSR upscalers (see Upscaling).
Lowering the rendering resolution before the FR processing happens (ie: the render scale setting within the application) has also shown to create visible artifacts. For this reason, it is also preferred to use the upscaling feature of the OpenXR Toolkit rather than any in-app upscaling.
Configuring a narrower inner and middle regions may improve performance further, however the loss in quality will become more and more noticeable.
FFR with a Narrow pattern.
In the example above, we show how the Narrow pattern creates a large region at low resolution near the edges of the screen. This region is noticeable even with the distortion created by the lense inside the headset.
It is important to understand that the Variable Rate Shading (VRS) technology employed for FFR is only effective at reducing or eliminating certain bottlenecks of the graphics pipeline.
FFR set to the lowest resolution for the whole screen.
In the example above, we show how setting the lowest resolution for all 3 regions produces a very low quality image, while not raising the performance over the aggressive settings shown earlier. This is because the limiting factor for performance is no longer at the stage of the graphics pipeline where FFR can help.
In other words, setting the radius for the inner and outer regions to a lower value does not always result in a higher performance gain.
Foveated Rendering works very well with the Upscaling feature of the OpenXR Toolkit, and can provide even more boost in performance.
FFR combined with the NIS upscaler in Microsoft Flight Simulator 2020, providing a total boost of 15 FPS.