# Unity Changelog

[0.19.1.1] - 2024-01-25

# Changed

  • OpenXR plugin version decreased from 1.9.1 to 1.8.2 to avoid texture memory leaks when suspending and resuming the application.
  • QCHT plugin version increased from 4.1.3 to 4.1.4. The updated package will target the OpenXR plugin version 1.8.2 as opposed to 1.9.1.
[0.19.1] - 2023-12-12

# Added

# Changed

  • QCHT version increased from 4.1.2 to 4.1.3.
  • OpenXR plugin updated from 1.8.2 to 1.9.1.
  • 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.

# Fixed

  • Thread allocation has been improved when using the anchor subsystem, which should result in lower CPU usage.
  • External textures created for the composition layer are cached to not run into resource allocation issues when using the feature extensively.
  • Fixed default environment blend mode selection that would have caused issues with the Snapdragon Spaces Services version 0.19.1 and higher.
  • Samples - The hand tracking samples can now be accessed from the main menu without hand tracking being selected as the active input mode.
[0.18.0] - 2023-10-31

# Added

  • Added the Display Refresh Rate extension.
  • Samples - Added free placement support to the anchors sample as well as the legacy surface placement support.

# Changed

  • QCHT version increased from 4.1.0 to 4.1.2.
  • OpenXR plugin updated from 1.7.0 to 1.8.2.
  • Snapdragon Spaces OpenXR feature settings divided between experimental and non-experimental.

# Fixed

  • Fixed saving anchor error reporting due to (FAILURE_INSUFFICIENT_QUALITY).
  • Stability of Spaces Launcher improved.
  • Fixed anchor loading and saving issue when enabling and disabling anchor feature in scene.
  • Fixed null exception errors in Camera Subsystem Sensor Properties and Last YUV Frame.
  • Fixed Android presentation display presenting wrong screen.
  • Fixed image tracking state not being updated in static mode.
  • Samples - Fixed info page buttons not scrolling with gaze pointer interaction.
  • Samples - Fixed Passthrough not working on the Camera Access scene.
  • Samples - Fixed the opacity slider not updating opacity value of the mesh on spatial meshing sample.
  • Samples - Fixed unsaved anchor not following UI legend.
[0.17.0] - 2023-09-28

# Added

  • Exposed the reason of an anchor failing to persist.
  • Added CompositionLayerQuad Vulkan support.
  • Added timestamp to XR camera frame (XRCameraSubsystem.TryGetLatestFrame).
  • Defined Spaces Symbol in the SDK.

# Changed

  • XRIT version increased from 2.3.2 to 2.4.3.
  • QCHT version increased from 4.0.5 to 4.1.0.
  • 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.

# Fixed

  • Samples added unsafe code check to new samples assembly definition.
  • Keep the VST status after suspend/resume.
  • Fixed spatial mesh shader wrong appearance with single-pass rendering.
  • Fixed Vulkan support for the Composition Layer.
  • Updating XRIT to the version 2.4.0+ breaks the UI interaction functionalities in the samples.
[0.16.0] - 2023-08-31

# Added

  • Exposed camera extrinsic for frame delivery.
  • Removed Camera Frame Access restriction in VRX devices.
  • Added support for frame delivery conversion parameters.
  • Improved the Spaces Composition Layer.

# Changed

  • Unity OpenXR plugin version upgraded to 1.7.0.
  • Check Installed Runtime is deprecated from the OpenXR base runtime settings.
  • Added closing the app functionality with the back button press of the device.
  • Unified camera frame buffers for built-in RGB conversion and YUV plane access.
  • Samples - Removed closing the app functionality with a long menu button press.
  • Samples - Changed the input mapping reference for device rotation for the XR controllers.

# Fixed

  • Improved plugin stability.
  • Removed the video image compressed in Camera Frame Access.
  • Reduced lifecycle impact of memory trim usage.
  • Build a Spaces app with OpenXR disabled is possible.
  • Fixed ARRaycastManager.AddRaycast causing a freeze.
[0.15.0.1] - 2023-08-07

# Added

  • The spatial anchors are created asynchronously for better performance.

# Fixed

  • Fixed freezing when creating spatial anchors.
