Skip to content
Matthieu Bucchianeri edited this page Apr 25, 2024 · 95 revisions

Foveated Rendering via Quad Views

In layperson's terms:

This software lets you use Eye-Tracked Foveated Rendering (sometimes referred to as Dynamic Foveated Rendering) with your Pimax Crystal, Meta Quest Pro, and other headsets supporting eye tracking via OpenXR in games using the quad views rendering technique like Digital Combat Simulation (DCS) and Pavlov VR. If your headset does not embed an eye tracking device, you will be getting Fixed Foveated Rendering instead.

THIS IS NOT A UNIVERSAL INJECTOR TO ADD FOVEATED RENDERING TO APPLICATIONS THAT DO NOT IMPLEMENT IT. This software can only be used with applications that implement quad views rendering.

If you are looking for a universal injector, look into OpenXR Toolkit or vrperfkit (for OpenVR/SteamVR applications).

In technical terms:

This software enables OpenXR apps developed with XR_VARJO_quad_views and optionally XR_VARJO_foveated_rendering to be used on platforms that do not typically support those extensions. It composes each quad view projection layer into a stereo projection layer, and uses the eye tracking support on the device to make the inner projection views follow the eye gaze.

Read more about it: What is Quad Views rendering?.

DISCLAIMER: This software is distributed as-is, without any warranties or conditions of any kind. Use at your own risks.

Table of Contents
  1. Compatibility
  2. Setup
  3. Configuration
  4. Troubleshooting
  5. Special thanks
  6. Donate

Compatibility

Before installing, check the compatibility tables below for both hardware and application support.

Headset compatibility

Headsets with Eye Tracking

Headset I use... Supported? Notes
Meta Quest Pro Oculus OpenXR Yes
Meta Quest Pro VirtualDesktopXR (VDXR) Yes
Meta Quest Pro SteamVR with Virtual Desktop Yes Requires OpenXR-Eye-Trackers
Meta Quest Pro Steam Link Yes Requires OpenXR-Eye-Trackers
Meta Quest Pro SteamVR with Oculus Link No [1]
Pimax Crystal PimaxXR Yes
Pimax Crystal SteamVR OpenXR Yes Requires OpenXR-Eye-Trackers
Pimax 5K/8K (w/ Droolon Pi1) PimaxXR Yes
Pimax 5K/8K (w/ Droolon Pi1) SteamVR OpenXR No
Varjo Aero Varjo OpenXR Yes You may also use Varjo's own implementation of quad views (included in Varjo Base) [2]
Varjo Aero SteamVR OpenXR Yes Requires OpenXR-Eye-Trackers
Varjo VR-3/XR-3 Varjo OpenXR Yes This implementation does not support Bionic Display: you may instead use Varjo's own implementation of quad views (included in Varjo Base) [2]
Varjo VR-3/XR-3 SteamVR OpenXR Yes Requires OpenXR-Eye-Trackers
HP Reverb G2 Omnicept Edition WMR OpenXR Yes Requires OpenXR-Eye-Trackers
HP Reverb G2 Omnicept Edition SteamVR OpenXR Yes Requires OpenXR-Eye-Trackers
Vive Pro Eye SteamVR OpenXR Yes Requires Vive Console for SteamVR
Pico Neo Pro 3/4 SteamVR OpenXR No Can use in Fixed Foveated Rendering mode

[1] Support in SteamVR for Oculus would require Oculus to provide a public OVR API to retrieve eye tracking data, which they currently do not offer.

[2] Why using Quad-Views-Foveated (this project) instead of Varjo/Somnium's own implementation?

Both Quad-Views-Foveated and the platform software for Varjo and Somnium provide similar functionality, however Quad-Views-Foveated has advantages over the other implementations:

  • It allows the peripheral/focus resolutions to be fully customized;
  • It forces applications with quad views rendering but not foveated rendering support to use foveated rendering. This was originally achieved through Varjo-Foveated;
  • It provides AMD Contrast Adaptive Sharpening (CAS) for the focus region for a crisper image;
  • It provides customizable transition (alpha-blending) from the focus region to the peripheral region;
  • It is compatible with OpenXR Toolkit.

Headsets without Eye Tracking

The program will operate in Fixed Foveated Rendering mode.

Headset Tested?
HP Reverb G2 Yes
Oculus Quest 2/3 Yes
Oculus Rift Yes
Pimax 4K/5K/8K Yes
Pimax Crystal Light Yes
HTC Vive Yes
HTC Vive Pro Yes
HTC Vive Cosmos Yes
HTC Vive Focus Yes
Valve Index Yes
Pico Neo 3/4 Yes
Bigscreen Beyond Yes

GPU compatibility

This software works with any GPU. Unlike the more traditional foveated rendering techniques based on Variable Rate Shading (VRS) and requiring Nvidia cards, the quad views method works with any GPU.

Application compatibility

Application Supported? Notes
DCS World Yes Must use OpenXR; See application notes below for quirks
Pavlov VR Yes Nothing special - works out-of-the-box
The 7th Guest VR Yes Must run with Direct3D 11, add the following command-line argument: -d3d11
VAIL Yes Must run with Direct3D 11 when prompted in Steam ("Launch VAIL DX11 in OpenXR Mode")

Other OpenXR tools are supported as well. List of what is known to work or not work so far:

