This is a work in progress of the upcoming OpenXR tutorial, do not use this to learn OpenXR yet
- INTRO (understanding & dev env)
1.1. What is the goal of OpenXR
1.2. High Level overview of the components of OpenXR (Application - Loader - API
layers - Runtime - Graphics - Input System)
1.3. Setting up a development environment ( Visual Studio & Android Studio &
Monado for people without HMDs )
- TODO: Add Monado support.
- SETUP (Basic structure ready) 2.1. Creating an XrInstance / xrGetSystem (xrCreateInstance) 2.2. Creating an XrSession (xrCreateSession, OpenGL based for code brevity) 2.3. Polling the Event Loop (xrPollEvent and Session States)
- GRAPHICS (solid color render at end) 3.1. Creating SwapChains for color and depth (xrEnumerateSwapchainFormats) 3.2. The Renderloop (xrWaitFrame/xrBeginFrame/xrEndFrame/ env.blend.mode) (solid color)
- ACTIONS (cube at controller position at end) 4.1. Using Spaces ( xrCreateReferenceSpace/xrLocateSpace ) (draw cube at world origin, view from VIEW space) 4.2. The interaction system. Interaction Profiles, Bindings best practices 4.3. Create Actions and Actions Sets (xrCreateActionSet, xrCreateAction, xrSuggestInteractionProfileBindings) 4.4. How to check if a controller is connected.
- EXTENSIONS (extensions debug and hand tracking) 5.1. Using Extensions and Layers xrEnumerateInstanceExtensionProperties, xrEnumerateApiLayerProperties, 5.2. Using xrCreateDebugUtilsMessengerEXT (might consider doing this earlier to show how to get debug messages) 5.3. Extension examples including XR_EXT_HAND_TRACKING cubes at joints.
3-4 potential designs will be commissioned, encompassing colour scheme, layout, font choices, text and menu styles. We propose to use Calland Creative to create these single-page designs; this agency designed our site at simul.co. Due to the technical nature of this project, design is a small, but important part of the process. The designs will be validated internally, then presented to the working group by 5th June.
Chapters 1.1 (What is the Goal of OpenXR), 1.2 (High Level Overview of OpenXR Components) and 2.1 (Creating an XrInstance) will be outlined and presented to the working group by 5th June. NOTE: we propose to incorporate xrCreateDebugUtilsMessengerEXT here, after Chapter 2.1, and will outline it in Phase 1B.
Based on approval and feedback of Phase 1B, Chapter 1.1 (What is the Goal of OpenXR) will be drafted and presented to the working group by 5th June.
Based on approval and feedback of Phase 1B, Chapter 2.1 (Creating an XrInstance) will be drafted and presented to the working group. This will include code examples for each platform (work on these would start from 15th May, to be ready for when the text is drafted). The example code will build and run on each platform. The text and code will be presented to the working group by 5th June.
When the final design is chosen by the working group it will be integrated in the site and presented to the group on or before June 19th as a working prototype website. While the Working Group chooses the final design, work will be underway on implementing any feedback from Phases 1B-1D. Throughout Phase 1, we will continue work on the code examples for each platform-graphics API combination, in order that these shall be ready in advance of the text being written.
The remainder of Chapter 2, 2.2 (Creating an XrSession) and 2.3 (Polling the Event Loop) will be outlined and presented on or before June 26th. We suggest that Chapter 2.2 contain optional content, depending on the user’s choice of graphics API – the site would show/hide the appropriate code blocks depending on the user’s choice, rather than showing only one.
Chapters 3.1 (Creating SwapChains) and 3.2 (The Renderloop) will be outlined and presented by June 26th.
Chapters 1.2 (OpenXR Components Overview) and 1.3 (Setting up a Development Environment) will be drafted and presented by 26th June.
Chapter 4.1 (Using Spaces), 4.2 (Interaction System), 4.3 (Creating Actions and Action Sets), and 4.4 (Checking for Controllers) will be outlined and presented by June 19th.
Chapter 5.1 (Using Extensions and Layers), and 5.3 (Extension Examples) will be outlined and presented by 10th July (Chapter 5.2, Getting Debug Messages is suggested to be moved to Chapter 2 and will be presented in Phase 1.2.)
The complete first draft of Chapter 2 (SETUP), will be presented by 10th July.
The complete first draft of Chapter 3 (GRAPHICS) will be presented by 17th July.
The complete first draft of Chapter 4 (ACTIONS) will be presented by 24th July.
The complete first draft of Chapter 5 (EXTENSIONS) will be presented by 31st July. Thus, the first draft of the entire site will be completed by 31st July. The text will be written by Roderick Kennedy and Andrew Richards, who will also generate any images, diagrams etc. If appropriate, we will revert to Calland Creative for any additional design work on these. We will begin the process of seeking external testers: programmers of various levels of experience who will test the site in Phase 2.12.
In this phase, all text should be finalized based on the feedback of the working group. Diagrams and images should be polished to a final standard, and all changes presented to the working group on a weekly basis. The 2nd draft will be presented to the Working Group by 14th August.
The site will be tested internally. We will test each supported combination of operating system, target system and graphics API by following the tutorial through and ensuring that there are no missing or unclear steps, and that a final, functional app is produced at all stages.
In this phase, the site will be tested externally. A cohort of programmers of various levels of experience will be asked to work through the tutorial, and their feedback will be used to finalize the website. The complete site will be presented to the working group by October 14th.
At this point, the site should be essentially complete. However, any final modifications or corrections required by the working group will be executed, and the site presented to the group as soon as these are complete, in the month of October.