[0.15.0] - 2023-07-31

# Added

  • Downsampling support for Camera Frame Access textures.
  • Samples - Support automatic switching between hand tracking and controllers.
  • Samples - Added an opacity slider in the Spatial Meshing sample to set the opacity of the rendered spatial mesh.
  • New Spaces Composition Layer component for rendering textures directly to the HMD and bypassing post-processing steps.

# Changed

  • 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.
  • Samples - QCHT3 compatibility has been removed.
  • Add flag in OriginLocationUtility.GetOriginCamera() method to include inactive GameObjects.
  • The Use Scene Understanding Backend of the Plane Detection feature is enabled by default on import now.
  • Samples - Image Tracking sample's target augmentation has been changed.
  • Samples - The included QCHT interaction package has been updated to version 4.0.1.

# Fixed

  • Improved performance when plane detection and Spatial Meshing are not used at the same time.
  • Samples - Selecting a cube in the XRIT sample will not bring it closer anymore.
  • Snapping issues have been reduced when using Hand Tracking.
  • Samples - The gaze pointer should interact with UI elements more than once again.
  • Hand Tracking should prevail after standby.
  • Samples - Null reference error in the Anchor sample has been fixed.
  • Samples - Fixed the InteractionManager script to not throw any errors on Unity 2022 LTS.
[0.14.0] - 2023-05-31

# Added

  • 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

  • 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 (opens new window) established by Microsoft and used by Unity (opens new window) as well.
  • Samples - UI panels are now always following the gaze.
  • Samples - UX when using pointers or gaze interaction has been improved.

# Fixed

  • Unhandled exception when stopping Image Tracking.
  • Crash when trying to call ARTrackedImageManager.CreateRuntimeLibrary.
  • Samples - Selecting something with the controller while using gaze interaction is possible again.
[0.13.0] - 2023-05-04

# Added

  • 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.

# Changed

  • Samples - Changed appearance of all the samples.
  • Samples - Updated the QCHT interactions package to version 4.0.0-pre.11.
  • Samples - The deprecated ARPoseDriver component has been replaced with TrackedPoseDriver in the samples.
  • Refined code to ensure base compatibility with Unity 2022.1, 2022.2 and 2023.1 (Beta).
  • Code refinements and updates of the SpacesLauncher.aar and ServicesHelper.aar archives inside the package.
  • Hit Testing and Plane Detection lifecycle improvements and changes:
    • Removed the distance limitation that was set internally for AR Raycasts.
    • Plane extents' calculation has been changed and can break backwards compatibility.
  • 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.

# Fixed

  • 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.
[0.12.1] - 2023-04-03

# Added

  • 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.

# Changed

  • Samples - Passthrough in VR can be toggled on and off with the X and A buttons in every scene.
  • Samples - Hit Testing visualization has been refined.

# Fixed

  • The spatial mesh created by the Spatial Meshing Subsystem updates itself rather than recreation on every frame.
  • The permissions check have been refined to not break on Android 13.
[0.11.1] - 2023-02-14

# Added

# Changed

  • 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.

# Fixed

  • Hand joints array of the SpacesHand component is now cached after applying internal transformations till the next update of the joint poses.
  • Fixed wrong OpenXR struct initializations in OpenXR features.
[0.10.0] - 2022-12-15

# Added

[0.9.0] - 2022-11-24

# Added

  • 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:
  • 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.
    • Added XR Interaction Toolkit support.

# Changed

  • Re-Center button of the host controller is resetting the ray to the head pose forward instead of the session origin.
  • Samples - Added Hit Testing for anchor placement in the anchor sample.
  • Samples - The gaze reticle position is using XR.eyeTexture size values, instead of screen size values.

# Fixes

  • QCHT Core package fixes:
    • Hand simulation system improvements.
    • Removes warning in QCHTUtils.
    • QCHTInstanceColor shader issue.
  • QCHT Interaction package fixes:
    • Release interactable if hands are no longer tracked when interacting.
[0.8.0] - 2022-10-13

# Added

  • 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.

