Commit graph

1723 commits

Author SHA1 Message Date
Christoph Haag bb56e5f3c5 d/openhmd: Make struct oh_device private and refactor 2020-09-30 02:08:03 +02:00
Christoph Haag f6c3998d29 xrt: Use struct vive_values for u_compute_distortion_vive 2020-09-30 02:05:05 +02:00
Christoph Haag 29188d681c xrt: Remove all but mesh distortion values from xrt_hmd_parts::distortion
Move vive values to struct u_vive_values in u_distortion_mesh.
Move openhmd values to private struct inside ohmd driver.
2020-09-30 02:05:05 +02:00
Christoph Haag c5209c5ed4 comp: Move mesh generation to comp_renderer init
Use none shader when XRT_DISTORTION_MODEL_NONE is set.
Fall back to none distortion if mesh generation fails or unsupported
distortion model is set.

comp_render init updates comp_settings::distortion_model.

u_compute_distortion_mesh: Don't touch xdev::distortion::preferred,
just add XRT_DISTORTION_MODEL_MESHUV mesh to xdev::distortion::models.
2020-09-30 02:05:05 +02:00
Christoph Haag f82f247c19 comp: Rename distortion.vert to none.vert
After removing the other shaders, it is only used for no distortion anymore.
2020-09-30 02:05:05 +02:00
Christoph Haag bc7a948975 comp: More replacing of binding indices with variables 2020-09-30 02:05:05 +02:00
Christoph Haag 2e7451ca5e comp: Support only mesh and no istortion, remove pano and vive shaders
Also changes hardcoded binding indices into variables to make following the code easier
e.g. when adding new UBOs.
2020-09-30 02:05:04 +02:00
Christoph Haag 80f6fc9039 comp: Replace hardcoded binding indices with variables
Makes it easier to follow when changing code.
2020-09-30 01:30:30 +02:00
Christoph Haag fd883e26bf d/openhmd: Fix distortion_k value ordering
Their order is opposite to the psvr panotools values.
2020-09-30 01:30:30 +02:00
Christoph Haag fb71c71a8c xrt: Replace mesh generator with xdev->compute_distortion()
Each HMD driver now has to implement compute_distortion() which will be called
by the compositor implementation to generate a mesh (usually).

u_distortion_mesh contains implementations for the defaults (panotools, OpenHMD, vive).

Also adds compute_distortion function for Vive distortion

