1
0
Fork 0
flightgear/3rdparty/osgXR/CHANGELOG.md
James Hogan 0431e7cb3c
3rdparty: Import osgXR 0.3.7+
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.
2022-01-13 18:01:00 +00:00

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.