Foveated rendering is an optimization technique in which Unity renders the areas of the display at the periphery of the user’s vision at a lower resolution. It can improve rendering performance with little impact on perceived visual quality.
XR devices apply foveation either at a fixed position on the display or at the point where the user looks, depending on whether the device supports eye tracking. XR platforms also differ in how they rasterize the lower-resolution regions, and that difference determines which requirements your project must meet and whether you must change your custom shaders.
| Topic | Description |
|---|---|
| Introduction to foveated rendering | Learn how foveated rendering works, which modes XR devices support, and how the rasterization technique affects shaders. |
| Foveated rendering support reference | Find the Unity versions, render pipeline, graphics APIs, and hardware that support foveated rendering, and the capabilities a device can report. |
| Foveated rendering shader compatibility workflow | Follow the tasks that make the custom shaders and shader graphs in your project produce correct results. |
| Enable and control foveated rendering | Enable foveated rendering in your project settings and set the foveated rendering level and mode at runtime. |
| Adapt custom shaders for foveated rendering | Add the foveated rendering shader library to a custom shader and remap its screen-space coordinates. |
| Update shader graph effects for foveated rendering | Choose a Screen Position node mode, and remap Raw mode coordinates with a Custom Function node. |
| Foveated rendering shader functions reference | Explore the HLSL functions you can use to remap screen-space coordinates in custom shaders. |