# Changed

  • Application lifecycle improvements allow Spaces apps to be started sequentially without the need of force stopping the Snapdragon Spaces Services.
  • ⚠ Experimental Spaces Anchor Store load and save calls are multithreaded now. Loading saved anchors don't block the main thread anymore.
  • Host controller archive was updated with better touchpad visuals.
  • QCHT Core package changes:
    • Data population improvement
  • QCHT Interaction package changes:
    • New Grab Point Editor for Unity 2021.3.x
    • Improved HandPoseDriver.
    • Updated alpha management on hands.
    • QCHTRay related changes:
      • Stop computing a ray middle point if the hand is not moving to improve stability feeling on ray bending.
      • Ray now bend only in up direction.
      • Ray bending computation stabilization when hand is not moving.
    • ControlBox related changes:
      • General improvements

# Fixed

  • QCHT Interaction package changes:
    • New Grab Point Editor for Unity 2021.3.x
    • Saving prefab in immutable folder error in Unity Editor.
    • Fixed wrong color applied on reticle when using QCHTControlBox color settings.
    • QCHTRay
      • Fixed QCHTRay and avoid disabling the reticle in a wrong state.
[0.7.0] - 2022-08-31

# Added

  • ⚠ Experimental Spaces Anchor Store for saving and loading anchors to local storage with updates in the anchor sample scene.
  • QCHT Core package additions:
    • Added URP (Universal Render Pipeline) support for custom shaders
    • Tooltips for better developer experience
  • QCHT Interaction package additions:
    • Added URP (Universal Render Pipeline) support for custom shaders
    • Hand can be hidden even if present (Hand Presenter)
    • Allow to display ghost hand or not (Hand Presenter)
    • Pointer size can now be changed for distal interaction (graphic and physic raycaster)
    • Tooltips for better developer experience

# Changed

  • Host controller archive was updated with a light/dark mode setting and a haptic feedback toggle.
  • Raycast Subsystem supports continuous hit testing with updated sample scene.
  • Updated Hand Tracking packages.
  • Component version panel includes a scroll view now to account for more components in the future.
  • Updated Snapdragon Spaces Services included in the developer package.
  • QCHT Core package changes:
    • Reorganize UI components and rename variables for more comprehension and better developer experience
  • QCHT Interaction package changes:
    • Reorganize UI component and rename variables for more comprehension and better developer experience for following components:
      • Hand Presenter
      • QCHT Ray
      • QCHT Control Box
      • Grab Point
      • Proximal Interactor
    • Rename interaction types from Simple, VFF, Ghost Only to Triggering, Colliding, None.
    • Enable only 4 gestures for proximal interaction (Pinch, Grab, Point, Open Hand)
    • Don't import materials from hand .fbx by default
    • All custom Editor scripts logic are moved in corresponding scripts
    • All Texture resources are moved into texture folder
    • QCHTPhysicsRaycaster supports event masks
    • Create control box settings and add handles display types

# Fixed

  • Hand joint poses from the Spaces Hand component have been fixed to be in world space rather than relative to the head pose.
  • Build issues for Unity 2021's incremental build pipeline have been fixed.
  • QCHT Interaction package fixes:
    • Pointer position offset
    • Improved Snapping
    • Added RayState selected when Raycast dragging
    • Repaint scene view after clicking Edit Pose
    • QCHT Interaction controller does not require HandPresenter anymore
    • Fixed issue when switching between trigger and colliding hand
[0.6.1] - 2022-07-22

# Added

  • 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).
[0.6.0] - 2022-07-21

# Added

  • Custom Hand Tracking Subsystem support and new sample scene.
  • Separate hand tracking packages included in the developer package for extended hand tracking capabilities.
  • ⚠ Experimental Raycast Subsystem support and new sample scene.
  • Samples - Component version info accessible through the main menu.
  • Samples - Controller type (gaze or device pointer) is being saved across app starts and scene switches.

# Changed

# Fixed

  • Fixed bug that prevented a custom controller including SpacesController in its file name from being included in the final build.
[0.5.0] - 2022-06-01

