ARDK 0.9.0 Release Notes 2021-06-24

What’s New

  • [Contextual Awareness] Expand semantic classes supported to sky, ground, artificial ground, water, buildings, foliage

  • [Contextual Awareness] Device support verification now relies on a chipset-based allow-list

  • [Developer Platform] New look to the documentation

  • [Developer Platform][Playgrounds] As of ARDK 0.9.0, the Playgrounds app is no longer supported. We will be introducing a whole new sample app (iOS only) shortly after this release–stay tuned.

    • If you have previously downloaded it feel free to update and continue to use, but expect no further updates from the ARDK team.

Known Issues

  • [Basic AR] Disposing an ARSession after adding an image anchor causes crash

  • [Basic AR] Image anchors detected on Android devices will initially return a position of (0, 0, 0)

  • [Basic AR] Image anchors detected on Android devices are updated each frame without a change to the underlying data

  • [Multiplayer] Physics not simulating for unowned network objects

  • [Contextual Awareness] Depth not correctly enabling when ARDepthManager is enabled after the ARSession has Ran

  • [Developer Tools] MockARNetworking pose and state logic doesn’t exactly match native (will go directly from waitingForLocalization to stable)

  • [Developer Tools] ARDKGlobalVersion.getARBEVersion returns Editor even when using live device networking in the Unity Editor

  • [Developer Platform] The Redmi Note 9 Pro device is currently unusable

  • [Developer Platform] Android Manifest may fail to merge in Unity if Android target API is set higher than 29. The solution is to use a newer version of gradle to build, see the Android section in the System Requirements page

  • [Developer Platform][Examples] In the LowLevelNetworking scene, sent messages are not displayed on the sender’s device

  • [Developer Platform][Examples] In the LowLevelNetworking scene, server errors are not completely handled which could lead to some irrecoverable states

  • [Developer Platform][Examples] ContextualAwareness-based examples crashing when closed repeatedly on LIDAR devices

  • [Developer Platform][Examples] In the Gameboard scene, two disabled buttons labeled “Place” appear instead of one

  • [Developer Platform][RecordingExamples] In the Capture scene, the camera view appears without use of Init and Run buttons.


  • [Contextual Awareness] Depth and Occlusion quality improvements

  • [Contextual Awareness] Meshing performance and memory improvements

  • [Developer Tools] Server version information now available for debugging

  • [Developer Platform] Authentication instructions updated to more accurately reflect workflow.

  • [Developer Platform] Standardization and cleanup of ARDK Example scenes

Bug Fixes

  • [Multiplayer] Fix for endless authentication requests when invalid API key is used

  • [Multiplayer] NetworkedUnityObjects are now assigned PrefabIDs when the prefab is serialized, if unset. Prefab RawIDs are now also protected against changes from instances when user selects to “Apply All” changes to prefab

  • [Multiplayer] Correctly throws exception when either an empty or null byte array is passed in to the IMultipeerNetworking.Join(byte[] metadata) method

  • [Developer Platform] Playground Rings scene no longer fails to reload after returning to the scene select menu

Breaking Changes

  • [Basic AR] IARFrame.CalculateDisplayTransform changed to return a matrix able to be directly multiplied to UVs with an invert step

  • [Developer Tools] MockCameraInputsContainer component or second Unity camera is no longer needed to run mock ARSessions.

  • [Contextual Awareness] IArdkFileDownloader and related APIs renamed to IFeaturePreloader and related. New FeaturePreloadManager component can be used for extra helper functionality around the IFeaturePreloader API

  • [Contextual Awareness] Depth and semantics related methods moved into IARWorldTrackingConfiguration, since they are currently only available with the IARWorldTrackingConfiguration (back camera) anyway

  • [Developer Platform] Renamed the Niantic.ARDK.Helpers namespace to Niantic.ARDK.Extensions

Upgrade Guide


Previously, the layout of the matrix returned by IARFrame.CalculateDisplayTransform forced it to be used as an array. The layout was fixed so it is now possible to use directly as a matrix. Any custom shaders using this matrix needs to be updated.

Old alignment:

| a  b  0  tx |
| c  d  0  ty |
| 0  0  1  0  |
| 0  0  0  1  |

New alignment (changes highlighted):

|   a    **c**  0  tx |
| **b**    d    0  ty |
|   0      0    1  0  |
|   0      0    0  1  |

E.g. what used to be:

o.texcoord.x = (_textureTransform[0][0] * vertex.texcoord.x) +
                        (_textureTransform[1][0] * vertex.texcoord.y) +
o.texcoord.y = (_textureTransform[0][1] * vertex.texcoord.x) +
                        (_textureTransform[1][1] * vertex.texcoord.y) +

Should now simply be:

o.texcoord = mul(_textureTransform, float4(vertex.texcoord, 0.0f, 1.0f)).xy;

Virtual Studio

The second Unity camera and a MockCameraInputsContainer component is no longer needed to run mock ARSessions, so they can be removed from any mock AR scenes/setups. Mock camera controls are now available through the ARDK > Virtual Studio menu.


The IArdkFileDownloader and related APIs were renamed to IFeaturePreloader and related. The implementation of the IArdkFileDownloader remains unchanged.

Released: June 24, 2021