bjorn
1f3c5dea79
dt uses headset time instead of system time;
2022-03-22 17:52:16 -07:00
bjorn
2da18d419b
mv util src;
2022-03-22 00:13:38 -07:00
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
bjorn
caca0ef71c
t.headset.supersample;
...
Can be used to change the size of the headset texture that gets
submitted to the VR runtime. It can be a boolean or a number.
2020-09-25 15:41:30 -07:00
bjorn
f1447fd69a
lovr.graphics.get/setViewPose; lovr.graphics.get/setProjection;
2020-09-24 19:03:37 -07:00
bjorn
48a347ad01
mat4_fromQuat; mat4_getFov; getViewPose/Angles fixes;
2020-09-24 04:59:53 -07:00
bjorn
98918c5de5
OpenXR: rm visibility mask;
...
Haven't found a runtime that supports it yet.
2020-08-31 16:32:18 -06:00
bjorn
74546f357c
OpenXR: Use multiple canvases instead of a single one;
...
To avoid constant framebuffer completeness checks.
2020-08-31 16:31:17 -06:00
bjorn
28144c8143
OpenXR Android stuff;
2020-08-29 19:45:52 -06:00
bjorn
ee8848d4f0
OpenXR: Lazily create hand trackers;
...
Works around some behavior observed with Ultraleap API layer.
2020-08-28 20:58:58 -06:00
bjorn
cc02175241
OpenXR hand tracking;
2020-08-28 17:05:42 -06:00
bjorn
17616b8415
OpenXR: load extensions;
2020-08-28 17:05:42 -06:00
bjorn
37522bd8a3
OpenXR: MSAA;
2020-08-26 13:42:42 -06:00
bjorn
17e250c415
OpenXR: Cleanup/warnings;
2020-08-26 13:42:42 -06:00
bjorn
aa52fc9ca4
OpenXR: Session fixes; getMirrorTexture; Frame submission;
2020-08-26 13:42:42 -06:00
bjorn
420ab91575
OpenXR: Fix clipFar;
2020-08-26 13:42:42 -06:00
bjorn
833fabb733
OpenXR: Add identity pose to reference spaces;
2020-08-26 13:42:42 -06:00
bjorn
93d82a8d14
OpenXR: Call xrGetOpenGLGraphicsRequirementsKHR;
2020-08-26 13:42:42 -06:00
bjorn
beb281a43d
Pass instance to xrResultToString;
2020-08-26 13:42:42 -06:00
bjorn
2ced7c2c16
OpenXR: More robust graphics plugin;
2020-08-24 03:09:26 -06:00
bjorn
244e6cdd75
OpenXR focus events;
2020-08-24 02:10:12 -06:00
bjorn
0b94fe336e
Reorganize OpenXR graphics extension stuff;
2020-08-24 02:04:06 -06:00
bjorn
5ab8dffd8d
Fix OpenXR axis actions;
...
2D axes can't be used as 2D actions and instead need to be represented
as two 1D axes. Also fixup oculus touch / valve index action paths.
2020-08-23 16:11:20 -06:00
bjorn
9f769470e6
Fix OpenXR OpenGL swapchain type;
2020-08-23 16:10:57 -06:00
bjorn
0439c932ce
openxr: Move actions into resources;
2020-08-22 15:40:52 -06:00
bjorn
f364fe030b
Make Windows platform functions more private;
2020-08-18 21:21:35 -06:00
bjorn
17ce02d429
Fix OpenXR compile errors and add some android support;
2020-08-18 21:10:06 -06:00
bjorn
7e941cd22f
lovr.headset.animate; Animated OpenVR controller models;
...
- lovr.headset.newModel accepts an optional options table as the
second argument. There is currently a single option named
'animated' that can be used to request an animatable model.
Currently it isn't clear if this should be a hint or not.
- lovr.headset.animate (name pending) can be called with a device
and a model (usually with an animated model from headset.newModel,
but this is not required). The function attempts to animate the
Model to match the pose of the device in an opaque driver-specific
way, and returns whether or not this was successful.
- OpenVR has models for controllers with a system called "components"
that can be used to animate the individual buttons. Now the OpenVR
headset driver implements the 'animate' function to make use of the
controller components, to easily load and render animated controllers.
2020-08-05 15:05:59 -06:00
bjorn
6d2fdac89f
Prefix headset implementation files with headset_;
2020-05-24 13:32:13 -06:00