-
-
Notifications
You must be signed in to change notification settings - Fork 21.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improvements to VRS/Foveated rendering #89894
Improvements to VRS/Foveated rendering #89894
Conversation
@DarioSamo this is giving me a:
Any chance you can have a look at that? May be an existing validation error for VRS but just noticed it working on this. I think this may be caused by the ARG not recognising the VRS texture being used as a VRS attachment and not marking it as being read from in that pass? |
I'm still not crazy about storing the VRS data on That said, it's not a hill I'm willing to die on. :-) |
I tested this on Quest 3 using the demo project linked from PR #85824. I'm still seeing the same frame time gains that I saw when testing that issue, but I'm getting some weird flickering (even with VRS turned off) that I didn't get when I tested that PR a month or so ago. I tried switching to So, in summary, testing seems good :-) |
I get what you're saying, and maybe that is a nicer way to do it. What irks me is that this will likely always be the code path. It's kind of a weird one because it doesn't really belong to the XR implementation, it's a graphics implementation related to XR. |
This is a bug that is unique to the Quest 3 and that has been plaguing us since the Q3 came out. Its sporadic but I think our recent improvements to the rendering engine has made it more noticeable. |
7b43ddb
to
6a0e025
Compare
@dsnopek mind giving this another look? I've moved the logic into a helper object which solves your issue. I've also fixed a few things so it works well now. @Malcolmnixon if you have time for it as well, that would be great, this solves how strong the default VRS is currently. I've also added support for adjusting the VRS based on focus if the eye gaze interaction extension is available. Sadly we can't test this on Quest Pro yet as it requires the work in #85824 to be finished. VRS does work nicely on Quest 3. You can use the following project to test: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dsnopek mind giving this another look? I've moved the logic into a helper object which solves your issue.
This looks great to me! It solves all my concerns around storing data on XRInterface
and having a Vulkan-specific default implementation.
VRS does work nicely on Quest 3. You can use the following project to test:
https://github.com/BastiaanOlij/godot_openxr_demo/tree/add_more_testing
I also tested on Quest 3, but using the same project I tested with last time (which is originally based on your test_vrs_mobile
branch but updated for the latest API), rather than the project linked above.
It works great! I'm still seeing the same frame time gains as previously.
I only have a couple of nitpicks.
6a0e025
to
9042ddf
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I haven't re-tested, but with the latest changes, the code looks great to me!
Thanks! |
This PR extracts the improvements to the fragment rate shading improvements from #85824, I wanted to extract these as I'm still having issues with the density map extension and will likely lift that to 4.4 while I'd like these changes to still make it into 4.3.
This also applies a few fixes I missed, makes the map we provide with
VRS_XR
match the format forVRS_TEXTURE
, and adds controls to adjust the VRS map creates forVRS_XR
by default.Our default fallback implementation in
XRInterface
has now been moved into a helper object and is only implemented forMobileVRInterface
andOpenXRInterface
. It has been greatly improved over the older version.I've created an example Godot project that allows you to play with this without requiring XR hardware:
TestStereoVRS.zip