There are differences between OpenHMD and Panotools values, main differences for now:
* psvr has 5 pano coefficients, ohmd has 3
* psvr uses viewport size and lens center in pixels for distortion calculation, ohmd in meter
* psvr uses different distortion scaling than ohmd
2020-09-28 17:04:15 +01:00
Jakob Bornecrantz 2aaa3acfdf st/oxr: Do not destroy native compositor in sub-classed session creation functions
So it's owned by the instance.
2020-09-24 19:07:01 +01:00
Jakob Bornecrantz 6961bf885f st/oxr: Don't create a new native compositor in android session
Spotted by Jarvis.
2020-09-24 19:06:51 +01:00
Christoph Haag ee8fdb45fd d/ns: remove useless assignments 2020-09-22 02:19:13 +02:00
Christoph Haag e5683d4fde comp: remove useless pano ubo from mesh distortion
It was left in as a debug measure, but is more confusing than useful,
especially with northstar directly generating a mesh and vive with its own shader.
2020-09-22 02:19:13 +02:00
Christoph Haag 3c0ae7e61e d/dummy: reduce dummy HMD resolution to 720p 2020-09-21 20:37:28 +02:00
Christoph Haag 31539c800e d/ohmd: Add (OpenHMD) suffix to openhmd driver string 2020-09-21 20:37:28 +02:00
Christoph Haag 3d0235a450 st/prober: Fix build with v4l2 disabled 2020-09-21 20:21:56 +02:00
Jakob Bornecrantz 9ebf1c4d4d st/oxr: Fix warning 2020-09-18 20:51:31 +01:00
Ryan Pavlik 6af00ed8db u/file: Stub out Linux path manip code. 2020-09-18 18:27:46 +01:00
Ryan Pavlik 6ad46cb1b2 build: Be able to build against pthreads4w 2020-09-18 18:25:27 +01:00
Ryan Pavlik 7e600dd244 build: Adjust/fix missing dependencies 2020-09-18 18:25:27 +01:00
Ryan Pavlik 6779b1c0f8 st/p: Fix include of libusb 2020-09-18 18:25:27 +01:00
Ryan Pavlik b71f13c582 st/p: Tighten preprocessor conditionals for non-Linux 2020-09-18 18:25:15 +01:00
Milan Jaros 3f4bcb412e u/threading: Cast result of realloc. 2020-09-18 17:15:33 +01:00
Ryan Pavlik 695a2c1151 u/debug: Silence warnings on MSVC 2020-09-18 17:15:33 +01:00
Ryan Pavlik f7a132e635 u/time: Fix overflow. 2020-09-18 17:15:33 +01:00
Ryan Pavlik 1dffe58952 u/json: Silence warnings on MSVC 2020-09-18 17:15:33 +01:00
Milan Jaros 7685f49adb os/threading: Fix includes on Windows 2020-09-18 17:15:33 +01:00
Milan Jaros 367c01f354 os/time: Provide time functions for Windows 2020-09-18 17:15:33 +01:00
Ryan Pavlik 7c47293c52 os/time: Implement os_nanosleep for Windows 2020-09-18 13:56:34 +01:00
Ryan Pavlik dae3ab3a4f xrt: Be sure to include config headers 2020-09-18 13:56:24 +01:00
Ryan Pavlik a0c8839a71 xrt: Remove un-needed includes of unistd 2020-09-18 13:56:16 +01:00
Ryan Pavlik 54f6aa2166 inc/xrt: Some MSVC and Windows support 2020-09-18 13:56:11 +01:00
Ryan Pavlik 3ff56f4a3c inc/xrt: Add Windows implementations of atomic intrinsics. 2020-09-18 13:56:05 +01:00
Jakob Bornecrantz c411caf0cd st/oxr: Fix return length from oxr_action_get_input_source_localized_name 2020-09-17 23:04:37 +01:00
Jakob Bornecrantz 4a62e88f09 st/oxr: Return identifier name for bindings 2020-09-17 23:04:37 +01:00
Jakob Bornecrantz b6786f5bfc st/oxr: Return controller name for bindings 2020-09-17 15:28:59 +01:00
Jakob Bornecrantz 33713c790c st/oxr: Correctly return sub path for input source 2020-09-17 00:26:12 +01:00
Jakob Bornecrantz 0fc4cdcd0f st/gui: Get the number of samples in a fifo for graph 2020-09-16 17:27:16 +01:00
Jakob Bornecrantz 6a94b1cf80 m/ff: Improve interface 2020-09-16 17:27:16 +01:00
Bart Ribbers 71f912ffc5 Fix compilation on Musl
Without this fix, compilation failed on Musl due to ssize_t being an
unknown type

In file included from ../src/xrt/state_trackers/prober/p_prober.c:15:
../src/xrt/state_trackers/prober/p_prober.h:67:2: error: unknown type name 'ssize_t'
   67 |  ssize_t interface;
      |  ^~~~~~~
