foss virtual augmented reality
play

FOSS Virtual & Augmented Reality Monado & OpenXR Jakob - PowerPoint PPT Presentation

FOSS Virtual & Augmented Reality Monado & OpenXR Jakob Bornecrantz jakob@collabora.com 01/02/2020 1 Jakob Bornecrantz FDO GH @Wallbraker jakob@collabora.com Open First 2 What is AR & VR OpenXR Monado Status


  1. FOSS Virtual & Augmented Reality Monado & OpenXR Jakob Bornecrantz jakob@collabora.com 01/02/2020 1

  2. Jakob Bornecrantz FDO GH @Wallbraker jakob@collabora.com Open First 2

  3. ● What is AR & VR ● OpenXR ● Monado ● Status ● Demos ● Wrapping up 3

  4. ● What is AR & VR OpenXR Monado Status Demos Wrapping up 4

  5. What is Augmented Reality? ● Augment ━ Verb ━ / ɔːɡˈ m ɛ nt/ ━ make greater by adding to it; increase 5

  6. Open First 6

  7. Open First 7

  8. What is Virtual Reality? ● I reject your reality and substitute my own ━ Dungeonmaster, 1984 ■ (popularized by Adam Savage) 8

  9. Open First 9

  10. Open First 10

  11. AR + VR = ? ● Also known as XR ● X = A | V ● Not eXtended Reality 11

  12. What is AR & VR ● OpenXR Monado Status Demos Wrapping up 12

  13. How do we XR? Program Platform Hardware 13

  14. How do we XR? Program API Platform Hardware 14

  15. 15

  16. What’s cool about OpenXR? ● It’s just like OpenGL & Vulkan ━ Made by Khronos ● Out now ● Action Based ● FOSS Implementation! :D 16

  17. Action Based ● Type of controller not in focus ━ Only after the fact ● Context ━ From program ━ To runtime ━ Runtime decides what button does what 17

  18. What is AR & VR OpenXR ● Monado Status Demos Wrapping up 18

  19. How do we XR? Program Platform Hardware 19

  20. Where does Monado fit in? Program Monado Hardware 20

  21. Monado Program OpenXR OpenXR State Tracker xrt_prober xrt_device xrt_compositor Platform Compositor Drivers Hardware 21

  22. Complex Truth Program OpenXR OpenXR Loader OpenXR State Tracker xrt_prober xrt_device xrt_gl_compositor GL Wrapper Platform xrt_fd_compositor Drivers Compositor Auxiliary Hardware 22

  23. Desktop Stack Program OpenXR OpenXR State Tracker xrt_prober xrt_device xrt_compositor Platform Drivers Compositor Misc APIs Linux APIs Vulkan, X11, Wayland and KMS Linux Hardware Hardware 23

  24. With IPC - Anticipated OpenXR State Tracker xrt_fd_compositor xrt_prober xrt_device IPC Layer Process boundary xrt_prober xrt_device xrt_fd_compositor Platform Drivers Compositor Misc APIs Linux APIs Vulkan and KMS Linux Hardware Hardware 24

  25. XRT Interfaces ● Between different components ━ Auxiliary code has their own interfaces ● Purely C ● Not stable! [1] 25

  26. xrt_device ● HMDs ● Functions ● Controllers Input Sync ━ Output Set ━ ● Aspect pattern View/Position Retrieval ━ Optional structs ━ Info (immutable) ● HMD info ━ Input/Outputs ━ Tracking Origin ━ Screen position (HMD) ━ Distortion (HMD) ━ 26

  27. xrt_compositor ● Base class ● Functions xrt_[gl|vk|fd]_compositor More explicit then OpenXR ━ ━ GL & VK are wrappers Create Swapchain ━ ━ ■ Client side only Prepare, Begin & End ━ FD is “ real ” compositor ━ Wait, Begin, Discard & End ━ ■ Written in Vulkan Poll Events (Refactor?) ━ ■ Only “ talks ” in FDs ● Info (immutable) ● xrt_swapchain Supported Formats ━ xrt_[gl|vk|fd]_swapchain ━ acquire, wait & release ━ 27

  28. xrt_prober ● Policy holder ● Functions Reads configuration Look for devices ━ ━ Decides what devices open Select (opens devices) ━ ━ List & Open Video devices ● Device prober ━ Misc USB ━ Used by OpenXR ST ━ ● Info (immutable) Platform code ● None ━ Abstract native interfaces ━ Used by device drivers ━ ● Should be split in two xrt_prober ━ xrt_platform ━ 28

  29. What is AR & VR OpenXR Monado ● Status Demos Wrapping up 29

  30. Status ● Mostly complete OpenXR support ● In-process Compositor ━ Mesh shader ● Video processing framework ● Tracking PS Move ● Nifty debug UI 30

  31. Hardware support ● North Star* ● PlayStation VR ● Daydream Ctrl* ● PlayStation Move ● OSVR HDK ● Razer Hydra ● Vive (Pro) & Index ● OpenHMD ━ Positional tracking ━ Port to native drivers through libsurvive where it makes sense. 31

  32. Code ● 35.5K lines of codes ━ Drivers: 6.9K 9 drivers ■ Vive: 1.5K ■ HDK: 0.5K ■ ━ Compositor: 6.6K ━ Auxiliary: 7.6K ━ State Trackers: 10.1K ━ Targets: 1.3K 32

  33. Next Up ● Complete OpenXR support ● Improve PS Move Tracking ● PSVR Tracking ● Out of process compositor 33

  34. Even further out ● Safe space ● System UI ● Setup UI ● Lighthouse Tracking ● AR and SLAM 34

  35. What is AR & VR OpenXR Monado Status ● Demos Wrapping up 35

  36. Tracking 36

  37. Debug UI 37

  38. Tracking (back-up) 38

  39. What is AR & VR OpenXR Monado Status Demos ● Wrapping up 39

  40. Rant ● Gnome-Shell ━ Output hot-plug ━ non-desktop ● Intel Missing Extension ━ GL_EXT_memory_object_fd 40

  41. Some thoughts ● Lots of work needed ● GNOME & KDE UIs? ━ Monado interface library? ● Switching between apps? 41

  42. FOSS XR Community @FossXR 42

  43. Links ● Monado ━ https://monado.dev/ ━ https://monado.pages.freedesktop.org/monado ━ https://gitlab.freedesktop.org/monado/monado ● OpenXR ━ https://www.khronos.org/openxr ● Work on GFX & XR ━ Internships @ Collabora ━ Work @ Collabora 43

  44. Talk to me about ● XR, VR & AR FOSS XR ● ● Volt Programming Language ● FPGAs & FOSS ● Amiga (FPGA), mc68k (LLVM) Voxel/SVO rendering ● ● FOSS & Society ● Joining Collabora! Open First 44

  45. FOSS Virtual & Augmented Reality Questions? 45

Recommend


More recommend