Releases: needle-mirror/com.unity.xr.openxr
Releases · needle-mirror/com.unity.xr.openxr
1.14.0
[1.14.0] - 2024-12-13
Added
- Added support for the RG16f texture format and a selection mode for the texture format of the Space Warp motion vector texture for the Meta Quest feature. You can select the format for the Space Warp motion vector texture in Editor > Project Settings > XR Plug-in Management > OpenXR > Android tab > Meta Quest Support feature settings.
- Added the following extension methods for
XrResult
:IsSuccess()
,IsUnqualifiedSuccess()
, andIsError()
, which you can use to more conveniently reason aboutXrResult
values. - Added new values to the
XrResult
enum to match the values present in the nativeXrResult
type in OpenXR 1.1.36. - Added support for locating the OpenXR loader for the Meta XR Simulator on OSX.
- Added new Optimize Multiview Render Regions settings option for Meta Quest devices. In the context of XR rendering, Multiview Render Regions enables the drivers to skip shader invocations (and rendering work) for screen areas outside of the user's view (such as the nasal regions that the user can't see within the headset). You can toggle on support for Multiview Render Regions in Editor > Project Settings > XR Plug-in Management > OpenXR > Android tab > Meta Quest Support feature settings. Note that Multiview Render Regions requires Symmetric Projection settings toggle turned on, and Render Mode set to Single Pass Instanced \ Multi-view. Multiview Render Regions is only supported in the Vulkan Graphics API, and it is activated at application start up.
- Added project validation warning to prevent user from using URP upscaling with XR.
Deprecated
- Deprecated
XrResult.TimeoutExpored
andXrResult.AndroidThreadSettingsdFailureKHR
and replaced them with correctly spelled enum values.
Fixed
- Occlusion Mask vertices projected based on FOV.
1.13.2
[1.13.2] - 2024-11-15
Added
- Added UWP platform as one of the supported build targets for OpenXR Composition Layer feature.
Fixed
- Fixed compiler errors when using experimental versions of the XR Composition Layers package (versions older than 1.0.0). You are required to use XR Composition Layers 1.0.0 or newer for OpenXR support.
1.13.1
[1.13.1] - 2024-10-31
Fixed
- Conformance Automation Feature: Removed assert for optional entry point xrSetInputDeviceVelocityUNITY.
1.13.0
[1.13.0] - 2024-09-16
Added
- Added Meta XR Simulator as runtime option for OpenXR. One can search for the
com.meta.xr.simulator
package to add the Open XR runtime to the dropdown list of available runtimes during Play Mode. - Added a
Quest 3S
option toTarget Devices
in the Meta Quest Support settings. This specifies the application's support for Quest 3S devices within the Android manifest. - Added
IUnityXRDisplay::CreateTexture
API to C# script so providers can access them for functionality. - Added APIs to provide an alternative to the Input System:
OpenXRFeature.GetAction
,OpenXRInput.GetActionHandle
,OpenXRInput.SendHapticImpulse
,OpenXRInput.StopHapticImpulse
,OpenXRInput.TrySetControllerLateLatchAction
, andOpenXRInput.GetActionIsActive
. - Added a "Controller XRInput" sample to demonstrate how to access input data without the Input System.
- Added experimental support for XR Composition Layers support. Install the Unity Composition Layer (com.unity.xr.compositionlayers) package to use composition layers in an OpenXR project.
- Added support for the
XR_KHR_maintenance1
extension. This low-level extension provides support for new capabilities promoted in the OpenXR 1.1 standard, which may be needed for backwards compatibility for using new extensions in OpenXR loaders using the version 1.0 of the standard. You need to request this extension if your project will make use of OpenXR 1.1 extenstions that need this extension and are backwards compatible with loaders based on the 1.0 version of the OpenXR standard. If your project targets only the OpenXR 1.1 version, you don't need to request this extension. To use theXR_KHR_maintenance1
extension, you must request it as part of your own OpenXR feature definition. Refer to XR_KHR_maintenance1 for more information on the extension. - Added OpenXR 1.1 Runtime support.
Changed
- Added Known Issue to documentation covering how OpenXR doesn't provide Acceleration or Angular Acceleration values for input devices, and these will always return 0.
- Added a validation rule requiring Multi-view to be enabled in order to enable Symmetric Projection.
- Implements the construction and maintenance of native composition layers in C# via our LayerProvider classes inheriting from OpenXRCustomLayerHandler.
- Changed OpenXR loader version to 1.1.36.
Fixed
- Symmetric Projection was being gated behind foveation extensions being enabled. This wasn't necessary and that dependency has been removed.
- Fixed a bug that causes a user to need a validation rule to make OpenXR loader active.
- Fixed
m_BlendMode
from being overwritten whenever theDisplaySubsystem
restarts. - Fixed Metal API initialization.
- Fixed Custom Composition Layer Feature not showing up in the OpenXR feature setting UI after importing into project.
- Fixed a crash with composition layers in scene due to race condition.
1.12.1
[1.12.1] - 2024-09-05
- Fixed rendering bug when rendering viewport scale < 1.
- Fixed issue where the Editor would hang when renaming and then viewing OpenXR Settings.
1.12.0
[1.12.0] - 2024-08-01
Added
- Add class
MetaQuestTouchPlusControllerProfile.QuestTouchPlusController
interaction profile to support Meta Quest Touch Plus Controllers. - Added a validation rule to warn you that soft shadows can negatively affect performance for Microsoft HoloLens.
- Added a validation rule to infrom you to make the OpenXR Loader an active loader in XR Plugin Management if there are active OpenXR features in the OpenXR settings.
- Added
OpenXRSettings.autoColorSubmissionMode
boolean property to specify OpenXR to use a platform-supported color format in the display swapchain, or for you to manually set which format should OpenXR to use. - Added
OpenXRSettings.colorSubmissionModes
array property to control the color format used by the OpenXR display swapchain. The available options can be chosen from theOpenXRSettings.ColorSubmissionModeGroup
enum. OpenXR will use supported color formats by the platform, starting from the first option in the list. In case none of the color formats supplied is supported by the platform, an error will be thrown. If no color formats are assigned, the format used will be RGBA32. - Added
Automatic Color Submission Mode
toggle andColor Submission Modes
list to the OpenXR project settings tab, allowing you to manually specify the preferred color format to be used by the display swapchain. OpenXR will use supported color formats by the platform, starting from the first option in the list. In case none of the color formats supplied is supported by the platform, an error will be thrown. If no color formats are assigned, the format used will be RGBA32.
Fixed
- Fixed sort order of OpenXR features listed based first on priority, then by name, preventing spurious changes in Settings files.
1.12.0-exp.1
[1.12.0-exp.1] - 2024-06-28
Fixed
- Fixed Custom Composition Layer Feature not showing up in the OpenXR feature setting UI after importing into project.
- Fixed a crash with composition layers in scene due to race condition.
Changed
- Implements the construction and maintenance of native composition layers in C# via our LayerProvider classes inheriting from OpenXRCustomLayerHandler.
1.11.1-exp.1
[1.11.1-exp.1] - 2024-06-12
Fixed
- Fixed Metal API initialization.
1.11.0
[1.11.0] - 2024-05-01
Added
- Added the
XrPerformanceSettings.SetPerformanceLevelHint
static method, which lets you send performance level suggestions to the runtime. These hints help an OpenXR runtime to optimize the use of hardware resources according to the application needs. Refer to XR performance settings for more information. This requires the XR_EXT_performance_settings extension is enabled in the OpenXR runtime. - Added the
XrPerformanceSettings.OnXrPerformanceChangeNotification
event, which provides notifications from the OpenXR runtime when a device's thermal, rendering, or compositor performance state changes. The performance states include:Normal
,Warning
, andImpaired
. Refer to XR performance settings for more information. This requires the XR_EXT_performance_settings extension is enabled in the OpenXR runtime. - Added a
Quest 3
option to theTarget Devices
set in the Meta Quest Support settings. This specifies the application's support for Quest 3 devices within the Android manifest. - Added missing ButtonControl actions
pinch_ext
,aim_activate_ext
andgrasp_ext
for Hand Interaction Profile. - Added API
OpenXRUtility.ComputePoseToWorldSpace
to recalculate object position and rotation from tracking-space to world-space. Applicable for use cases such as teleporting. - Added support for using Local Floor Reference Space in the OpenXR runtime. Useful in applications that require the user to be seated or in a standing fixed position.
- Added PreInit flags to allow users to disable the main frame buffer and use offscreen swapchain when using Vulkan on Android in the OpenXR settings.
- Added functional DX12 mock runtime support to the OpenXR package.
- Added
RegisterStatsDescriptor
method to theOpenXRFeature
abstract class, which lets your OpenXR feature to register a new statistic that can be feed into and queried at runtime. This method is not thread safe. - Added
SetStatAsFloat
method to theOpenXRFeature
abstract class, which lets your OpenXR feature to feed a float value into a specific statistic that was previously registered using theRegisterStatsDescriptor
. This method is thread safe. - Added
SetStatAsUInt
method to theOpenXRFeature
abstract class, which lets your OpenXR feature to feed an unsigned integer value into a specific statistic that was previously registered using theRegisterStatsDescriptor
. This method is thread safe. - Added the
OpenXRSettings.RefreshRecenterSpace
static method, which lets you regenerate the internal XR space used for recentering, without the need to wait until a recenter event is received by the OpenXR SDK. Note that this method does not perform a recenter event in any way, as this can only be done by the device runtime. - Added Pre-pass Foveated Rendering for both d3d12 and Vulkan. This feature utilizes Fragment Density Mapping on Quest Devices and Fragment Shading Rate on PC to optimize rendering performance. Refer to Foveated Rendering for more information.
- Added
OpenXRUtility.IsSessionFocused
to return if the current session is in the focused state. - Added
OpenXRUtility.IsUserPresent
to return the change of user presence, such as when the user has taken off or put on an XR headset. If the system does not support user presence sensing, runtime assumes that the user is always present and IsUserPresent always returns True. If the system supports the sensing of user presence, returns true when detected the presence of a user and returns false when detected the absence of a user.
Changed
- Changed tracking origin to use Local Floor in place of Floor by default.
- Changed delta time calculation to utilize OpenXR for frame estimation. Previously internal Unity mechanisms were used. This feature is currently disabled but will be available in the future.
- When retrieving input feature from CommonUsages.userPresence, if XR_EXT_user_presence is supported by the current system, retrieved value will be the same as
OpenXRUtility.IsUserPresent
. IfXR_EXT_user_presence
is not supported, retrieved value will be based onOpenXRUtility.IsSessionFocused
, which is the default return value before 1.11.0.
Fixed
- Fixed Marshal to correctly read the number of bytes for booleans in C++.
- Fixed crash that occurs while cleaning up destroyed swapchains in OpenXR.
- Fixed Depth Texture flag disparity between the OpenXR and Oculus providers.
Added
- Added
OpenXRUtility.IsSessionFocused
to return if the current session is in the focused state. - Added
OpenXRUtility.IsUserPresent
to return the change of user presence, such as when the user has taken off or put on an XR headset. If the system does not support user presence sensing, runtime assumes that the user is always present and IsUserPresent always returns True. If the system supports the sensing of user presence, returns true when detected the presence of a user and returns false when detected the absence of a user.
Changed
- When retrieving input feature from CommonUsages.userPresence, if XR_EXT_user_presence is supported by the current system, retrieved value will be the same as
OpenXRUtility.IsUserPresent
. IfXR_EXT_user_presence
is not supported, retrieved value will be based onOpenXRUtility.IsSessionFocused
, which is the default return value before 1.11.0.