2020-09-16 10:44:06 +02:00
Jakob Bornecrantz b624d290d0 m/3dof: Add filter fifos to variable tracking code 2020-09-15 16:41:07 +00:00
Jakob Bornecrantz f7ff6c08ed st/gui: Plot vec3_f32 filter fifos 2020-09-15 16:41:07 +00:00
Jakob Bornecrantz 468f72d62f st/gui: Include ImPlot and Monado-ImGui in gui_imgui header 2020-09-15 16:41:07 +00:00
Jakob Bornecrantz f843c59c37 imgui: Add ImPlot 2020-09-15 16:41:07 +00:00
Jakob Bornecrantz 36ea1825bf imgui: Update to 1.78 2020-09-15 16:41:07 +00:00
Jakob Bornecrantz 3ffa40c628 u/var: Refactor how variables info is passed 2020-09-15 16:41:07 +00:00
Jakob Bornecrantz d5c62f8ccb u/var: Add tracking for filter fifos 2020-09-15 16:41:07 +00:00
Christoph Haag 17ff908041 d/ns: Set XRT_SPACE_RELATION_ORIENTATION_TRACKED_BIT 2020-09-14 16:57:10 +02:00
Christoph Haag 37519dc54d d/dummy: Set XRT_SPACE_RELATION_ORIENTATION_TRACKED_BIT 2020-09-14 16:56:54 +02:00
Christoph Haag ddf3eb5789 st/oxr: Use space graph in global-to-local space transform
This takes care of transforming the velocities.
2020-09-11 19:06:16 +02:00
Christoph Haag 150b7649f3 d/survive: Don't fix up invalid pose 2020-09-11 18:52:01 +02:00
Christoph Haag a664bb22bf d/survive: Update to recent libsurvive git
Rewrite input event handling and add new events from libsurvive.
2020-09-11 18:52:01 +02:00
Christoph Haag c3fbe6eaf8 d/survive: remove unused structs 2020-09-11 18:52:01 +02:00
Christoph Haag 357b47522c d/survive: set relation flags properly 2020-09-11 18:52:01 +02:00
Christoph Haag f41edee4b4 st/oxr: Use space graph resolve result relation flags instead of pure pose relation 2020-09-11 18:52:01 +02:00
Christoph Haag 19acc7be25 st/oxr: Pass actual ViewStateFlags to application with xrLocateViews
These flags are originally set by the driver, then processed by the space graph resolver.
2020-09-11 18:52:01 +02:00
Christoph Haag 2b90b4ea89 st/oxr: Destroy compositor on instance destroy
Fixes direct mode on subsequent instance creation in the same process
when no session was created.
2020-09-11 18:52:01 +02:00
Christoph Haag eb8a304178 ipc: print send and receive errors with ERROR, not DEBUG
These errors lead to unexpected output and should be investigated.
2020-09-11 18:52:01 +02:00
Christoph Haag a884e24b9a aux: Support waiting more than 0.999... seconds in os_nanosleep 2020-09-11 18:52:01 +02:00
Christoph Haag 6133d4cf99 d/survive: Remove out_relation_timestamp_ns 2020-09-11 18:52:01 +02:00
Christoph Haag 844daee844 st/oxr: Check xrLocateViews quaternion only if orientation valid 2020-09-11 18:52:01 +02:00
Christoph Haag 1429d678a0 aux/space: Propagate orientation valid bit through space graph resolve
Invalid poses may be handled more gracefully in the future. For now poses
are not transformed if orientation is not valid, because transforming with
an invalid quaternion will have bad results in any way.

