0431e7cb3c
Import osgXR from https://github.com/amalon/osgXR master branch into 3rdparty, specifically commit b7e222775553b529018ac4b847353327c24ae5d4, which is 0.3.7 with tweaks for building as a subproject in a subdirectory. This will allow VR support to be more conveniently built if not already installed, without having to fetch yet another dependency.
184 lines
6.2 KiB
Markdown
184 lines
6.2 KiB
Markdown
Version 0.3.7
|
|
-------------
|
|
|
|
New features:
|
|
* Implement basic Windows OpenGL graphics binding.
|
|
|
|
Windows (MSVC) build fixes:
|
|
* Session: #ifdef X11 specific workaround.
|
|
* CMake: Require osgUtil.
|
|
* Manager: Avoid undefined Mirror.
|
|
* Fix Win32 DLL imports/exports.
|
|
* Subaction: Use C++11 smart pointers for \_private to avoid undefined Private
|
|
implementation class.
|
|
* Fix build against old OpenGL headers.
|
|
|
|
ABI changes (ABI version 5):
|
|
* Subaction: Use C++11 smart pointers for \_private.
|
|
* Switch Action, ActionSet & InteractionProfile pimpls to std::unique\_ptr<>.
|
|
|
|
Version 0.3.6
|
|
-------------
|
|
|
|
Bug fixes:
|
|
* Work around Monado GL context assumptions for xrCreateSession &
|
|
xrCreateSwapchain calls.
|
|
* Permit new swapchain formats: GL\_RGB10\_A2 (for Monado on AMD) & GL\_RGBA8.
|
|
|
|
Behaviour changes:
|
|
* Report list of swapchain formats on failure to choose one.
|
|
|
|
Behind the scenes:
|
|
* Minor whitespace cleanups in src/XRState.cpp.
|
|
|
|
Version 0.3.5
|
|
-------------
|
|
|
|
Bug fixes:
|
|
* Ensure OpenXR::Action is valid before creating an action state object.
|
|
* Don't suggest empty InteractionProfile bindings to OpenXR.
|
|
|
|
Behaviour changes:
|
|
* Manager (XRState) no longer keeps counted references to ActionSets or
|
|
InteractionProfiles. The app should manage the lifetime of these objects
|
|
itself, and can now safely discard and recreate them.
|
|
* All created Actions are now provided to OpenXR even if unreferenced by any
|
|
InteractionProfile suggested bindings.
|
|
* Action setup is now treated as a separate initialisation stage. As such if
|
|
no action sets or no interaction profiles have been created, action setup
|
|
will now take place on the next update() after they are created.
|
|
|
|
New/expanded APIs:
|
|
* Manager::syncActionSet() - To inform osgXR that actions, action sets, or
|
|
interaction profiles have been altered, so it can take action to apply them
|
|
as soon as possible.
|
|
* ActionPose::Location::operator !=, ActionPose::Location::operator == - For
|
|
comparing pose location objects for equality.
|
|
|
|
Behind the scenes:
|
|
* Some minor refactoring in src/Action.cpp.
|
|
|
|
Version 0.3.4
|
|
-------------
|
|
|
|
Bug fixes:
|
|
* Fix draw pass accounting and slave cam VR mode.
|
|
|
|
Behaviour changes:
|
|
* Automatically fall back from SceneView mode if the view configuration isn't
|
|
stereo.
|
|
|
|
New/expanded APIs:
|
|
* New action APIs for exposing OpenXR actions (both input and haptics), action
|
|
sets, interaction profiles, and subactions:
|
|
* osgXR/Action: New Action, ActionBoolean, ActionFloat, ActionVector2f,
|
|
ActionPose and ActionVibration classes to represent different kinds of
|
|
XrAction.
|
|
* osgXR/ActionSet: New ActionSet class to group actions that can be activated
|
|
and deactivated together.
|
|
* osgXR/InteractionProfile: New InteractionProfile class to allows default
|
|
action bindings for interaction profiles to be suggested.
|
|
* osgXR/Subaction: New Subaction class to represent a subaction path (or top
|
|
level user path) which groups physical interactions, allowing single
|
|
actions that apply to both hands to be handled separately.
|
|
|
|
Behind the scenes:
|
|
* Add internal action management classes in OpenXR namespace.
|
|
* Wrap XrSpace in an OpenXR::Space class.
|
|
* Wrap XrPath in an OpenXR::Path class.
|
|
* Extend inline code documentation.
|
|
* Code cleanups.
|
|
|
|
Version 0.3.3 (formerly 0.4.0)
|
|
------------------------------
|
|
|
|
New/expanded APIs:
|
|
* Settings::getVisibilityMask(), Settings::getVisibilityMask() - for setting
|
|
whether osgXR should create visibility masks (when supported by the OpenXR
|
|
runtime).
|
|
* Manager::hasVisibilityMaskExtension() - for finding whether the visibility
|
|
mask extension is supported by the OpenXR runtime.
|
|
* Manager::setVisibilityMaskNodeMasks() - for setting the left and right eye
|
|
NodeMasks to use for visibility masks.
|
|
|
|
Behind the scenes:
|
|
* Implement creation, caching, and updating of visibility mask geometry for each
|
|
OpenXR view.
|
|
* Implement rendering of visibility masks to the depth buffer to reduce fragment
|
|
overhead when GPU bound.
|
|
|
|
Version 0.3.2
|
|
-------------
|
|
|
|
Bug fixes:
|
|
* Fix a couple of bugs around session recreation (used when VR or swapchain mode
|
|
changes).
|
|
|
|
Behaviour changes:
|
|
* Pick depth buffer format based on GraphicsContext traits depth bits.
|
|
* Enable depth info submission at session state to allow it to be dynamically
|
|
switched without hitting a SteamVR hang during instance destruction.
|
|
|
|
Behind the scenes:
|
|
* Fix a few inconsequential compiler warnings with -Wall.
|
|
* Minor cosmetic cleanups (whitespace, explicit include).
|
|
|
|
Version 0.3.1
|
|
-------------
|
|
|
|
Behind the scenes:
|
|
* Fix possible crash in XRState::isRunning() if session is delayed coming up.
|
|
|
|
Version 0.3.0
|
|
-------------
|
|
|
|
API changes:
|
|
* Manager::checkAndResetStateChanged() - to detect when VR state may have
|
|
changed, requiring app caches to be invalidated or synchronised with the new
|
|
state.
|
|
|
|
Version 0.2.1
|
|
-------------
|
|
|
|
Behind the scenes:
|
|
* Make frame view location accessors thread safe so multiple cull threads can be
|
|
used.
|
|
|
|
Version 0.2.0
|
|
-------------
|
|
|
|
API changes:
|
|
* Cleanups (moving dynamic bits out of Settings).
|
|
* Manager::update() - should be called regularly to allow for incremental
|
|
bringup and OpenXR event handling.
|
|
* Manager::setEnabled() - for triggering bringing up/down of VR.
|
|
|
|
New/expanded APIs:
|
|
* Manager::destroyAndWait() and Manager::isDestroying() - for clean shutdown
|
|
before program exit.
|
|
* Manager::syncSettings() - to trigger appropriate reinitialisation to handle
|
|
any changed settings.
|
|
* Manager::getStateString() - to get a user readable description of the current
|
|
VR state.
|
|
* Manager::onRunning() - virtual callback when VR has started (consider setting
|
|
up desktop mirrors).
|
|
* Manager::onStopped() - virtual callback when VR has stopped (consider
|
|
removing desktop mirrors).
|
|
* Manager::onFocus() - virtual callback when VR app is running in focus
|
|
(consider resuming if paused).
|
|
* Manager::onUnfocus() - virtual callback when VR app has lost focus (consider
|
|
pausing the experience).
|
|
|
|
Behind the scenes highlights:
|
|
* Make OpenXR bringup incremental, reversible and restartable.
|
|
* Improved handling of SteamVR's messing with GL context and threading.
|
|
* Separated event handling.
|
|
|
|
Version 0.1.0
|
|
-------------
|
|
|
|
This represents early development with the API still in heavy flux.
|
|
|
|
It supported:
|
|
* A Manager class with virtual callbacks for configuring views.
|
|
* Desktop mirrors of the VR views.
|