Support for foveated rendering depends on your Unity version, render pipeline, and graphics API, and on both the XR provider plug-in and the device. This page lists those requirements, including which XR provider plug-ins and platforms support foveated rendering. It also lists the pipeline and resolution combinations Unity supports, the additional conditions that dynamic foveation requires, and the capability values a device reports at runtime.
For an explanation of variable rate shading (VRS) and variable rate rasterization (VRR), refer to Introduction to foveated rendering.
Your project must meet all the following requirements to use foveated rendering:
| Requirement | Details |
|---|---|
| Unity version | Unity 2022.3 or later. |
| Render pipeline | Universal Render Pipeline (URP). |
| XR provider plug-in | Configure the foveated rendering settings that your XR provider plug-in exposes, if it has any. |
| Graphics API | On Windows standalone XR, the project must use the DirectX 12 or Vulkan graphics APIs. |
| GPU | On Windows standalone XR, the computer running the application must have a GPU such as NVIDIA GeForce RTX 20 series or later, or AMD Radeon RX 6000 series or later. |
| Plug-in and device support | On standalone XR platforms, both the XR provider plug-in and the device must support foveated rendering. For the plug-ins and platforms that support it, refer to Plug-in and platform support. |
The following table lists the XR provider plug-ins that document foveated rendering support and the platforms on which each plug-in supports it. Other plug-ins might also support foveated rendering. To find the documentation for other plug-ins, refer to XR provider plug-ins.
| XR provider plug-in | Platforms |
|---|---|
| OpenXR Plug-in | Meta Quest, Android XR, and Windows. |
| Apple visionOS XR Plug-in | visionOS, when your application renders with Metal. |
On Android XR, the Unity OpenXR: Android XR package provides additional settings and permissions for foveated rendering. For more information, refer to Eye tracking and foveated rendering.
To render with Metal on visionOS, go to Edit > Project Settings > XR Plug-in Management > Apple visionOS, and set App Mode to Metal Rendering with Compositor Services or Hybrid - Switch between Metal and RealityKit.
The following conditions determine whether foveated rendering is available outside the standard Universal Render Pipeline (URP) configuration:
| Condition | Support |
|---|---|
| The Built-In Render Pipeline | Unity doesn’t support foveated rendering in projects that use the Built-In Render Pipeline. |
| The Built-In Render Pipeline through a provider plug-in | Some XR provider plug-ins use a different API and implementation to support foveated rendering in Unity 2022.3 with the Built-In Render Pipeline. These plug-ins include the OpenXR Plug-in and the Oculus XR Plug-in. Unity deprecated the Oculus XR Plug-in in Unity 6.5 and later, so the OpenXR Plug-in is the active path. |
| Dynamic resolution | Fixed foveated rendering is compatible with dynamic resolution that uses XRSettings.renderViewportScale. Refer to Resolution control in XR projects for more information. |
Dynamic foveation has narrower support than foveated rendering. For an explanation of what it does to the foveated rendering level, refer to Introduction to foveated rendering. Your project must meet all the following conditions to use dynamic foveation:
| Condition | Details |
|---|---|
| XR provider plug-in | The OpenXR Plug-in, version 1.19 or later. |
| Graphics API | Vulkan. |
| Foveation method | The plug-in must use the foveation method that foveatedRenderingLevel controls, not a provider-specific foveation method. |
| Device and runtime | The device’s OpenXR runtime must support the XR_FB_foveation, XR_FB_foveation_configuration, XR_FB_foveation_vulkan, and XR_FB_swapchain_update_state extensions. |
To enable dynamic foveation, refer to Use dynamic foveation in the OpenXR Plug-in documentation.
A device reports its foveated rendering capabilities through the foveatedRenderingCaps property of SystemInfo. The property returns a FoveatedRenderingCaps value. To read this property in a script, refer to Enable and control foveated rendering.
The property can report the following values:
| Value | Meaning |
|---|---|
None |
The device doesn’t support foveated rendering. Various factors can cause a lack of support, including software, the device runtime, or drivers, so even if a platform supports foveated rendering, it might not be available on a particular device. |
FoveationImage |
The foveated rendering implementation uses VRS. |
NonUniformRaster |
The foveated rendering implementation uses VRR. |
The FoveationImage and NonUniformRaster values describe how a device implements foveated rendering, which is useful if you implement a custom render pipeline.