# Added

  • Tracked Image Subsystem support and new sample scene.
  • Launch Spaces Controller and Use Custom Controller options added to the BaseRuntimeFeature settings.
  • Added Custom Controller Package folder with an Android Studio project for building custom Android archives into the developer package.
  • Samples - Pressing and holding the host controller's Menu button will close the samples.
  • Samples - Encapsulated sample script in an own namespace.
  • Samples - Added vertical bias to the GazeInteractor component to shift the reticle.

# Changed

  • Host controller was moved out of Snapdragon Spaces Services and into the Unity package as an Android archive.
  • Updated Snapdragon Spaces Services included in the developer package.
  • OpenXR plugin version dependency of the package was updated to 1.4.2 (from 1.2.8).
  • Renamed and streamlined editor scripts contained in the Editor folder of the package.

# Fixed

  • Jitter issue for head locked content.
  • Anchor and Plane Detection Subsystem lifecycle refinements, when starting and stopping the subsystem.
  • Samples - Gaze pointer size was decreased once more.
  • Samples - Refined GazeInteractor calculation to get the horizontal half independent of platform.
[0.4.1] - 2022-04-28

# Fixed

  • Updated Snapdragon Spaces Services included in the developer package, which fixed reading wrong values from config for ThinkReality A3.
[0.4.0] - 2022-04-28

# Added

  • Added support for motorola edge+, motorola edge 30 pro.
  • Plane Detection Subsystem support and new sample scene.
  • Added a dialog before starting the app to give camera permissions (for plane detection and future tracking types).
  • Samples - A quit button was added to the main menu to quit the application.

# Changed

  • Host controller updated with new UI.
  • Former SM8450 QRD device not supported anymore.
  • 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.

# Fixed

  • Converting from OpenXR pose data to Unity pose data applies the correct coordinate system modifications now.
[0.3.0] - 2022-03-15

# Added

  • Anchor Subsystem support and new sample scene.
  • Host controller support.
  • Session Subsystem to retrieve tracking state and supported features.
  • Screen timeout is disabled through the SampleController in the sample scenes and all controllers deriving from it.
  • The AR Session Origin is reset on every scene change. There is a value that can be set to control that in the SampleController component.

# Changed

  • Updated OpenXR runtime with anchor layer.
  • Samples - XR Interaction Toolkit sample scene is enabled again.
  • The UnityServicesHelper.aar is removed from the final build, if the OpenXR plugin and the BaseRuntimeFeature are not set.
  • Samples - The Head Tracking Sample was renamed to Positional Tracking Sample.
  • Samples - The device and gaze pointer prefabs are decoupled from the AR Camera and don't need to be parented to it anymore.
  • Custom Snapdragon Spaces Controller Profile was removed in favor of the Khronos Simple Controller Profile as the new default profile.

# Fixed

  • The AR Camera's Editor movement (controlled by the EditorCameraController) is happening in local space under AR Session Origin now.
  • The BaseRuntimeFeature is not checking for the runtime and showing a dialog anymore if the feature is enabled, but the OpenXR plugin is disabled.
[0.2.0] - 2022-02-01

# Added

  • The built application starts its context directly on the viewer now, removing the need for a custom adb launch command.

# Changed

  • Updated OpenXR runtime.
  • Samples - Interaction Sample is disabled, since there is no context shown on the host anymore to register UI input.

# Fixed

  • Samples - Floating UI size is smaller and can be interacted with easier.
  • Samples - Additional cosmetic improvements.
[0.1.3] - 2021-12-07

# Changed

  • Updated OpenXR runtime. Start and stop issue is fixed now.
[0.1.2] - 2021-12-01

# Added

  • NOTICE.txt file added to the archive.
  • 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.

# Changed

  • Samples - Scenes and scripts got refined and streamlined.
  • Samples - UI refinements.

# Fixed

  • GyroOverride is not throwing an error in the Editor anymore.
  • Samples - Fixed missing long press action error.
[0.1.1] - 2021-11-15

# Added

  • BaseRuntimeFeature gets new project validation rules to avoid having missing project settings.
  • OpenXR runtime got updated.
[0.1.0] - 2021-11-03

# Added

  • BaseRuntimeFeature for the OpenXR plugin.
  • Samples - Sample scene for demoing 6DoF head movement.
  • Samples - Sample scene for how to work with the XR interaction toolkit.