I have a question about rendering performance guidelines for visionOS ImmersiveSpace.
Since visionOS uses foveated rendering, why are polygon count and scene complexity still treated as strict performance constraints for immersive content?
My understanding is that foveated rendering reduces rendering cost outside the user’s central field of view. If so, should polygon count mainly matter near the gaze/foveal region, while objects in the peripheral area are much cheaper to render?
Specifically:
-
Does foveated rendering reduce only pixel shading cost, or does it also significantly reduce geometry processing cost?
-
Are polygons outside the foveal region still submitted, culled, transformed, and rasterized in a way that affects CPU/GPU performance?
-
For large immersive environments, should developers still optimize total scene polygon count, or focus mainly on what appears near the user’s gaze?
-
Are there recommended guidelines for LOD, culling, and polygon budgets in visionOS immersive spaces, even when foveated rendering is enabled?
I’d like to better understand how foveated rendering affects geometry budgets, and how developers should think about scene complexity for immersive visionOS apps.
Any guidance would be appreciated.
While foveated rendering does help to reduce rendering costs it doesn't dramatically change the nature of the GPU.
Foveation largely affects things like the pixel shading rates. So it can make things faster in the shading costs, you still have to pay the cost of loading the geometry and textures into memory.
Developers should ideally not depend upon foveation when creating the scene, because it is a runtime system optimization and you cannot control where the user might look. Instead use traditional techniques to draw a users attention to a specific location so you can allocate your polygon and texture budgets in the areas that matter most for your content.
You should consider the budget of your whole scene. While meshes outside your users view can be culled, the user may still turn around bringing them into view.
I do not believe we have explicit recommended guidelines but I do recommend viewing this session on targeting Vision Pro content https://developer.apple.com/videos/play/wwdc2024/10186/