Commit Graph

76 Commits

Author SHA1 Message Date
bjorn 721d4e180d Clean up OpenXR extensions;
One per line, with scannable name strings.
2022-03-21 17:01:03 -07:00
bjorn 428b569bfc OpenXR uses COUNTOF; 2022-03-21 17:00:56 -07:00
bjorn 339f75f579 Sketch support for XR_FB_hand_tracking_aim;
This adds support for /point devices and the trigger axis (mapped to
pinch) with hand tracking.
2022-03-21 15:45:48 -07:00
bjorn 0c17046847 Add eye/gaze device;
This provides an accurate pose for what the user is looking at, instead
of the poses of the individual eyes.  Supported on some OpenXR
implementations.
2022-03-21 15:05:23 -07:00
bjorn 9214ac8b29 rm unnecessary include; 2022-03-21 12:33:46 -07:00
bjorn ad4072d109 OpenXR: Bail if extensions can't be queried; 2022-03-21 12:27:32 -07:00
bjorn 0b2c2525ba rm openxr_oculus.h;
It is now an empty file in the Oculus OpenXR SDK, because the
corresponding extensions have been integrated into the main OpenXR SDK.
2022-03-21 01:00:28 -07:00
bjorn bebeff4fc2 OpenXR: Support getDisplayFrequency;
Quest only.  We don't support setting/querying/events yet, since it
isn't clear that this will be standardized behavior.
2022-03-21 00:51:24 -07:00
bjorn e4eb4e0df1 OpenXR: Support vive trackers; 2022-03-20 18:04:06 -07:00
bjorn ef9754c114 OpenXR: Rework actions;
Inline in the driver, less hand-centric.
2022-03-20 15:39:02 -07:00
bjorn 29cbe63b1d OpenXR: Add support for XR_FB_hand_tracking_mesh;
This adds the ability to load and animate a mesh for hand tracking on
the Oculus Quest.  It is more or less identical to the current
functionality on the vrapi driver.

One key part of this change is that getPose in OpenXR will see if action
spaces are active before locating their spaces.  This is due to some
behavior observed on the Oculus Quest with hand tracking  where pose
actions for controllers would return invalid data with all of the
location flags erroneously set.  The only way to detect and work around
this is to check the pose action state.  When this happens, we fall back
to returning the pose of the wrist joint, which is where the Oculus hand
mesh wants to be drawn.  In the event that both controllers and hand
tracking are active, the controller pose will be returned by getPose but
the wrist joint can still be accessed using getSkeleton.

Note that this does not yet include support for properly scaling the
hand mesh.

