Skip to content

v3.0.0-alpha21

@halx99 halx99 tagged this 06 Jul 11:08
- Added optional OpenXR support behind `AX_ENABLE_OPENXR`, gated by `AX_ENABLE_VR` and disabled by default.
- Added the Khronos OpenXR-SDK dependency (`release-1.1.60`) to the 1kiss dependency profile and third-party CMake integration.
- Introduced `OpenXRDriver`, a long-lived runtime backend that owns OpenXR instance, system, session, local space, stereo swapchains, frame timing, action sets, interaction profiles, and controller state.
- Added `VRSceneCompositor`, the product VR rendering path backed by OpenXR. It polls XR frame/input state before scheduler update, renders each eye into the runtime swapchain, draws controller rays, submits projection layers, and falls back to normal rendering when the XR session is unavailable.
- Replaced the old `SceneRenderer` abstraction with `SceneCompositor`, now owned by `RenderViewCore`. Custom scene composition is installed with `RenderViewCore::setSceneCompositor()`.
- Replaced `VRGenericRenderer` with `VRPreviewSceneCompositor` for non-runtime stereo preview and debugging. The preview path keeps side-by-side rendering, distortion meshes, head tracking, render scale, vignette, and VR scissor remapping.
- Added XR input events through `XRInputEvent` and `XRInputEventListener`, covering controller buttons, thumbstick axes, aim poses, grip poses, hand, phase, value, and interaction profile data.
- Extended pointer input with `PointerType::Controller`, optional 3D rays, previous rays, and `PointerHitResult`, allowing XR controller rays to drive existing pointer-based UI and scene interactions.
- Added VR pointer dispatch helpers to `InputSystem`, including controller pointer down/move/up/scroll and XR input event dispatch.
- Updated `EventDispatcher` to route XR input listeners and store pointer hit results during scene-graph hit testing and pointer capture dispatch.
- Made `Node::onPointerHitTest()` public and ray-aware, so custom 2D/3D nodes can participate in controller-ray picking.
- Updated `Widget`, `ScrollView`, GUI scroll views, menus, and terrain picking to support controller rays, hit results, clipping, scroll gestures, and captured pointer streams in VR.
- Added terrain ray-hit regression coverage and updated cpp-tests to use pointer hit results instead of manually reconstructing terrain rays.
- Added asymmetric perspective projection support with `Mat4::createPerspectiveOffCenter()`, used for per-eye OpenXR frusta.
- Generalized `RenderTexturePass` so it can target an RHI `RenderTarget` directly, disable camera override for advanced compositors, and use stable begin/clear/end ordering.
- Added renderer/RHI support for external runtime-owned textures via `ExternalTextureDesc` and `DriverBase::createTextureFromNativeHandle()`.
- Added `RenderContext::submitCurrentFrameCommands()` and `Renderer::submitCurrentFrameCommands()` so external runtimes can receive completed rendering work before swapchain release.
- Added backend support needed by OpenXR swapchains across D3D11, D3D12, Vulkan, OpenGL ES, and shared RHI texture wrapping paths.
- Added a `VulkanInterop` abstraction layer. `OpenXRVulkanInterop` implements the interface and is registered via `Application::registerVulkanInterop()`. `GraphicsCore` queries runtime-required Vulkan instance/device extensions and the runtime-selected physical device through this interface, keeping the core RHI free of OpenXR dependencies.
- Added backend-specific OpenXR graphics bindings for D3D11, D3D12, Vulkan
Assets 2
Loading