Fixed foveated rendering: Difference between revisions
Xinreality (talk | contribs) No edit summary |
Xinreality (talk | contribs) No edit summary Tag: Reverted |
||
| Line 1: | Line 1: | ||
{{see also|Terms|Technical Terms}} | {{see also|Terms|Technical Terms}} | ||
[[Fixed foveated rendering]] ('''FFR''') is a | [[Fixed foveated rendering]] ('''FFR''') is a performance–optimisation technique used primarily in [[Virtual Reality]] (VR) and [[Augmented Reality]] (AR). It exploits the characteristics of the [[Human visual system|human visual system]]—very high acuity in the [[Fovea]] and much lower acuity in the [[Peripheral vision|periphery]]—to lower the rendering workload on a [[Graphics processing unit|GPU]] without noticeably degrading perceived image quality.<ref name="QualcommFFRDef">{{cite web |title=The Evolution of High-Performance Foveated Rendering on Adreno |url=https://www.qualcomm.com/developer/blog/2021/07/evolution-high-performance-foveated-rendering-adreno |website=Qualcomm Developer Network |date=7 July 2021 |access-date=25 April 2025}}</ref><ref name="MetaFFR">{{cite web |title=Save GPU with Eye-Tracked Foveated Rendering |url=https://developers.meta.com/horizon/blog/save-gpu-with-eye-tracked-foveated-rendering/ |website=Meta Quest Developer Blog |date=19 Oct 2022 |access-date=25 April 2025}}</ref> | ||
Unlike [[Dynamic foveated rendering]] (DFR)—which relies on [[Eye tracking]] to move the high-quality region to the user’s current gaze—**FFR keeps that region fixed**, typically centred in the view, and progressively reduces resolution or shading rate towards the edges.<ref name="Patney2016">{{cite journal |last1=Patney |first1=A. |title=Towards foveated rendering for gaze-tracked virtual reality |journal=ACM Transactions on Graphics |volume=35 |issue=6 |pages=179:1–12 |year=2016 |doi=10.1145/2980179.2980246}}</ref> Because fragment shading is the dominant cost in modern high-resolution VR, reallocating it in this way can yield **34 – 65 % fragment-shader savings under typical loads**.<ref name="Jindal2021">{{cite journal |last1=Jindal |first1=A. |title=Perceptual model for adaptive local shading and refresh rate |journal=ACM Transactions on Graphics |volume=40 |issue=6 |pages=280:1–18 |year=2021 |doi=10.1145/3478513.3480514}}</ref> | |||
== How it works == | |||
Visual acuity falls off steeply outside the central ≈1 – 2° of vision.<ref name="Strasburger2011">{{cite journal |last1=Strasburger |first1=H. |title=Peripheral vision and pattern recognition: a review |journal=Journal of Vision |volume=11 |issue=5 |pages=13 |year=2011 |doi=10.1167/11.5.13}}</ref> FFR divides the render target into concentric zones: | |||
* '''Foveal zone''' – full resolution / 1× shading | |||
* '''Parafoveal zone''' – moderate reduction (e.g., ½×) | |||
* '''Foveal zone | * '''Peripheral zone''' – stronger reduction (e.g., ⅛× or 1⁄16×) | ||
* '''Parafoveal zone | * (optional) '''Far-peripheral zone''' | ||
* '''Peripheral zone | |||
* '''Far peripheral zone | |||
The boundaries | The exact boundaries are tuned per title and headset.<ref name="Meng2020">{{cite journal |last1=Meng |first1=X. |title=Eye-dominance-guided Foveated Rendering |journal=IEEE TVCG |volume=26 |issue=5 |pages=1972–80 |year=2020 |doi=10.1109/TVCG.2020.2973053}}</ref> | ||
==Technical | == Technical implementation == | ||
=== | === Variable Rate Shading (VRS) === | ||
Modern GPUs expose hardware VRS so developers can supply a *shading-rate map* that matches the FFR zones. | |||
* NVIDIA first delivered VRS in Turing GPUs.<ref name="NvidiaVRS">{{cite web |title=Variable Rate Shading (VRS) |url=https://developer.nvidia.com/vrworks/graphics/variablerateshading |website=NVIDIA Developer |access-date=25 Apr 2025}}</ref> | |||
* AMD introduced it in **RDNA 2** (RX 6000 / Radeon PRO W6000) and later cards.<ref name="AMD_RDNA2">{{cite web |title=A Foundation for High-Performing Graphics – AMD RDNA 2 Architecture |url=https://www.amd.com/content/dam/amd/en/documents/products/graphics/workstation/rdna2-explained-radeon-pro-W6000.pdf |website=AMD |year=2021 |access-date=25 Apr 2025}}</ref> | |||
* Mobile Adreno GPUs provide VRS through Vulkan extensions.<ref name="QualcommFFRDef"/> | |||
=== | API support is available in [[DirectX 12 Ultimate]]<ref name="MicrosoftVRS">{{cite web |title=Variable Rate Shading – a scalpel in a world of sledgehammers |url=https://devblogs.microsoft.com/directx/variable-rate-shading-a-scalpel-in-a-world-of-sledgehammers/ |website=Microsoft DirectX Dev Blog |date=18 Mar 2019 |access-date=25 Apr 2025}}</ref>, [[Vulkan]] ‘‘VK_KHR_fragment_shading_rate’’<ref name="KhronosVRS">{{cite web |title=VK_KHR_fragment_shading_rate |url=https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_fragment_shading_rate.html |website=Khronos Registry |access-date=25 Apr 2025}}</ref> and Apple’s [[Metal (API)|Metal]] *Rasterization Rate Maps*. | ||
=== | === Multi-resolution & lens-matched shading === | ||
An earlier vendor-specific approach rendered peripheral tiles to lower-resolution targets and then re-assembled them (NVIDIA *Multi-Res Shading*).<ref name="NvidiaMRS">{{cite web |title=Multi-Res Shading |url=https://developer.nvidia.com/vrworks/graphics/multiresshading |website=NVIDIA Developer |access-date=25 Apr 2025}}</ref> | |||
Valve’s ‘‘Lens-Matched Shading’’ aligns the shading pattern with optical distortion, saving additional work.<ref name="Vlachos2016">{{cite web |last=Vlachos |first=Alex |title=Advanced VR Rendering Performance (slides) |url=https://media.steampowered.com/apps/valve/2016/Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016.pdf |website=GDC 2016 |access-date=25 Apr 2025}}</ref> | |||
== Advantages == | |||
* **Performance:** measured shader-time reductions of 34 – 65 %.<ref name="Jindal2021"/> | |||
* **Lower power / heat:** critical on battery-powered headsets.<ref name="QualcommFFRDef"/> | |||
* **No eye-tracking hardware required.** | |||
== | == Limitations == | ||
=== | * The high-quality region is **fixed**; users who glance sideways may notice blur or aliasing.<ref name="UploadVRFFR">{{cite web |title=What Is Foveated Rendering For VR & How Does It Work? |url=https://uploadvr.com/foveated-rendering-explainer/ |website=UploadVR |date=15 Jul 2022 |access-date=25 Apr 2025}}</ref> | ||
* Aggressive settings can introduce shimmering or visible zone boundaries.<ref name="Tursun2019">{{cite journal |last1=Tursun |first1=O.T. |title=Luminance-Contrast-Aware Foveated Rendering |journal=ACM TOG |volume=38 |issue=4 |pages=98:1–14 |year=2019}}</ref> | |||
== | == Platform & engine support == | ||
* **Standalone VR:** Meta Quest (Go → Quest 3) ships user-selectable FFR levels.<ref name="RoadToVRGo">{{cite web |title=Oculus Go to Offer Fixed Foveated Rendering and up to 72 Hz Refresh Rate |url=https://www.roadtovr.com/gdc-2018-oculus-go-to-support-fixed-foveation-and-up-to-72hz-refresh/ |website=Road to VR |date=21 Mar 2018 |access-date=25 Apr 2025}}</ref> | |||
* **Game engines:** built-in toggles exist in [[Unity (game engine)|Unity]]<ref name="UnityFoveated">{{cite web |title=Foveated rendering (Unity Manual) |url=https://docs.unity3d.com/6000.0/Documentation/Manual/xr-foveated-rendering.html |access-date=25 Apr 2025}}</ref> (including OpenXR plug-in<ref name="UnityOpenXR">{{cite web |title=Foveated rendering in OpenXR |url=https://docs.unity3d.com/Packages/com.unity.xr.openxr@1.13/manual/features/foveatedrendering.html |access-date=25 Apr 2025}}</ref>) and [[Unreal Engine]] 4.27+.<ref name="UnrealVRS">{{cite web |title=VR Performance Features | UE 4.27 Documentation |url=https://docs.unrealengine.com/4.27/en-US/SharingAndReleasing/XRDevelopment/VR/VRPerformanceAndProfiling/PerformanceFeatures |access-date=25 Apr 2025}}</ref> | |||
* **Consoles & PC VR:** No system-level FFR exists on the original PlayStation VR, but some titles (e.g., ''Farpoint'') implemented custom multi-resolution shading.<ref name="FarpointTech">{{cite web |title=A Look Inside Farpoint’s Rendering Techniques for VR |url=https://www.impulsegear.com/a-look-inside-farpoints-rendering-techniques-for-vr |website=Impulse Gear Dev Blog |date=4 June 2018 |access-date=25 Apr 2025}}</ref> | |||
* | |||
* | |||
* | |||
* | |||
* | |||
* | |||
* | |||
== | |||
== Comparison with Dynamic Foveated Rendering == | |||
{| class="wikitable" | {| class="wikitable" | ||
! Feature !! Fixed foveated rendering !! Dynamic foveated rendering | |||
! Feature | |||
|- | |- | ||
| | | Eye-tracking required || No || Yes | ||
|- | |- | ||
| | | Typical shader savings || 34–65 %<ref name="Jindal2021"/> || Up to ≈70 %<ref name="Patney2016"/> | ||
|- | |- | ||
| | | User may notice blur if looking off-centre || Yes || No (if tracking latency is low) | ||
|- | |- | ||
| | | Hardware cost || Lower || Higher | ||
|} | |} | ||
== Future research == | |||
* **Hybrid FFR + DFR** schemes that fall back to fixed maps when gaze data is unreliable.<ref name="Langbehn2020">{{cite conference |last1=Langbehn |first1=E. |title=Hybrid Foveated Rendering: Combining Progressive Meshes and Fixed Foveated Rendering for VR |booktitle=SIGGRAPH Posters |year=2020}}</ref> | |||
== | * **Neural reconstruction** (e.g., DeepFovea) that regenerates fine detail in the low-resolution periphery.<ref name="DeepFovea2019">{{cite journal |last1=Kaplanyan |first1=A. |title=DeepFovea: Neural Reconstruction for Foveated Rendering and Video Compression |journal=ACM TOG |volume=38 |issue=6 |pages=212:1–13 |year=2019 |doi=10.1145/3355089.3356557}}</ref> | ||
* | |||
* | |||
* | |||
* | |||
* | |||
** | |||
** | |||
==See | == See also == | ||
* [[Variable Rate Shading]] | |||
* [[Variable Rate Shading]] | |||
* [[Eye tracking]] | * [[Eye tracking]] | ||
* [[Virtual reality optimisation techniques]] | |||
* [[Virtual reality | |||
==References== | == References == | ||
<references /> | <references /> | ||
Revision as of 12:01, 25 April 2025
- See also: Terms and Technical Terms
Fixed foveated rendering (FFR) is a performance–optimisation technique used primarily in Virtual Reality (VR) and Augmented Reality (AR). It exploits the characteristics of the human visual system—very high acuity in the Fovea and much lower acuity in the periphery—to lower the rendering workload on a GPU without noticeably degrading perceived image quality.[1][2]
Unlike Dynamic foveated rendering (DFR)—which relies on Eye tracking to move the high-quality region to the user’s current gaze—**FFR keeps that region fixed**, typically centred in the view, and progressively reduces resolution or shading rate towards the edges.[3] Because fragment shading is the dominant cost in modern high-resolution VR, reallocating it in this way can yield **34 – 65 % fragment-shader savings under typical loads**.[4]
How it works
Visual acuity falls off steeply outside the central ≈1 – 2° of vision.[5] FFR divides the render target into concentric zones:
- Foveal zone – full resolution / 1× shading
- Parafoveal zone – moderate reduction (e.g., ½×)
- Peripheral zone – stronger reduction (e.g., ⅛× or 1⁄16×)
- (optional) Far-peripheral zone
The exact boundaries are tuned per title and headset.[6]
Technical implementation
Variable Rate Shading (VRS)
Modern GPUs expose hardware VRS so developers can supply a *shading-rate map* that matches the FFR zones.
- NVIDIA first delivered VRS in Turing GPUs.[7]
- AMD introduced it in **RDNA 2** (RX 6000 / Radeon PRO W6000) and later cards.[8]
- Mobile Adreno GPUs provide VRS through Vulkan extensions.[1]
API support is available in DirectX 12 Ultimate[9], Vulkan ‘‘VK_KHR_fragment_shading_rate’’[10] and Apple’s Metal *Rasterization Rate Maps*.
Multi-resolution & lens-matched shading
An earlier vendor-specific approach rendered peripheral tiles to lower-resolution targets and then re-assembled them (NVIDIA *Multi-Res Shading*).[11] Valve’s ‘‘Lens-Matched Shading’’ aligns the shading pattern with optical distortion, saving additional work.[12]
Advantages
- **Performance:** measured shader-time reductions of 34 – 65 %.[4]
- **Lower power / heat:** critical on battery-powered headsets.[1]
- **No eye-tracking hardware required.**
Limitations
- The high-quality region is **fixed**; users who glance sideways may notice blur or aliasing.[13]
- Aggressive settings can introduce shimmering or visible zone boundaries.[14]
Platform & engine support
- **Standalone VR:** Meta Quest (Go → Quest 3) ships user-selectable FFR levels.[15]
- **Game engines:** built-in toggles exist in Unity[16] (including OpenXR plug-in[17]) and Unreal Engine 4.27+.[18]
- **Consoles & PC VR:** No system-level FFR exists on the original PlayStation VR, but some titles (e.g., Farpoint) implemented custom multi-resolution shading.[19]
Comparison with Dynamic Foveated Rendering
| Feature | Fixed foveated rendering | Dynamic foveated rendering |
|---|---|---|
| Eye-tracking required | No | Yes |
| Typical shader savings | 34–65 %[4] | Up to ≈70 %[3] |
| User may notice blur if looking off-centre | Yes | No (if tracking latency is low) |
| Hardware cost | Lower | Higher |
Future research
- **Hybrid FFR + DFR** schemes that fall back to fixed maps when gaze data is unreliable.[20]
- **Neural reconstruction** (e.g., DeepFovea) that regenerates fine detail in the low-resolution periphery.[21]
See also
References
- ↑ 1.0 1.1 1.2 "The Evolution of High-Performance Foveated Rendering on Adreno". 7 July 2021. https://www.qualcomm.com/developer/blog/2021/07/evolution-high-performance-foveated-rendering-adreno.
- ↑ "Save GPU with Eye-Tracked Foveated Rendering". 19 Oct 2022. https://developers.meta.com/horizon/blog/save-gpu-with-eye-tracked-foveated-rendering/.
- ↑ 3.0 3.1 (2016). "Towards foveated rendering for gaze-tracked virtual reality".{Template:Journal. 35(6)
- 179:1–12. doi:10.1145/2980179.2980246.
- ↑ 4.0 4.1 4.2 (2021). "Perceptual model for adaptive local shading and refresh rate".{Template:Journal. 40(6)
- 280:1–18. doi:10.1145/3478513.3480514.
- ↑ (2011). "Peripheral vision and pattern recognition: a review".{Template:Journal. 11(5)
- 13. doi:10.1167/11.5.13.
- ↑ (2020). "Eye-dominance-guided Foveated Rendering".{Template:Journal. 26(5)
- 1972–80. doi:10.1109/TVCG.2020.2973053.
- ↑ "Variable Rate Shading (VRS)". https://developer.nvidia.com/vrworks/graphics/variablerateshading.
- ↑ "A Foundation for High-Performing Graphics – AMD RDNA 2 Architecture". 2021. https://www.amd.com/content/dam/amd/en/documents/products/graphics/workstation/rdna2-explained-radeon-pro-W6000.pdf.
- ↑ "Variable Rate Shading – a scalpel in a world of sledgehammers". 18 Mar 2019. https://devblogs.microsoft.com/directx/variable-rate-shading-a-scalpel-in-a-world-of-sledgehammers/.
- ↑ "VK_KHR_fragment_shading_rate". https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_fragment_shading_rate.html.
- ↑ "Multi-Res Shading". https://developer.nvidia.com/vrworks/graphics/multiresshading.
- ↑ Vlachos, Alex. "Advanced VR Rendering Performance (slides)". https://media.steampowered.com/apps/valve/2016/Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016.pdf.
- ↑ "What Is Foveated Rendering For VR & How Does It Work?". 15 Jul 2022. https://uploadvr.com/foveated-rendering-explainer/.
- ↑ (2019). "Luminance-Contrast-Aware Foveated Rendering".{Template:Journal. 38(4)
- 98:1–14.
- ↑ "Oculus Go to Offer Fixed Foveated Rendering and up to 72 Hz Refresh Rate". 21 Mar 2018. https://www.roadtovr.com/gdc-2018-oculus-go-to-support-fixed-foveation-and-up-to-72hz-refresh/.
- ↑ "Foveated rendering (Unity Manual)". https://docs.unity3d.com/6000.0/Documentation/Manual/xr-foveated-rendering.html.
- ↑ "Foveated rendering in OpenXR". https://docs.unity3d.com/Packages/[email protected]/manual/features/foveatedrendering.html.
- ↑ "VR Performance Features". https://docs.unrealengine.com/4.27/en-US/SharingAndReleasing/XRDevelopment/VR/VRPerformanceAndProfiling/PerformanceFeatures.
- ↑ "A Look Inside Farpoint’s Rendering Techniques for VR". 4 June 2018. https://www.impulsegear.com/a-look-inside-farpoints-rendering-techniques-for-vr.
- ↑ Langbehn, E. (2020). "Hybrid Foveated Rendering: Combining Progressive Meshes and Fixed Foveated Rendering for VR". SIGGRAPH Posters.
- ↑ (2019). "DeepFovea: Neural Reconstruction for Foveated Rendering and Video Compression".{Template:Journal. 38(6)
- 212:1–13. doi:10.1145/3355089.3356557.