Releases: elliotttate/OpenXR-Simulator
Releases · elliotttate/OpenXR-Simulator
v1.3.0 - D3D12 & OpenGL Support
What's New
Multi-Graphics API Support
- D3D12 graphics binding (
XR_KHR_D3D12_enable) — full support for Direct3D 12 applications - OpenGL graphics binding (
XR_KHR_opengl_enable) — full support for OpenGL applications - GDI-based D3D12 preview — renders via offscreen RT + CPU readback + GDI StretchDIBits, avoiding DXGI Present hook conflicts with Steam overlay and UEVR
D3D12 Improvements
- Cross-queue synchronization between game and preview command queues
- Proper depth buffer handling with typeless formats and
ALLOW_DEPTH_STENCIL - Mutable format swapchain support (typeless backing for sRGB/non-sRGB views)
- Optimized clear values for render targets and depth buffers
- Copy region clipping to prevent out-of-bounds texture copies
- Device removed detection for diagnostics
- Reentrance guard in
xrEndFrameto prevent stack overflow from hook recursion
Controller Input Emulation
- Basic controller input emulation for VR interaction testing
- Enhanced screenshot capture across all graphics backends (D3D11, D3D12, OpenGL)
Bug Fixes
- Write frame status before Present to avoid blocking on D3D12
- Always write first frame status for immediate diagnostics
- Reset swapchain image states to COMMON on release for correct D3D12 state tracking
Supported Graphics APIs
| API | Binding Extension | Status |
|---|---|---|
| Direct3D 11 | XR_KHR_D3D11_enable |
✅ Supported |
| Direct3D 12 | XR_KHR_D3D12_enable |
✅ Supported |
| OpenGL | XR_KHR_opengl_enable |
✅ Supported |
| Vulkan | XR_KHR_vulkan_enable |
🗺️ Planned |
v1.2.0 - UI Enhancements & MCP Integration
What's New
UI Enhancements
- Dark theme with modern styling
- Menu bar with View, Zoom, FOV, Tools, and Help menus
- Keyboard shortcuts for all major functions
- Mouse wheel zoom support
View Controls
- Switch between both eyes, left eye only, or right eye only
- Multiple display layouts: side-by-side, over/under, anaglyph 3D
- Adjustable zoom levels (25%, 50%, 75%, 100%, fit-to-window)
- FOV presets (70°, 90°, 110°)
MCP Integration
- Screenshot capture functionality
- Runtime status reporting via JSON
- Head pose control commands
- Python MCP server included for external tool integration
Build Improvements
- Updated CMakeLists.txt with improved configuration
- Added D3D12, dwmapi, and uxtheme library support
- Better output directory handling
Keyboard Shortcuts
B- Both eyes viewL/R- Left/Right eye onlyF- Fit to window1-4- Zoom presets5-7- FOV presetsG- Toggle full renderF1- Controls helpF3- Toggle statsF12- Screenshot
Full Changelog: v1.1.0...v1.2.0
v1.1.0 - Enhanced Movement Controls
What's Changed
Improvements
- Fixed movement direction with mouse + WASD controls
- Implemented proper quaternion-based rotation for movement vectors
- Fixed mouse yaw direction for natural camera control
- WASD movement now correctly follows head orientation including pitch
Technical Details
- Movement vectors are properly transformed by head rotation quaternion
- Mouse sensitivity provides smooth camera control
- All movement is now relative to the current view direction
Full Changelog: v1.0.0...v1.1.0
OpenXR Simulator v1.0.0
🎉 Initial Release
OpenXR Simulator is a lightweight OpenXR runtime that enables VR applications to run in a desktop window for development and testing without requiring a physical VR headset.
✨ Features
- Desktop VR Preview - Run VR applications in a resizable desktop window with side-by-side stereo view
- Mouse & Keyboard Controls - Navigate the virtual space using standard input devices
- Proper sRGB Handling - Automatic gamma correction for accurate color reproduction
- Unity Compatible - Fully tested with Unity's OpenXR plugin
- Minimal Dependencies - Only requires Windows and DirectX 11
- Easy Setup - Simple PowerShell scripts for registration/unregistration
📦 Installation
- Download
OpenXR-Simulator-v1.0.0-win64.zip - Extract to your preferred location
- Run PowerShell as Administrator
- Navigate to the
scriptsfolder - Run
.\register-runtime.ps1
🎮 Controls
- Mouse: Look around (hold right-click)
- WASD: Move forward/backward/strafe
- Q/E: Move up/down
- Shift: Move faster
- ESC: Release mouse capture
📋 Requirements
- Windows 10/11 (64-bit)
- DirectX 11 compatible GPU
🐛 Known Issues
- Limited to D3D11 applications (no OpenGL/Vulkan support yet)
- No hand tracking or haptic feedback
- Basic action system implementation
📝 Notes
This is a development tool designed for testing VR applications without a physical headset. For production VR experiences, use a proper VR headset and runtime.
Full Changelog: Initial release