Add OpenXR client integration with XR locomotion and controller support #27
Draft
shipilovden wants to merge 16 commits intoglaretechnologies:masterfrom
Draft
Add OpenXR client integration with XR locomotion and controller support
#27shipilovden wants to merge 16 commits intoglaretechnologies:masterfrom
shipilovden wants to merge 16 commits intoglaretechnologies:masterfrom
Conversation
Contributor
|
I'm going to get hold of a VR device then try this branch out. However we want to move a lot of this code from Substrata to glare-core. There should also be as few additions to GUIClient as possible, because it's already gigantic! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
This PR extracts the XR-only work from the larger downstream Metasiberia branch and rebases it onto current
masteras a focused upstream contribution.The result is an initial native desktop OpenXR integration for
gui_client, plus the follow-up runtime and gameplay fixes that were required to make the XR path practically usable:This PR intentionally does not include Metasiberia-specific product work, release-prep changes, website changes, docs, notes, or unrelated branch content. The scope here is limited to XR-relevant client/runtime/build changes only.
Why This PR Exists
The XR work was originally developed inside a much broader downstream branch that also contained unrelated product and release activity. That made the OpenXR work difficult to review upstream because reviewers would have had to sift through a large amount of unrelated code and content.
This PR separates the XR implementation into an upstream-reviewable branch with a clean base on
master, so the OpenXR work can be evaluated on its own technical merits.High-Level Scope
At a high level, this PR does four things:
Extracted Commit Series
This PR is composed from the XR-focused work that previously lived in the downstream branch. The functional commit series included in the extracted branch is:
ac0ac111Add initial OpenXR runtime integration7eb32d3aRefine XR avatar grounding and recenterc85bf784Hide local avatar mesh in XR first personde88bc93Add XR teleport locomotion4a127d68Add XR controller smooth locomotion bindingsf682cd36Show XR controller proxies and fix forward axis21d3538fReduce XR controller proxy flicker834eba64Load Vive Focus 3 XR controller render modelsd3c37d61Load XR controller render models at startupe4e6c34bStabilise XR controller visuals and reduce SteamVR eye size5e5deeacUse direct XR eye render path3e33b7e2Restore XR final imaging and portal rendering2b05e6ffAdd Meta Quest OpenXR controller profilesecd85bbfFix XR local avatar visibility regressionThe final two cleanup commits in the extracted branch are whitespace-only cleanup needed after reconstructing the branch history on top of current
master:144c89feClean XR patch whitespace87862457Fix XR whitespace nitsDetailed Functional Breakdown
1. Build and feature gating
gui_clientCMake layers.XR_SUPPORT-gated compilation so the client can build with or without OpenXR support depending on environment/toolchain availability.2. OpenXR runtime and session lifecycle
3. Desktop client integration
GUIClientlifecycle instead of implementing XR as a separate standalone executable path.4. Rendering path work
5. Avatar behavior in XR
6. XR movement and interaction
7. Controller visuals and device-specific support
Review Guidance
The files with the largest diffs are central client files such as
GUIClient.cpp,GUIClient.h, andMainWindow.cpp. Those files already sit at major orchestration points in the native client, so the XR feature naturally had to be connected there.Also, because this PR was reconstructed from downstream XR commits that originally lived inside a larger branch, some of the diff volume is inflated by extraction cleanup and whitespace normalization. Even where the textual diff is large, the intended semantic scope remains XR-only.
Reviewers may find it easiest to review this PR in the following order:
gui_client/XRSupport.*gui_client/XRSession.*gui_client/CMakeLists.txtand top-levelCMakeLists.txtMainOptionsDialog.*/.uiGUIClient.*GlWidget.*MainWindow.cppFile-by-File Breakdown
CMakeLists.txtgui_client/CMakeLists.txtgui_clientto build withXR_SUPPORT. This is the main CMake entry point for turning the XR code on.gui_client/XRSupport.hgui_client/XRSupport.cppgui_client/XRSession.hgui_client/XRSession.cppgui_client/GUIClient.hgui_client/GUIClient.cppgui_client/GlWidget.hgui_client/GlWidget.cppgui_client/MainWindow.cppgui_client/MainOptionsDialog.hgui_client/MainOptionsDialog.cppgui_client/MainOptionsDialog.uigui_client/AvatarGraphics.hgui_client/AvatarGraphics.cppgui_client/AvatarGroundingUtils.hgui_client/AvatarSettingsDialog.cppgui_client/SDLClient.cppWhat Is Explicitly Out of Scope
This PR does not include:
Those were intentionally left out so the upstream review surface remains focused on the OpenXR client/runtime work.
Validation Performed
I validated the extracted branch as follows:
masterso the PR contains only XR-relevant filesorigin/masteris limited to the XR/build/client files listed abovegit diff --check origin/master...HEADI did not run a full project build or end-to-end runtime XR session test in this environment, so this PR should be considered code- and scope-cleaned, but not fully runtime-validated here.