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

foss virtual augmented reality
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1

1

FOSS Virtual & Augmented Reality

Monado & OpenXR

Jakob Bornecrantz jakob@collabora.com 01/02/2020

slide-2
SLIDE 2

2

Open First

Jakob Bornecrantz

FDO GH @Wallbraker jakob@collabora.com

slide-3
SLIDE 3

3

  • What is AR & VR
  • OpenXR
  • Monado
  • Status
  • Demos
  • Wrapping up
slide-4
SLIDE 4

4

  • What is AR & VR

OpenXR Monado Status Demos Wrapping up

slide-5
SLIDE 5

5

What is Augmented Reality?

  • Augment

━ Verb ━ /ɔːɡˈmɛnt/ ━ make greater by adding to it; increase

slide-6
SLIDE 6

6

Open First

slide-7
SLIDE 7

7

Open First

slide-8
SLIDE 8

8

What is Virtual Reality?

  • I reject your reality and substitute my own

━ Dungeonmaster, 1984

■ (popularized by Adam Savage)

slide-9
SLIDE 9

9

Open First

slide-10
SLIDE 10

10

Open First

slide-11
SLIDE 11

11

AR + VR = ?

  • Also known as XR
  • X = A | V
  • Not eXtended Reality
slide-12
SLIDE 12

12

What is AR & VR

  • OpenXR

Monado Status Demos Wrapping up

slide-13
SLIDE 13

13

Program Platform Hardware

How do we XR?

slide-14
SLIDE 14

14

Program Platform Hardware

How do we XR? API

slide-15
SLIDE 15

15

slide-16
SLIDE 16

16

  • It’s just like OpenGL & Vulkan

━ Made by Khronos

  • Out now
  • Action Based
  • FOSS Implementation! :D

What’s cool about OpenXR?

slide-17
SLIDE 17

17

  • Type of controller not in focus

━ Only after the fact

  • Context

━ From program ━ To runtime ━ Runtime decides what button does what

Action Based

slide-18
SLIDE 18

18

What is AR & VR OpenXR

  • Monado

Status Demos Wrapping up

slide-19
SLIDE 19

19

Program Platform Hardware

How do we XR?

slide-20
SLIDE 20

20

Program Monado Hardware

Where does Monado fit in?

slide-21
SLIDE 21

21

OpenXR State Tracker Drivers Compositor Program

xrt_compositor xrt_device OpenXR

Platform

xrt_prober

Monado

Hardware

slide-22
SLIDE 22

22

OpenXR State Tracker Drivers

GL Wrapper

Program

xrt_gl_compositor xrt_device OpenXR

Platform

xrt_prober

Complex Truth

OpenXR Loader

Compositor

xrt_fd_compositor

Hardware Auxiliary

slide-23
SLIDE 23

23

OpenXR State Tracker Hardware Compositor Drivers

xrt_compositor xrt_device Vulkan, X11, Wayland and KMS

Platform

xrt_prober

Linux Hardware

Linux APIs Misc APIs

Program

OpenXR

Desktop Stack

slide-24
SLIDE 24

24

OpenXR State Tracker IPC Layer Hardware Compositor Drivers

xrt_fd_compositor xrt_device xrt_fd_compositor xrt_device Vulkan and KMS

Platform

xrt_prober xrt_prober

Linux Hardware

Linux APIs Misc APIs Process boundary

With IPC - Anticipated

slide-25
SLIDE 25

25

  • Between different components

━ Auxiliary code has their own interfaces

  • Purely C
  • Not stable![1]

XRT Interfaces

slide-26
SLIDE 26

26

  • HMDs
  • Controllers
  • Aspect pattern

━ Optional structs ━ HMD info

xrt_device

  • Functions

━ Input Sync ━ Output Set ━ View/Position Retrieval

  • Info (immutable)

━ Input/Outputs ━ Tracking Origin ━ Screen position (HMD) ━ Distortion (HMD)

slide-27
SLIDE 27

27

  • Base class

━ xrt_[gl|vk|fd]_compositor ━ GL & VK are wrappers

■ Client side only

━ FD is “real” compositor

■ Written in Vulkan ■ Only “talks” in FDs

  • xrt_swapchain

━ xrt_[gl|vk|fd]_swapchain ━ acquire, wait & release

xrt_compositor

  • Functions

━ More explicit then OpenXR ━ Create Swapchain ━ Prepare, Begin & End ━ Wait, Begin, Discard & End ━ Poll Events (Refactor?)

  • Info (immutable)

━ Supported Formats

slide-28
SLIDE 28

28

  • Policy holder

━ Reads configuration ━ Decides what devices open

  • Device prober

━ Used by OpenXR ST

  • Platform code

━ Abstract native interfaces ━ Used by device drivers

  • Should be split in two

━ xrt_prober ━ xrt_platform

xrt_prober

  • Functions

━ Look for devices ━ Select (opens devices) ━ List & Open Video devices ━ Misc USB

  • Info (immutable)

━ None

slide-29
SLIDE 29

29

What is AR & VR OpenXR Monado

  • Status

Demos Wrapping up

slide-30
SLIDE 30

30

  • Mostly complete OpenXR support
  • In-process Compositor

━ Mesh shader

  • Video processing framework
  • Tracking PS Move
  • Nifty debug UI

Status

slide-31
SLIDE 31

31

  • North Star*
  • Daydream Ctrl*
  • OSVR HDK
  • Vive (Pro) & Index

━ Positional tracking through libsurvive

  • PlayStation VR
  • PlayStation Move
  • Razer Hydra
  • OpenHMD

━ Port to native drivers where it makes sense.

Hardware support

slide-32
SLIDE 32

32

  • 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

Code

slide-33
SLIDE 33

33

  • Complete OpenXR support
  • Improve PS Move Tracking
  • PSVR Tracking
  • Out of process compositor

Next Up

slide-34
SLIDE 34

34

  • Safe space
  • System UI
  • Setup UI
  • Lighthouse Tracking
  • AR and SLAM

Even further out

slide-35
SLIDE 35

35

What is AR & VR OpenXR Monado Status

  • Demos

Wrapping up

slide-36
SLIDE 36

36

Tracking

slide-37
SLIDE 37

37

Debug UI

slide-38
SLIDE 38

38

Tracking (back-up)

slide-39
SLIDE 39

39

What is AR & VR OpenXR Monado Status Demos

  • Wrapping up
slide-40
SLIDE 40

40

  • Gnome-Shell

━ Output hot-plug ━ non-desktop

  • Intel Missing Extension

━ GL_EXT_memory_object_fd

Rant

slide-41
SLIDE 41

41

  • Lots of work needed
  • GNOME & KDE UIs?

━ Monado interface library?

  • Switching between apps?

Some thoughts

slide-42
SLIDE 42

42

FOSS XR Community @FossXR

slide-43
SLIDE 43

43

  • 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

Links

slide-44
SLIDE 44

44

Open First

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!
slide-45
SLIDE 45

45

FOSS Virtual & Augmented Reality

Questions?