Revision 13442da by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 28, 2019, 20:53 (GMT) |
Move WM level XR functions to wm_xr.c Operator is still in wm_operators.c, but only calls wm_xr.c functions. |
Revision 231dbd5 by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 28, 2019, 14:24 (GMT) |
Support Window-less (offscreen) VR session on Windows Uses the new wmSurface type (non-window drawable container) to manage the OpenGL, DirectX and GPU module contexts. The draw callback of the XR surface calls the GHOST_Xr session drawing routines. What you should see when starting a VR session now (using the WMR runtime): The Windows Mixed Reality Portal pops up, and a blue background is drawn on the HMD. This is from the blue color clear call we do in the drawing preparations of the GHOST_Xr session drawing. |
Revision d3e48fb by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 28, 2019, 12:09 (GMT) |
Merge branch 'master' into soc-2019-openxr |
Revision d544a0b by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 28, 2019, 11:56 (GMT) |
Avoid std::vector copy |
Revision cf4799e by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 28, 2019, 11:38 (GMT) |
Add wmSurface for non-Window offscreen VR session drawing Adds a wmSurface type which acts as a container for non-Window (offscreen) draw surfaces. Ideally wmWindow would of course also just do C-style inheritance from wmSurface, but I guess they can co-exist too. For the VR session a surface is created on Linux and passed to the graphics binding to use. Note this is not used on Windows yet, it still opens a window there. |
Revision 57d9f00 by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 27, 2019, 17:55 (GMT) |
Fix compile/CMake errors and warnings on Linux |
Revision 62cde7a by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 27, 2019, 17:17 (GMT) |
Finish VR view drawing callback set up * Allow passing custom data to session draw function, passed to the callback * Actually call the callback * Create and bind a WM level callback. Will later be used to draw the viewport. Also, check if session is actually visible before drawing. |
Revision e4fcf25 by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 27, 2019, 16:56 (GMT) |
Don't use Microsoft::WRL::ComPtr<...> for COM types Makes things difficult if you're not familar with COM. |
Revision 215c919 by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 26, 2019, 16:39 (GMT) |
Merge branch 'master' into soc-2019-openxr |
Revision da44a02 by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 24, 2019, 19:22 (GMT) |
The first pixels pushed to Windows Mixed Reality HMDs! Just a clear call for now, so all you see is a blue world. This blue "world" is however drawn by Blender! Also fixes use after destruction of compositor layer data. |
Revision 867007d by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 24, 2019, 14:44 (GMT) |
Set up OpenXR compositing layers for drawing That should be one of the last steps to prepare pushing pixels to HMDs. Fingers crossed! |
Revision e9ea814 by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 24, 2019, 10:52 (GMT) |
Merge branch 'master' into soc-2019-openxr |
Revision 6b43c82 by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 23, 2019, 16:27 (GMT) |
Set up OpenXR views and spaces for drawing Using a dummy identity pose at {0, 0, 0} to start with. This should later use the current viewport position & orientation I guess. Also adds function to set a draw callback. There's quite some OpenXR related stuff to be done before and after drawing anyting, as well as before and after drawing each view (eye). Quite some info would have to be exposed to WM to let it manage drawing. So I think using a callback called from GHOST_Xr to draw each eye instead is a good way to go. VR session currently crashes after opening. Seems to be related to blocking frame wait call. I'm not too worried about that though, might disappear once OpenXR frame sync functions get proper timing info passed. |
Revision afbb62f by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 23, 2019, 13:42 (GMT) |
Bring back wm_xr.c for higher level XR functions |
Revision 8a676e8 by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 23, 2019, 11:47 (GMT) |
Execute necessary OpenXR frame timing calls |
Revision c52111e by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 23, 2019, 00:46 (GMT) |
Correctly destruct swapchain on shutdown |
Revision d749e8a by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 23, 2019, 00:12 (GMT) |
Create graphics binding specific swapchain images Following the OpenXR SDK's example code very closely here. We have to do some nasty converting of graphics binding specific image vectors to generalized base ones. The SDK's approach seems like a good way to go about this. |
Revision 8663aa8 by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 22, 2019, 22:37 (GMT) |
Use abstract class/interface for generalized graphics binding operations Rather than having switch case blocks throughout the session code, give binding operations an own interface with dedicated implementations. |
Revision 88b3944 by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 22, 2019, 20:08 (GMT) |
Fix error causing sessions to not start correctly With this, the Windows Mixed Reality Portal finally pops up when starting the session. That is how it's supposed to work. After it's initialization phase all you see is black. That's expected too as we don't send anything to the device yet. |
Revision 4cfc3ca by Julian Eisel (soc-2019-openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 22, 2019, 19:25 (GMT) |
OpenXR swapchain creation Nothing special to say. Just calls needed OpenXR functions to create swapchains. Swapchain images are not created yet. Interestingly, the Windows Mixed Realtiy portal now pops up when closing Blender after having created a VR session. So we're getting closer ;) |
|