Skip to content

Commit 291cb69

Browse files
Android XR Unity Extensions v1.3.1
1 parent f2b59f8 commit 291cb69

92 files changed

Lines changed: 9355 additions & 808 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,44 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
88
and this package adheres to
99
[Semantic Versioning](http://semver.org/spec/v2.0.0.html).
1010

11+
## [1.3.1] - 2026-04-29
12+
13+
### Editor version and package compatibility
14+
* Package dependencies updated in this version:
15+
* OpenXR Plugin (`com.unity.xr.openxr`) 1.17.0-pre.2
16+
* AR Foundation (`com.unity.xr.arfoundation`) 6.4.0
17+
* Verified compatible packages:
18+
* Unity OpenXR Android XR (`com.unity.xr.androidxr-openxr`) 1.3.0-pre.1
19+
* AR Foundation (`com.unity.xr.arfoundation`) 6.4.0
20+
21+
### Known issues
22+
* None.
23+
24+
### Added
25+
* Image Tracking:
26+
* New OpenXR Feature **Android XR (Extensions): Image Tracking**, which provides marker tracking via `ARTrackedImageManager`. Including APIs:
27+
* `AndroidXRImageTrackingSubsystem.OnImageTrackingConfigured`: the event indicating when asynchronous image tracking configuration completes.
28+
* `AndroidXRImageTrackingSubsystem.OnImageTrackingLost`: the event raised if image tracking encounters an internal failure.
29+
* Added image reference in **ImageTracking** sample.
30+
* Added `XRUnboundedRefSpaceFeature.IsExtensionEnabled` to indicate if the required extension is available at runtime.
31+
* Expanded **Android XR Streaming** support with DirectX graphics APIs. You can now select Vulkan, Direct3D12, and / or Direct3D11 for Play Mode.
32+
* Trackpad Gestures:
33+
* New additive OpenXR Interaction **Android XR Trackpad Gestures Interaction**, which provides ability to listen for trackpad gesture inputs.
34+
35+
### Changed
36+
* Promoted `XRSystemStateFeature` from experimental to public as `XRRecommendedSettings`.
37+
* Changed `XrInputModality` to be flags, allowing multiple modalities to be combined.
38+
39+
### Deprecated
40+
* None.
41+
42+
### Removed
43+
* Removed feature **Android XR Mouse Interaction Profile**. Please use [Android Mouse Interaction Profile](https://docs.unity3d.com/Packages/com.unity.xr.openxr@1.17/manual/features/androidmouseinteraction.html) from **OpenXR Plugin 1.17.0-pre.2** instead.
44+
45+
### Fixed
46+
* Fixed typo around `IsExtensionEnabled` in `XRPassthroughFeature`, `XRFineEyeFeature`, and `XRUnboundedRefSpaceFeature`.
47+
* Fixed various other typos in comments and code.
48+
1149
## [1.3.0] - 2026-02-19
1250

1351
### Editor version and package compatibility

Editor/Internal/AndroidXRFeatureSet.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,15 @@ namespace Google.XR.Extensions.Editor.Internal
3030
XRSessionFeature.FeatureId,
3131
XRStreamingFeature.FeatureId,
3232
XRObjectTrackingFeature.FeatureId,
33+
XRImageTrackingFeature.FeatureId,
3334
XRMarkerTrackingFeature.FeatureId,
3435
XRQrCodeTrackingFeature.FeatureId,
3536
XRPassthroughFeature.FeatureId,
3637
XRFoveationFeature.FeatureId,
3738
XRUnboundedRefSpaceFeature.FeatureId,
3839
XRBodyTrackingFeature.FeatureId,
3940
XRSceneMeshingFeature.FeatureId,
40-
XRSystemStateFeature.FeatureId,
41+
XRRecommendedSettingsFeature.FeatureId,
4142
XRCubemapLightEstimationFeature.FeatureId,
4243
XRFineEyeFeature.FeatureId,
4344
},
@@ -53,6 +54,7 @@ namespace Google.XR.Extensions.Editor.Internal
5354
// desired to include all XR_ANDROID_* features provided by this package.
5455
DefaultFeatureIds = new string[] {
5556
XRObjectTrackingFeature.FeatureId,
57+
XRImageTrackingFeature.FeatureId,
5658
XRMarkerTrackingFeature.FeatureId,
5759
XRQrCodeTrackingFeature.FeatureId,
5860
XRPassthroughFeature.FeatureId,
@@ -78,13 +80,14 @@ internal class AndroidXRFeatureSet
7880
{
7981
XRFoveationFeature.FeatureId,
8082
XRObjectTrackingFeature.FeatureId,
83+
XRImageTrackingFeature.FeatureId,
8184
XRMarkerTrackingFeature.FeatureId,
8285
XRQrCodeTrackingFeature.FeatureId,
8386
XRPassthroughFeature.FeatureId,
8487
XRUnboundedRefSpaceFeature.FeatureId,
8588
XRBodyTrackingFeature.FeatureId,
8689
XRSceneMeshingFeature.FeatureId,
87-
XRSystemStateFeature.FeatureId,
90+
XRRecommendedSettingsFeature.FeatureId,
8891
XRCubemapLightEstimationFeature.FeatureId,
8992
XRFineEyeFeature.FeatureId,
9093
};

Editor/Internal/AndroidXRMenuItems.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ internal class AndroidXRMenuItems
3333
[MenuItem("GameObject/XR/Composition Layers/Passthrough Layer", false, 20)]
3434
static void CreatePassthroughLayer()
3535
{
36-
// Default to a shpere.
36+
// Default to a sphere.
3737
GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
3838
SceneView lastSceneView = SceneView.lastActiveSceneView;
3939
Vector3 position = lastSceneView == null ? Vector3.zero : lastSceneView.pivot;

Editor/Internal/AndroidXRProjectValidationRules.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ static void AddAndroidXRProjectValidationRules()
4141
{
4242
Category = _category,
4343
Message =
44-
"Android XR reuiqres resizable windows to render pop-ups correctly " +
44+
"Android XR requires resizable windows to render pop-ups correctly " +
4545
"in immersive view, such as system permission requests.",
4646
IsRuleEnabled = AndroidXRBuildUtils.IsAnyAndroidXRFeatureEnabledForAndroid,
4747
CheckPredicate = () => PlayerSettings.Android.resizeableActivity,
@@ -108,7 +108,7 @@ static void AddAndroidXRProjectValidationRules()
108108
{
109109
Category = xrsCategory,
110110
Message = string.Format(
111-
"XR Streaming Runtime is required for runing Android XR in " +
111+
"XR Streaming Runtime is required for running Android XR in " +
112112
"Editor <b>PlayMode</b>."),
113113
IsRuleEnabled = () =>
114114
{

Editor/Internal/OpenXRRuntimeDetector.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public static void SelectXrStreamingRuntime()
7373
var paths = GetXrStreamingRegisteredPaths();
7474
if (paths == null || paths.Length == 0)
7575
{
76-
Debug.LogError("Canot find XR Streaming Runtime.");
76+
Debug.LogError("Cannot find XR Streaming Runtime.");
7777
}
7878
else if (paths.Length > 1)
7979
{

Editor/Internal/XRMarkerDatabaseEditor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ void DrawEntryAt(int index)
113113
var dictionaryProperty = entryProperty.FindPropertyRelative("_dictionary");
114114
var allMarkersProperty = entryProperty.FindPropertyRelative("_allMarkers");
115115
var markerIdProperty = entryProperty.FindPropertyRelative("_markerId");
116-
var edgeProperty = entryProperty.FindPropertyRelative("_physcialEdge");
116+
var edgeProperty = entryProperty.FindPropertyRelative("_physicalEdge");
117117

118118
// Receive remove action.
119119
using (new EditorGUILayout.HorizontalScope())

Editor/Internal/XRSessionFeatureBuildHooks.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -216,11 +216,15 @@ private bool CheckSceneUnderstandingCoarsePermission()
216216
AndroidXRBuildUtils.GetActiveFeature<XRQrCodeTrackingFeature>();
217217
XRMarkerTrackingFeature markerFeature =
218218
AndroidXRBuildUtils.GetActiveFeature<XRMarkerTrackingFeature>();
219+
XRImageTrackingFeature imageFeature =
220+
AndroidXRBuildUtils.GetActiveFeature<XRImageTrackingFeature>();
219221

220222
return
221223
(objectTrackingFeature != null && objectTrackingFeature.enabled) ||
224+
(imageFeature != null && imageFeature.enabled) ||
222225
(qrCodeFeature != null && qrCodeFeature.enabled) ||
223-
(markerFeature != null && markerFeature.enabled);
226+
(markerFeature != null && markerFeature.enabled) ||
227+
false;
224228
}
225229

226230
private bool CheckSceneUnderstandingFinePermission()
@@ -292,9 +296,9 @@ private bool CheckExperimentalPermission()
292296
XRBodyTrackingFeature bodyTracking =
293297
AndroidXRBuildUtils.GetActiveFeature<XRBodyTrackingFeature>();
294298
experimentalPermission |= bodyTracking != null && bodyTracking.enabled;
295-
XRSystemStateFeature systemState =
296-
AndroidXRBuildUtils.GetActiveFeature<XRSystemStateFeature>();
297-
experimentalPermission |= systemState != null && systemState.enabled;
299+
AndroidXRTrackpadGesturesInteraction trackpadGestures =
300+
AndroidXRBuildUtils.GetActiveFeature<AndroidXRTrackpadGesturesInteraction>();
301+
experimentalPermission |= trackpadGestures != null && trackpadGestures.enabled;
298302
return experimentalPermission;
299303
}
300304
}

Editor/Internal/XRSessionFeatureEditor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ public override void OnInspectorGUI()
119119
EditorGUILayout.HelpBox(string.Format(
120120
"Following feature(s) are not supported by {0} which " +
121121
"may not work properly at runtime: {2}.\n" +
122-
"Recommand to select {1} or handle unsupported cases accordingly.",
122+
"Recommend to select {1} or handle unsupported cases accordingly.",
123123
version.GetDisplayOption(), minVersion.GetDisplayOption(),
124124
string.Join(", ", featureNames)), MessageType.Warning);
125125

README.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,18 @@ The Android XR Extensions for Unity provide APIs for the following:
44

55
1. Session Management: required for all Android XR Extensions' features.
66
2. Object Tracking.
7-
3. Marker Tracking.
8-
4. QR Code Tracking.
9-
5. Scene Meshing.
10-
6. Unbounded Reference Space.
11-
7. Passthrough Composition Layer.
12-
8. Mouse Interaction Profile.
7+
3. Image Tracking.
8+
4. Marker Tracking.
9+
5. QR Code Tracking.
10+
6. Scene Meshing.
11+
7. Unbounded Reference Space.
12+
8. Passthrough Composition Layer.
1313
9. Body Tracking *(Experimental)*.
14-
10. System State *(Experimental)*.
14+
10. Recommended Settings.
1515
11. Fine Eye.
1616
12. XR Streaming.
1717
13. Cubemap Light Estimation.
18+
14. Trackpad Gestures Interaction.
1819

1920
## How to use
2021

Resources/CubemapProjector.shader

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,22 @@
1+
// <copyright file="CubemapProjector.shader" company="Google LLC">
2+
//
3+
// Copyright 2025 Google LLC
4+
//
5+
// Licensed under the Apache License, Version 2.0 (the "License");
6+
// you may not use this file except in compliance with the License.
7+
// You may obtain a copy of the License at
8+
//
9+
// http://www.apache.org/licenses/LICENSE-2.0
10+
//
11+
// Unless required by applicable law or agreed to in writing, software
12+
// distributed under the License is distributed on an "AS IS" BASIS,
13+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
// See the License for the specific language governing permissions and
15+
// limitations under the License.
16+
//
17+
// </copyright>
18+
//-----------------------------------------------------------------------
19+
120
Shader "Google XR Extensions/CubemapProjector"
221
{
322
Properties

0 commit comments

Comments
 (0)