We are a fully immersive VR app using URP, and we are seeing an issue with the newest 0.7.1 VisionOS package and Unity 2022.3.16f1 that seems to be related to foveated rendering. Most of the time it works properly, but at certain points it will enter what I can best describe as a sort of “tunnel vision”. I’m not completely sure what’s happening - it seems like the center area of the user’s gaze still renders properly, but the peripheral areas stop getting redrawn. In some cases it only happens for a few seconds, but it persists through our entire loading screen and throughout certain experiences we have.
Since it mostly happens during points where we are loading or initializing, it seems likely there might be some sort of resource constraint triggering it, but we also noticed it occurring at certain times when the user looks
~90 degrees to the side or up.
When it does happen it’s pretty uncomfortable, so this is a blocker for us. The issue went away when we reverted to 2022.3.15f1.
Hi there! Happy new year, and sorry to hear you’re having trouble.
The “tunnel vision” you describe sounds like what happens if you try to enable foveated rendering on the visionOS side but not the Unity side. This can happen, for example, if you just set the “enable foveation” flag in the Swift code on earlier versions of the plugin that don’t support foveated rendering.
However, in that case it just always looks wrong, regardless of load. I haven’t seen the issue you are describing, but it does sound like it’s related to foveated rendering.
I can try to reproduce this issue on my end, but it will help us solve this more quickly if you can report a bug with a project that demonstrates the issue. Our bug reporter can be pretty slow, so if you prefer to use a secure file sharing service like Google Drive or Dropbox, please feel free to do that and just share a link here in this thread or via direct message to me. I appreciate that you may not be able to share the exact project you are currently working on, but it will help to know exactly what type of load causes the issue, in case it’s something specific.
I’m sure you’ve considered something like this, but is it possible to temporarily fade to black during these loading screens? It’s not a permanent solution, but may help mitigate comfort issues while still allowing you to test with foveated rendering.
If we can figure out what’s going on and/or resolve it for the areas where it’s happening just for an instant, going to black loading screen might be feasible.
If it would help, I can share an Xcode project built for device right away that has the issue. Our repo is too large to share easily, but I’ll also work on getting a smaller Unity project that reproduces the issue. Thanks!
Hi there! @pknndy and I have been discussing this issue over DM, but I wanted to share the solution here.
It turns out this was caused by the URP_Renderer asset having its Depth Texture Mode set to After Transparents. If no opaque objects are visible, you will see the “tunnel vision” or “fish eye” glitch. Actually, I prefer to think of it as a “funhouse mirror”
Anyway, we’ll be adding a project validation rule to catch this setting in the near term, and looking into a proper solution to support this mode after that.
Note that After Transparents is the default value, so you will need to change this setting if you haven’t already modified it.
So for our project, Depth Texture Mode was already set to After Opaques…Is there a manual out there that outlines recommended renderpipeline settings for VisionOS? We’re still getting the fisheye effect when you turn and look at certain angles…
On Unity version 2022.3.20.
Edit: I believe there was just a general issue with my Render Pipeline Asset or Universal Render Data file and creating a new one, then ensuring the Depth Texture Mode was set to After Opaques, fixed the issue.