-
Notifications
You must be signed in to change notification settings - Fork 25
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
[DRAFT] Implement XR_FB_space_warp extension #222
base: master
Are you sure you want to change the base?
Conversation
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.
Thanks, this is looking great so far!
Some additional notes about the demo
- I think this should get it's own sample rather than modifying the main "demo" project
- There is no plain
MeshInstance3D
moving, only the more advanced cases. We should have the simplest case shown too - Having a button to enable/disable AppSW would be nice
- I think we should add a plane with a very busy texture (plaid?) behind all the moving objects to make the artifacts more obvious
plugin/src/main/cpp/extensions/openxr_fb_space_warp_extension_wrapper.cpp
Outdated
Show resolved
Hide resolved
plugin/src/main/cpp/extensions/openxr_fb_space_warp_extension_wrapper.cpp
Outdated
Show resolved
Hide resolved
plugin/src/main/cpp/include/extensions/openxr_fb_space_warp_extension_wrapper.h
Outdated
Show resolved
Hide resolved
plugin/src/main/cpp/extensions/openxr_fb_space_warp_extension_wrapper.cpp
Outdated
Show resolved
Hide resolved
plugin/src/main/cpp/include/extensions/openxr_fb_space_warp_extension_wrapper.h
Outdated
Show resolved
Hide resolved
68affbe
to
c6a129b
Compare
@dsnopek I'd done the previous XR sample projects as their own PRs following the merging of the corresponding extensions. I had planned to just keep the simple test scene in the demo project while this PR remained as a draft. I see nothing wrong with expanding on it and just adding an XR sample project to this PR as well though! I will do that. |
4b64881
to
a9620f2
Compare
ae73152
to
ad2b8fa
Compare
I've added a fair amount of updates:
I will open this PR once godotengine/godot#97151 is merged! |
ad2b8fa
to
f372ec3
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.
Thanks!
This is starting to look really good! I especially like all the changes to the sample project - it'll make it very easy for developers to see the sort of artifacts that AppSW can generate, and seeing them also helps us confirm that things are doing what we would expect :-)
plugin/src/main/cpp/extensions/openxr_fb_space_warp_extension_wrapper.cpp
Outdated
Show resolved
Hide resolved
plugin/src/main/cpp/extensions/openxr_fb_space_warp_extension_wrapper.cpp
Outdated
Show resolved
Hide resolved
plugin/src/main/cpp/extensions/openxr_fb_space_warp_extension_wrapper.cpp
Outdated
Show resolved
Hide resolved
plugin/src/main/cpp/extensions/openxr_fb_space_warp_extension_wrapper.cpp
Show resolved
Hide resolved
a21de58
to
b0d49cd
Compare
plugin/src/main/cpp/extensions/openxr_fb_space_warp_extension_wrapper.cpp
Outdated
Show resolved
Hide resolved
void OpenXRFbSpaceWarpExtensionWrapper::set_space_warp_enabled(bool p_enable) { | ||
enabled = p_enable; | ||
} |
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.
Do we have a use-case for this setter, given space warp can also be enabled via the project settings?
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.
Yes. There may be whole parts of the game where you do or don't want to use space warp. For example, in menus or other non-performance intensive areas, you may want to leave it off, and only turn it on when you enter real gameplay.
b0d49cd
to
e87454f
Compare
c503ba9
to
203591c
Compare
I've updated this PR (and the setup instructions in the description) so that it can also be used with the new mobile renderer motion vectors PR: godotengine/godot#100283 |
FYI, the tests are failing because it's using Godot v4.3 for the XrSim tests and this depends on Godot changes. So, we'll need to wait until there is a 4.4-dev release which includes godotengine/godot#100282 and then update the CI variable to use that version |
plugin/src/main/cpp/extensions/openxr_fb_space_warp_extension_wrapper.cpp
Outdated
Show resolved
Hide resolved
203591c
to
592561b
Compare
Adds an extension wrapper implementation of XR_FB_space_warp.
Setup
UPDATED (2024-12-12): Both mobile and compatibility renderers are now supported.
In order to test AppSW out (compatibility renderer only at the moment):
thirdparty/godot-cpp
submodule of this repo tomaster
branchThen you should be able to build the plugin like normal. Currently in this PR, AppSW is enabled by default, so no need to enable it.
Debug View
UPDATED (2024-11-5): I've added a new Meta Space Warp sample project to this PR, feel free to use that for testing.
I've (minimally) added multiple scenarios of moving elements in the demo project (particles/multimesh/skeleton) for testing purposes.If you'd like a visual of the underlying motion vectors that are generated, you can use the followingadb
command.Sometimes I find the project crashes when running the above command, but the debug view is visible upon restarting the app. To exit this view mode you can run:
To Do
UPDATED (2024-11-5): These have all been completed.
appSpaceDeltaPose
.XR_COMPOSITION_LAYER_SPACE_WARP_INFO_FRAME_SKIP_BIT_FB
flag to skip frames of spacewarp.