Dual Render Fusion - Added FusionLifecycleEvents component providing event callbacks for dynamic OpenXR related events (like connecting/disconnecting AR glasses).
Dual Render Fusion - Added SpacesGlassStatus component to retrieve information about connected glasses like device type and conncection status.
Dual Render Fusion - Added SpacesHostView component to display content only on a smartphone in a Host-Viewer form factor and disable content elsewhere.
Dual Render Fusion - Added FusionScreenSetup component to ensure a correct display orientation during runtime.
Dual Render Fusion - Added FusionSimulator for scene simulation inside the Editor.
Improved trackable managers', SpacesThreadUtilities and the SpacesCompositionLayer component's lifecycle handling to work with connect/disconnect events.
Added boundary checks for SpacesCompositionLayer properties to not go over thresholds.
Fixed compiler errors that occurred in Standalone mode.
Fixed wrong behaviour when setting the convex hull property of the SpacesARPlaneManagerConfig.
Added support for the XRCameraSubsystem.TryGetTextureDescriptors method. ⚠ Warning: This change breaks compatibility with the ARCameraBackground component as described in the known issues.
Improved handling of QR Code Tracking error codes.
QCHT plugin version increased from 4.1.4 to 4.1.5.
Samples - Disabled the ARCameraBackground in each scene to avoid rendering issues after adding support for the XRCameraSubsystem.TryGetTextureDescriptors method.
Samples - Removed the gaze pointer and hands as input modalities from most scenes in favour of controller input.
Origin related spatial mesh transforms are automatically applied to the mesh object within the subsystem.
The C++ library inside the Android OpenXR loader archive has been changed with a static one to avoid conflicts with potential other plugin archives using the libc++_shared.so file. ⚠ Warning: This might break functionality with the Snapdragon Spaces Services prior to version 0.19.1.
The Host Controller has been adjusted to recentered only once after app start, instead of doing so in each scene.
Samples - A pin button has been added in the floating UI panels within each sample scene to lock them in place, if needed.
Improved host controller and Spaces Launcher. Changed activity names from com.qualcomm.snapdragon.spaces.customlauncher.SpacesLauncher to com.qualcomm.snapdragon.spaces.splashscreen.SplashScreenActivity.
Added OpenXR project validator warning for adding a Snapdragon Spaces SDK scripting define symbol in the Project Settings.
Camera Frame Access OpenXR calls support the latest OpenXR runtime specification.
Camera Frame Access is blocked on VRX to further improve the implementation for the device.
Samples - The gaze pointer uses the new Spaces Composition Layer for more stable rendering, because no movement induced post-processing is applied to the element.
XRCpuImage's GetPlane function is now supported, as well as the AR Camera Manager's frameReceived event callback.
Samples - The Spaces AR Mesh Manager Config is an optional component to better steer the characteristics of the generated spatial mesh as mentioned in the perception sample description. With this component, the Spatial Meshing provider can also handle a possible TrackingOriginMode.Floor related camera height offset coming from runtime side. The mesh could appear at a wrong position if this component is not used in that case.
Samples - The Spaces AR Plane Manager Config is an optional component to enable or disable convex hull planes.
The start-up procedure before launching the main application activity includes a check for the Display over other app setting of the Snapdragon Spaces Services. In case the camera permission was not granted for the runtime or that setting is not enabled, a prompt will be shown that can forward the user to the Snapdragon Spaces Services' configuration page.
Changed accessibility level of some classes as mentioned in the migration guide.
Samples - Disabled the AR Camera Manager and AR Camera Background components on all samples except camera access to avoid camera lifecycle related issues, as mentioned in the known issues section. The intention is to re-enable those in the future for portability to mobile AR platforms.
Sample and package code has been restyled to adhere to the C# Coding Conventions established by Microsoft and used by Unity as well.
Samples - UI panels are now always following the gaze.
Samples - UX when using pointers or gaze interaction has been improved.
Samples - Hand Tracking has been enabled as the default input mode, if the QCHT package is included in the project. Otherwise, the Gaze Pointer is the default input mode.
Optional image tracking modes can be set for better control over the underlying image tracking algorithm's calculation periods. For more information regarding this change please visit the Image Tracking section.
Prevent Sleep Mode project setting in the Base Runtime settings to prevent application screen timeout on all devices.
New OriginLocationUtility class to help get the session origin, independent of type (ARSessionOrigin or XROrigin).
A warning will be thrown if the background for the session camera is set incorrectly when enabling Passthrough.
Samples - The Unity build version is now included in the info panel in the main menu.
The validation rule that enforced unsafe code to be enabled was removed from the plugin and moved to the CameraFrameAccessSampleController.cs, because it is only needed in the samples.
The Plane Detection, Image Tracking and Hit Testing subsystems will ask for the runtime camera permissions instead of the application camera permissions when the Scene Understanding backend is disabled.
Samples - Fixed an issue with calculation of the gaze interactor position.
Fixed an issue where the windowFocusChanged additions were not added to the Unity activity when disabling the "Launch Controller on Host" option.
The Export Headless option in the Base Runtime feature options correctly removes intents of the SpacesLauncher activity in the final manifest.
The underlying Hit Testing, Plane Detection and Spatial Meshing provider stops correctly if it's not needed anymore. In older runtimes, this behavior could break expected application functionality, as the provider can't be started within 20–40 seconds. Therefore, this fix can break backwards compatibility.
Camera Frame Access lifecycle improvements to prevent the feature from initializing incorrectly.
The Oculus Touch controller interaction profile has been added to the Feature Validation list. It should be enabled by default to ensure full support for the samples.
The Spaces Hand components have been marked as deprecated.
Samples - The sample from the QCHT Interaction package are used instead of the old Hand Tracking sample.
Supported Unity version changed to 2021.3.16f1 with upgrades to specific package:
Unity OpenXR plugin version upgraded to 1.6.0.
AR Foundation version increased to 4.2.7.
XRIT version increased to 2.0.6.
Building with Launch Application on Viewer and Launch Spaces Controller on Host disabled removes the UnityCustomLauncher.aar as a whole from the build.
Samples - UI shows a warning message if a perception subsystem hasn't been started or camera permissions are not enabled.
Samples - Host controller ray will be reset in the samples after switching to it.
Updated used OpenXR structs to the latest versions.
The default Hit Testing backend has been changed to the XR_APILAYER_QTI_scene_understanding layer from the runtime.
The default Plane Detection backend has been changed to the XR_APILAYER_QTI_scene_understanding layer from the runtime.
Removed a feature validation rule, that prevented the application to be built with multithreaded rendering turned on.
Samples - QCHT packages have been updated with support for MRTK and smaller refinements.
Support for Oculus Touch controller interaction profile.
The input controllers change based on the input profile available (Controller Manager).
Samples - New public SpacesHandManager field in prefab to be in conformance to other TrackableManager implementations.
QCHT Core package additions:
Added XR Interaction Toolkit support.
QCHT Interaction package additions:
Added a Reticle Activation Threshold to go along with Laser Activation Threshold, so that the Reticle can be set to show on Hover while the Laser is set to show on rest. The default for new Reticle Activation Threshold can be the same as Laser Activation Threshold for backward compatibility.
Samples - New legend panel in the anchor sample scene to clarify what the different gizmo visualizations mean.
Additional options in the BaseRuntimeFeature settings:
Export Headless: Enabling this will export the apk without the launcher tag and make it invisible in the App Launcher.
Alternate Start Activity: This value allows setting another activity than the Unity default one, that should be started from the SpacesLauncherActivity.
Skip Permission Checks: Enabling this will skip permission checks done upon startup of the application.
QCHT Core package additions:
QCHTManager can now be created directly from scene by right clicking and QCHT > QCHTManager.
MeshLocal bounding box.
QCHT Interaction package additions:
Added a custom material with a ZTest off shader on the Physics raycast reticle.
QCHTRay related additions:
Added Ray bendUp power.
Added Ray BendRatioActivationThreshold value.
ControlBox related additions:
Added scale offset property in editor to avoid box visual clipping on the object.
Added object rotation in initial box size computation to avoid strange behavior when object is not on its pivot.
Added movement constraint in editor to lock user movement horizontally/vertically.
Added camera permission check for the Snapdragon Spaces Services on application launch, with a prompt to enable it in the Snapdragon Spaces Services Android settings (if it wasn't given before).
Updated OpenXR runtime with plane detection tracking layer.
The UnityServicesHelper.aar was split into UnityServicesHelper.aar and UnityCustomLauncher.aar, with the option to disable the later one in the BaseRuntimeFeature options through the OpenXR project settings.
Added a helper in the menu item under Window > Snapdragon Spaces > Add Scenes to Build Settings to automate putting the sample scenes to the build settings.