Application Supported? Notes
OpenXR Toolkit Yes See application notes below for quirks
OpenKneeboard Yes
Hand Tracking Cockpit Clicking Yes
OpenXR OBSMirror Yes
XRNeckSafer Not tested
OpenXR-MotionCompensation Yes

DCS World

  • DCS World has two modes of operation: the single-threaded mode, and the new experimental multi-threaded mode. Due to a bug in the game with single-threaded mode (cursor renders double), you must use the multi-threaded (MT) mode.

    • If you are using DCS OpenBeta, create a shortcut to the dcs.exe file under the bim-mt folder where DCS is installed.

    image

    • If you are using DCS Steam Edition - running the executable from the bin-mt folder does not work, instead you must go to DCS World 'Properties' in Steam, then under 'General', make sure 'Launch options' is set to 'Play MT Preview'. You must then run the game from within your Steam library.

    image

  • Contrary to popular beliefs, you do not need the --force_OpenXR launch parameter when using DCS MT.

  • In the DCS World settings, you must disable 'VR' -> 'Bloom effect' and 'System' -> 'Lens Effects' as they produced poor visuals when using foveated rendering.

OpenXR Toolkit

This program is compatible with OpenXR Toolkit, however with the current version of OpenXR Toolkit (1.3.2), certain precautions must be taken:

  • Quad-View-Foveated must be installed after OpenXR Toolkit. This is because the installer program for OpenXR Toolkit has not been updated to recognize Quad-View-Foveated. The installer for Quad-View-Foveated will ensure that Quad-View-Foveated and OpenXR Tookkit are loaded in the correct order. If unsure, uninstall then reinstall Quad-View-Foveated in order to establish the correct loading order.

  • If you previously used OpenXR Toolkit, certain settings that you may have enabled can be incompatible with Quad-View-Foveated. You must clear the OpenXR Toolkit settings for your application prior to using it with Quad-View-Foveated.

    • In the 'OpenXR Toolkit Compation app' (launched from the desktop or the 'Start Menu'), tick the 'Enable safe mode' option.

    image

    • Run your application with OpenXR Toolkit in safe mode. Once the application enters VR, open the OpenXR Toolkit menu, then navigate to the 'Menu' tab, then to 'Restore defaults'. Use the left or right action to trigger the restore, and the left or right action once more to 'Confirm' at the prompt.

    image

    • In the 'OpenXR Toolkit Compation app' (launched from the desktop or the 'Start Menu'), untick the 'Enable safe mode' option.
  • Be mindful of the settings you enable in OpenXR Toolkit! Several settings are incompatible and should not be used:

    • 'Foveated Rendering' - You are already doing this through Quad-Views-Foveated, and better!.
    • 'Field of view' override and 'Zoom'.
    • 'Turbo mode' may only be used if it is not already enabled through Quad-Views-Foveated's configuration.

Setup

Download & installation

PLEASE DO NOT HOTLINK TO THE DOWNLOAD LINK BELOW - INSTEAD LINK TO THIS PAGE THAT COMES WITH BOTH THE DOWNLOAD LINK AND ALL THE NECESSARY INSTRUCTIONS! THANK YOU

YOU MUST COMPLETE ALL THE STEPS BELOW - IN ADDITION TO INSTALLING THE TOOL, YOU MUST FOLLOW THE INSTRUCTIONS SPECIFIC TO YOUR HEADSET AND SPECIFIC TO YOUR APPLICATION (IF ANY)

Quick download link: Quad-Views-Foveated-1.1.3.msi

Download the latest version from the Releases page. Find the installer program under Assets, file Quad-Views-Foveated-<version>.msi.

You might need to install the latest Visual C++ Redistributable.

Run the installer and follow the instructions to complete the installation.

Follow the additional steps specific to your headset in order to enable eye tracking (when applicable):

Take a look at additional notes specific to your applications, such as recommended settings or incompatible settings.

You may watch Str][kerTV's tutorial video for a visual walkthrough for Digital Combat Simulator:

Watch the video

Temporarily disabling

THESE STEPS WILL WORK EVEN IF YOU ARE NOT USING OPENXR THROUGH STEAMVR!

You can temporarily disable (without uninstalling) the software. Open SteamVR, then in the 'SteamVR Settings', go to the 'OpenXR' tab, then click 'Manage OpenXR API Layers'. Find the 'Emulate quad views foveation support' entry and toggle it off. You may re-enable it at any point by toggling it back on from the same menu.

image image

Removal

You can use 'Add or remove programs' (available from the Start Menu) and uninstall 'OpenXR-Quad-Views-Foveated' from there.

image

Configuration

The default configuration should be sufficient for most users. You probably do not need to modify the configuration file.

Please refer to this page for advanced configuration.

Troubleshooting

Please refer to this page for troubleshooting issues.

You can also join the OpenXR Toolkit Discord for support, specifically the #foveated-rendering channel.

IF YOU DON'T INCLUDE YOUR LOG FILE AND A CLEAR EXPLANATION OF YOUR ISSUE, YOUR MESSAGE WILL BE IGNORED.

Special thanks

Thanks to my beta testers for helping throughout development and release (in alphabetical order):

  • BARRACUDAS
  • edmuss
  • MastahFR
  • mfrisby
  • Omniwhatever
  • xMcCARYx

Donate

Donations are welcome and totally optional. Please use my GitHub sponsorship page to make one-time or recurring donations!

Thank you!