v2: Upgrade poses with valid position but invalid orientation to valid poses
2020-09-11 18:51:58 +02:00
Christoph Haag 6cce04f8d3 aux/space: fix typo: propagate tracked orientation bit properly 2020-09-09 14:51:06 +02:00
Jakob Bornecrantz 8e24dda794 xrt: Remove out_timestamp argument to xrt_device::get_tracked_pose 2020-09-07 23:37:09 +01:00
Jakob Bornecrantz eaffa05a37 xrt: Remove acceleration components from xrt_space_relation 2020-09-07 23:36:34 +01:00
Jakob Bornecrantz 5a4d45bbaa m/base: Remove old space relation functions 2020-09-07 23:33:28 +01:00
Jakob Bornecrantz 855b2005f3 c/main: Use new xrt_space_graph 2020-09-07 23:33:28 +01:00
Jakob Bornecrantz d60cce8977 st/oxr: Use new xrt_space_graph 2020-09-07 23:33:28 +01:00
Jakob Bornecrantz 74690a2278 d/psmv: Rotate angular velocity to be in base space 2020-09-07 23:33:28 +01:00
Jakob Bornecrantz f9905a4007 d/psmv: Use space graphs for poses 2020-09-07 23:33:28 +01:00
Jakob Bornecrantz fe94dec5ea m/space: Space graph functions 2020-09-07 23:33:25 +01:00
Jakob Bornecrantz ca91695722 m/quat: Add math_quat_rotate_derivative 2020-09-07 16:14:46 +01:00
Jakob Bornecrantz 4d85db6051 xrt: Add xrt_space_graph 2020-09-07 16:14:46 +01:00
Moses Turner 0ff1865c2e d/ns: Add version 2 config support 2020-09-07 11:35:24 +01:00
Jakob Bornecrantz ea6374d296 d/dummy: Minor comments 2020-09-06 22:53:10 +01:00
Jakob Bornecrantz 09bcf6c9d2 t/ctl: Fix typo 2020-09-06 21:58:34 +01:00
Jakob Bornecrantz 4f94ee0c91 u/render_timing: Improve debug printing 2020-09-04 13:48:40 +01:00
Christoph Haag 4a1d8b3a41 xrt: Fix vive input defines 2020-09-04 01:46:47 +02:00
Jakob Bornecrantz 787c104339 d/psmv: Use last package timestamp for input changes 2020-09-02 22:08:01 +01:00
Jakob Bornecrantz 328f5d5315 m/base: Add math_quat_invert 2020-09-02 22:07:35 +01:00
Jakob Bornecrantz 511a51b283 m/3dof: Rename to timestamp 2020-09-02 22:07:35 +01:00
Jakob Bornecrantz 8cdfe0e694 m/fifo: Add f64 filter fifo 2020-09-02 22:07:35 +01:00
Jakob Bornecrantz 991c9029c7 m/3dof: Tweak values 2020-09-02 22:07:35 +01:00
Jakob Bornecrantz 736fa81349 m/3dof: Add vars tracking helper function 2020-09-02 22:07:35 +01:00
Jakob Bornecrantz 33f05c7bea m/vec3: Add C++ operators 2020-09-02 22:07:35 +01:00
Jakob Bornecrantz d396117a39 m/vec2: Add C++ operators 2020-09-02 22:07:35 +01:00
Jakob Bornecrantz 2d8a39b731 d/v4l2: Set correct name on variable tracker 2020-09-02 18:36:47 +01:00
Jakob Bornecrantz ffa888a575 d/v4l2: Use different tweaks depending on capture type 2020-09-02 11:57:47 +01:00
Jakob Bornecrantz 6846ab7637 xrt: Add stream capture type 2020-09-02 11:52:59 +01:00
Christoph Haag 330279d330 d/psvr: Set positional tracking bit when tracker is present 2020-09-01 17:03:55 +02:00
Christoph Haag cde94cc8a2 build: Remove libv4l2 dependency from meson
We use the linux/v4l2-common.h header to access v4l devices, not libv4l from v4l-utils.
2020-08-28 12:10:53 +00:00
Pete Black 3f197eeffd t/psmv: Use the same filtering as in PSVR tracker 2020-08-28 11:38:03 +00:00
Pete Black 76a439bd59 t/psvr: Add a functional PSVR tracker 2020-08-28 11:38:03 +00:00
Pete Black 3fdce20afd d/psvr: Only power on front LEDs 2020-08-28 11:38:03 +00:00
Jakob Bornecrantz b3c5bf1517 math: Add a permutation library 2020-08-28 11:38:03 +00:00
Jakob Bornecrantz d3b224275c u/logging: Fix return of debug_get_log_option_SUFFIX 2020-08-28 11:38:03 +00:00
Pete Black 751fdb2884 u/render_timing: Paranoia 2020-08-28 11:38:03 +00:00
Pete Black 20ee4114b0 xrt: Fix typo in comment 2020-08-28 11:38:03 +00:00
Jakob Bornecrantz 233ca93569 t/ctl: Print devices as well 2020-08-28 11:33:38 +00:00