There are numerous opportunities for optimization here that may be
investigated in the future, though performance is well within an
acceptable range right now.
2022-03-19 17:49:13 -07:00
bjorn 36c7b93fed Details; 2022-03-17 19:30:53 -07:00
bjorn 99e2809db5 OpenXR: formatting; Use infinite swapchain wait timeout; 2022-03-17 19:30:21 -07:00
bjorn ad4ce298f1 s/os_get_context/os_get_win32_context; 2022-03-17 19:14:34 -07:00
bjorn c35c2bb7eb OpenXR doesn't crash if lovr.draw errors;
renderTo is idempotent in openxr driver now.
2022-03-17 19:11:07 -07:00
bjorn 99a42c5c71 OpenXR: Support /point devices; 2022-03-17 17:58:30 -07:00
bjorn 4417481a92 OpenXR: Support ABXY buttons; 2022-03-17 16:33:37 -07:00
bjorn 450ee72c89 OpenXR: Windows graphics plugin properly uses HDC instead of HWND;
The HWND was getting passed in directly instead of first converting
it to an HDC.  This was causing SteamVR to fail to create its OpenGL
context.
2022-03-15 15:21:31 -07:00
bjorn 17c05b1760 Merge branch 'master' into dev 2022-03-14 14:10:25 -07:00
bjorn a11121d739 OpenXR: fix thumbrest action; 2022-03-14 14:10:12 -07:00
bjorn fdfcb5539f Merge branch 'master' into dev 2022-03-14 13:19:59 -07:00
bjorn 54154a643a Thumbrest support; 2022-03-06 17:43:04 -08:00
bjorn 3ff64fa3ef OpenXR: Fix instance extension enumeration; 2022-01-29 15:31:44 -08:00
bjorn 8d3d233e91 Include unknwn.h to fix OpenXR on some windows systems; 2021-12-27 15:16:50 +02:00
bjorn 20e4567bd6 Merge branch 'master' into dev 2021-12-20 17:12:39 +02:00
bjorn e1527a949a openxr: fix xrLocateViews call;
- The input parameter is a count, not a size
- The view structs must be initialized with a type
2021-10-24 13:03:05 -07:00
bjorn 0582746137 Fix OpenXR compilation; 2021-06-12 14:42:30 -06:00
bjorn 92400df89d lovr.headset.init -> lovr.headset.start;
- We need some headset initialization to happen upfront
- But we still want some delayed initialization for when graphics is ready
- Go back to headset initialization happening when module is required
- Add lovr.headset.start that can be used for post-graphics init
2021-06-10 17:26:15 -06:00
Jakob Bornecrantz 28a0356a9a Add overlay support for OpenXR 2021-04-16 14:20:05 -06:00
Jakob Bornecrantz 70ef04e595 Add overlay parameter to headset init 2021-04-16 14:20:05 -06:00
Jakob Bornecrantz 909b43f34a Order OpenXR extension adding 2021-04-16 14:20:05 -06:00
bjorn 4f5adbc64c lovr.system; 2021-02-25 09:00:12 -07:00
bjorn 72284c2c5b Merge branch 'master' into dev 2021-02-12 08:16:36 -07:00
bjorn bc4cde1653 Adjust lovrRelease signature; 2021-02-08 17:52:26 -07:00
bjorn 3ded60948f rm core/ref; rm lovrAlloc; util does refcounting; 2021-02-08 17:26:44 -07:00
bjorn 1dd692a009 lovrPlatformGetWindow -> lovrPlatformGetWin32Window; 2021-02-07 16:57:08 -07:00
bjorn 323436898a Add WIN32_LEAN_AND_MEAN; 2021-02-07 16:49:34 -07:00
Christoph Haag 394759c1ab initialize XrSystemProperties type 2021-01-22 15:43:01 +01:00
Jakob Bornecrantz cf22c11dd5 Do not try to create hand tracking devices if handTracking is not supported 2020-11-18 21:31:09 +00:00
Jakob Bornecrantz ca04882093 OpenXR: Add support for X11 and EGL on Linux 2020-11-16 17:02:51 -07:00
bjorn c6b4981389 Fix OpenXR view matrix; 2020-11-16 17:02:51 -07:00
Bjorn 8a3d365268
Merge pull request #299 from Wallbraker/linux-openxr
Linux OpenXR support
2020-11-16 13:51:41 -07:00
Jakob Bornecrantz 1400cd201a OpenXR: Add support for X11 and EGL on Linux 2020-11-15 22:51:20 +00:00
bjorn a139ed33e5 Fix OpenXR view matrix; 2020-11-15 22:49:00 +00:00
bjorn e533adf649 openxr indentation; 2020-11-12 18:08:05 -07:00
bjorn 362e5525e7 Fix OpenXR view matrix; 2020-11-12 18:08:04 -07:00
Jakob Bornecrantz 22a14e1013 OpenXR: Make sure to set types for XrActionState[Boolean|Float] structs 2020-10-25 01:20:44 +01:00
Jakob Bornecrantz e7d0a73353 OpenXR: Fix right actions not being marked as active in xrSyncActions call 2020-10-25 00:14:17 +01:00
Jakob Bornecrantz b8e3c187ed OpenXR: Fixes for implementations that are more strict with validation 2020-10-24 18:13:41 +01:00
bjorn 8db2f67b45 headset_openxr fix; 2020-09-29 02:49:17 -06:00