Revision f2f1e4d by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 18, 2019, 23:00 (GMT) |
Remove CTX_wm_xr_context Not really useful, plus XR-Context is now GHOST data. |
Revision 0da0f29 by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 18, 2019, 22:57 (GMT) |
Rename of XR types (WM -> GHOST) |
Revision a8519db by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 18, 2019, 22:44 (GMT) |
Lazy-create XR-context Creating the context causes the OpenXR loader to try connect to a runtime. That would involve reading the OS'es active_runtime.json and dynamic linking based on that. So better avoid doing this on startup. Also: don't pay for what you don't use! |
Revision d15d07c by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 18, 2019, 22:28 (GMT) |
Rename wm_xr_ -> GHOST_XR |
Revision d356787 by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 18, 2019, 21:50 (GMT) |
Merge branch 'soc-2019-openxr' into temp-ghost_openxr |
Revision a284fa3 by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 18, 2019, 21:49 (GMT) |
Merge branch 'master' into soc-2019-openxr |
Revision 4eeb752 by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 17, 2019, 23:02 (GMT) |
Use some C++ features where useful Also correct include guards. |
Revision f30fcd6 by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 17, 2019, 21:45 (GMT) |
Initially move XR files to GHOST and compile in C++ |
Revision 47e8133 by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 17, 2019, 20:24 (GMT) |
Merge branch 'master' into soc-2019-openxr |
Revision 3fa7d59 by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 16, 2019, 23:24 (GMT) |
Fail without crashing if no runtime is found For now simply do nothing. Plan is to work on proper error handling and reporting later. |
Revision df8dc43 by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 16, 2019, 21:28 (GMT) |
Fix compile errors and warnings on certain configs Addresses: * Compile error on Linux * Compile error with WITH_OPENXR disabled * Unused parameter warnings |
Revision 3b0a2fe by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 16, 2019, 21:12 (GMT) |
Fix missing return value... how did this work even? Looking at the code this should've failed miserably. No idea how this could still work fine... Maybe return vars used same stack location? |
Revision 80af6d5 by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 16, 2019, 20:58 (GMT) |
Merge branch 'master' into soc-2019-openxr |
Revision 71c7d61 by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 16, 2019, 19:46 (GMT) |
Draw OpenGL framebuffer upside down in DirectX windows DirectX is Y coordinates top to bottom, while OpenGL is the opposite. For the final window manager on-screen drawing, draw to a texture first and draw that upside down if needed. |
Revision 637b803 by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 16, 2019, 19:05 (GMT) |
Support drawing the VR view into a DirectX window! Phew! That a fight. But this is also a pretty important feature as it allows interfacing with Windows Mixed Reality OpenXR runtime and the HMDs supported by it. Important remaining issue: The rendered viewport is upside down :) That is of course because DirectX has the opposite vertical direction than OpenGL. When creating a DirectX window, we also create an OpenGL offscreen context to use for all drawing. Just before swapping framebuffers, the DirectX window blits the framebuffer of the offscreen context into its swapchain. This requires the WGL_NV_DX_interop and WGL_NV_DX_interop2 extensions. For testing/dev purposes, also adds: * Version of the offscreen to onscreen blitting that's OpenGL only. So it blits the default framebuffer of the offscreen context into the one of the onscreen context. This is disabled by a #define. * Code to draw a colored triangle using DirectX, also for testing. Requires the D3DCompiler.lib to be available at compile time. This is also disabled using a #define. |
Revision 314eef0 by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 14, 2019, 18:41 (GMT) |
Merge branch 'master' into soc-2019-openxr |
Revision 34fa0f8 by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 14, 2019, 17:07 (GMT) |
Set up DirectX window to support drawing With this the VR window should open fine and get cleared in a red-ish orange using Direct3D 11 calls (well, on Windows that is). The window still draws a 3D view to an offscreen buffer. Where we usually just swap the buffers, we now allow calling a GHOST function to blit the offscreen OpenGL buffer to whatever type of graphics buffer the window uses (DirectX here). The nice thing about this approach is that all DirectX code stays in GHOST_ContextD3D.cpp. And the entire compatibiliy code can go into a single function higher level modules don't need to care about. This also fixes a number of issues introduced in earlier commits. |
Revision 1636672 by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 14, 2019, 00:41 (GMT) |
Draw into OpenGL offscreen context in the DirectX window. The window doesn't show anything of course. However we draw (at least I assume it does) as regular, just into a window offscreen context. A valid 3D view is created in the window. It's not visible but you see cursor changes as you move over the window. So handling works. |
Revision fc8127d by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 13, 2019, 21:24 (GMT) |
(Disabled) code to open a DirectX window with the VR session The window immediately crashes, hence keeping it disabled for now. Not sure how much of this I'll leave in, for now this is mainly for testing DirectX compatibility. |
Revision 3ac37fb by Julian Eisel (soc-2019-openxr, temp-ghost_openxr, temp-vr-draw-thread, vamr-openxr-module, vr_scene_inspection) June 13, 2019, 16:22 (GMT) |
Fix compile errors with older MSVC/Win-SDK versions Reported by @LazyDodo, thanks! |
|