visionOS Release Notes 1.3.9 and 2.0-pre.11

Highlights for Release 1.3.9

The latest release of Unity’s support for visionOS is now available. This release contains numerous bug fixes, stabilization, and some additional features including:

  • Fixed a RuntimeFailure exception that occurs occasionally when closing a windowed component.
  • Persona feed on visionOS is now accessible via WebCamTexture (requires Unity 2022.3.41f1+).
  • VisionOS Sorting Group, VisionOS Image Based Light Receiver, and VisionOS Grounding Shadow components will now apply to particle systems.

Important Note

To ensure compatibility with other verified packages in Unity 2022.3, Release 1.3.9 has downgraded our support for collections (com.unity.collections) from version 2.1.4 to version 1.2.3+. If you’ve manually specified a collections package version higher than 1.2.3+ in your project manifest, you will need to manually resolve this issue in your project manifest. See Known Issues below for more information.

Highlights for Release 2.0-pre.11

  • Fixed conversion of shader graph derivative nodes to new MaterialX node names in visionOS 2.0 beta 5 and 6 (fixes text rendering).
  • Changed hover behaviour of UGUI Selectables (Button, Dropdown, TMP_Dropdown, InputField, TMP_InputField, Scrollbar, Slider, Toggle) to change colours as they do in Unity.
  • Persona feed on visionOS is now accessible via WebCamTexture after fixing a KeyNotFoundException (requires Unity 6000.0.13f1+).

Guidelines for Pre-release Packages:

While pre-release packages have stable features and APIs, there is ongoing work focused on performance improvements and overall stabilization. As such, users should not be pre-release packages for production. Production projects should use our latest 1.x packages which will continue to receive additional performance improvements and bug fixes.

For more details on the latest changes, please refer to the documentation and detailed release notes below.

PolySpatial 1.3.9 Release Notes

Supported Version and Installation

Supported Versions

  • Unity 2022 LTS 2022.3.19f1 or newer (Apple Silicon version only).
  • Xcode 15.4
  • visionOS 1.1 (21O209) SDK - 1.1 is the minimum version we support. We are not aware of any blocking issues in the 2.0 beta.
  • An Apple Silicon Mac device and the Apple Silicon macOS build of the Unity editor. The Intel version of the Unity editor is not supported.
  • visionOS build support is also available using the Unity editor on Windows to create or update Xcode projects, but an Apple Silicon Mac is still required to build or interact with the project in Xcode.

Installation

  • Please note that your packages will not automatically upgrade to this release unless explicitly requested. This is a bug that will be resolved in a future editor release. You must upgrade manually using one of the following options:
    • Remove and re-add the packages using the package manager.
    • Edit the project manifest directly (Packages/manifest.json) and change the version number for the packages to the exact versions listed at the end of these release notes.
    • Open the project in the Unity Editor and click com.unity3d.kharma:upmpackage/com.unity.polyspatial.visionos@1.3.9
Known Issues

General

  • Upon importing the package samples, some additional scenes now require the XR Interaction Toolkit (XRI) package to work. The XRI package will need to be added manually.
  • Errors logged in editor when upgrading editor version for a project. These should not impact functionality.
  • Some users may encounter errors after upgrading to 1.3.9 due to conflicts with the Collections package. PolySpatial 1.3.9 drops the Collections dependency version from 2.1.4 to 1.2.3. In some projects, other packages that depend on Collections 2.x (including com.unity.polyspatial and com.unity.polyspatial.xr) will retain this Collections version, which cannot be used with PolySpatial 1.3.9. You must resolve this conflict manually by either removing, upgrading, or downgrading these package versions in Packages/manifest.json.
  • Metal mode (previously VR mode) currently exhibits additional lag for pinch/gaze input in visionOS Simulator and Development Builds to device. Please use non-development device builds to test input for Metal-based apps.

Universal RP

  • PolySpatial packages no longer declare a dependency on Universal RP. Users upgrading to the latest PolySpatial package version may have Universal RP removed if the dependency was not declared explicitly. Manually re-add Universal RP if still required.

XR Interaction Toolkit

  • To avoid namespace change errors in XRI, please use XRI 3.0 or newer.

Play to Device

  • Connecting while the device is locked will cause both the current connection and all future connections to fail, as will locking a device (in other words, taking the headset off) while a P2D host app is running.
    • To work around either issue, force quit and restart the P2D host app.
  • Running a Scene with a rotating VolumeCamera also rotates the P2D window, and the rotation transformation persists after stopping PlayMode. This may leave the P2D window facing away from users, resulting in the blank back of the window.
  • If an XR simulation environment is enabled, it will show up in the P2D session when connecting to the P2D app on a VisionOS device or simulation. Note that this XR simulation environment is an editor-only object, and will not appear when the app is built and deployed to a VisionOS device or simulation.
  • Auto-detect devices in the P2D window may be inconsistent and not work if on the same machine you have two different Unity editors with the Play To Device window opened.
  • Some errors are logged when running SampleSceneUnbounded in both editor PlayMode as well as in a P2D session.
  • If you are using Play To Device from a Windows machine you will want to disable PolySpatial XR under Project Settings > XR Plug-in Management. At the moment XR features over P2D on windows will cause runtime exceptions in the editor, we will resolve these in a future release.
  • Physics.PhysX error may get logged in the editor on a Windows environment when the Play to Device host app connection disconnects.
Additional Information

For additional information please visit the General Release Notes, or refer to the package changelog. These release notes apply to the suite of packages released as part of Unity’s support for visionOS:

  • com.unity.polyspatial (1.3.9)
  • com.unity.xr.visionos (1.3.9)
  • com.unity.polyspatial.visionos (1.3.9)
  • com.unity.polyspatial.xr (1.3.9)
  • com.unity.ext.flatsharp (1.3.9)

PolySpatial 2.0 Pre-11 Release Notes

Supported Version and Installation

Supported Versions

  • Please note that this suite of packages are still being refined, and we do not recommend using pre-release packages for production.
  • Unity 6000.0.0f1 or newer (Apple Silicon version only).
  • Xcode 16.0 - Xcode beta 6 version is required.
  • visionOS 2.0 (22N5308B) SDK - We currently require the beta version of visionOS.
  • An Apple Silicon Mac device and the Apple Silicon macOS build of the Unity editor. The Intel version of the Unity editor is not supported.
  • visionOS build support is also available using the Unity editor on Windows to create or update Xcode projects, but an Apple Silicon Mac is still required to build or interact with the project in Xcode.

Installation

  • At this time, you have to manually add the correct package versions to your project if you wish to use Unity’s visionOS support on Unity 6 Preview. This will be corrected in a later version of the editor, but for now you have to do one of the following:
    • For new projects, we recommend manually adding the package com.unity.polyspatial.visionos and the version (2.0.0-pre.11) using the Package Manager UI. If you do not specify the correct version you may end up with an older version of the package that is not compatible with Unity 6 Preview.
    • For existing projects, we recommend editing the project manifest directly (Packages/manifest.json) and change the version number for the packages to the exact versions listed at the end of these release notes to reduce the risk of compilation errors.
    • Open the project in the Unity Editor and click com.unity3d.kharma:upmpackage/com.unity.polyspatial.visionos@2.0.0-pre.11
    • Also verify that the correct version of com.unity.xr.visionos is installed, it should have a matching version of (2.0.0-pre.11), if not, then edit the manifest directly, or force an upgrade by using Install Package By Name… in the Package Manager, specifying the version number.
Known Issues

General

  • Some player builds, especially when Development Build is checked, will encounter an error in Xcode that starts with ARM64 branch out of range. This is caused by IL2CPP code size crossing a certain threshold.
    • To work around, enable IL2CPP Large Exe Workaround under Project Settings > XR Plug-in Management > Apple visionOS.
  • Generated Xcode project built for visionOS (simulator or device) sets the Xcode target to Unity-Framework instead of Unity-VisionOS resulting in apps failing to launch from the resulting project in Xcode.
    • To work around, manually update the Xcode target to Unity-VisionOS.
  • Upon launching sample scenes, users are not prompted to import TMP assets, resulting in no visible text.
    • To work around, manually import TMP essentials via Project Settings → TextMesh Pro menu.
  • Upon importing the package samples, some additional scenes now require the XR Interaction Toolkit (XRI) 3.0 package to work. The XRI package will need to be added manually.
  • After adding the PolySpatial package, you may get an error message about Unity being unable to resolve the Unity Collections package. While we are investigating the cause, simply restarting the editor will get around this issue and allow you to continue.
  • Play to Device will have two separate versions on TestFlight now. One to support the 1.x features, and one to support the 2.x features using the beta version of visionOS.
  • When upgrading a Unity 2022.3 project to Unity 6, you may encounter the following:
    • If you have the PolySpatial samples imported, you’ll run into a number of errors with the VolumeCamera window events. This API has changed and will need to be manually fixed. The best solution is to just delete and re-import the samples.
    • VolumeCamera window events have been consolidated into a singular OnWindowEvent. Whenever the previous window events would’ve been invoked, this event will be invoked instead. OnWindowEvent will supply a WindowState struct with several members, including an enum WindowEvent. This enum can be used to identify why OnWindowEvent was triggered, and to react to the event accordingly.
      • For example, the listener function to react to an opened window would become something like:

void VolCamWindowEvent(VolumeCamera.WindowState state)
{
switch (state.WindowEvent)
{
case VolumeCamera.WindowEvent.Opened:
// Respond to opened window.
break;
}
}

  • There are a number of Unity APIs that are deprecated in Unity 6. You’ll see warnings about those when using code based on Unity 2022.3 samples or templates. While this can be ignored, it would be best to upgrade your API usage in your code.
  • VR development builds on versions of Unity 6 prior to 6000.0.6f1 will crash with the message “Graphics device is null.” You can work around this feature by deleting lines 374-377 and 379 in Classes/UnityAppController.mm in the generated Xcode project so that only [self startUnity: application]; remains at the end of the method. This issue was fixed in version 6000.0.6f1 and should no longer be an issue after upgrading.
  • Actions that reset the AR Session, such as enabling or disabling hand tracking, while the app using Metal rendering can cause the app to crash.
  • VisionOSTemplate Scene SampleSceneUnbounded may be missing text when running over Play to Device.
  • Several warnings and errors observed when using Bake to Texture Particle Mode, affecting sample Scenes such as Balloon Gallery at runtime.
  • Mode switching to VR and sending the app to the background on visionOS causes the app to reopen as an empty volume.
  • Unsupported D3D format error raised in the editor when running on a supported Windows environment.
    • Metal and Hybrid builds crashing with libc++abi error.
    • Workaround: build the app as release instead by unchecking “Development Build” in Build Settings.
  • There is no content when building Metal and Hybrid applications to device.
    • Workaround: ensure that Render Graph is disabled in Project Settings → Graphics.
  • When upgrading a project to the latest PolySpatial 2.x packages, the editor may stop responding with an Application out of memory prompt and require a force quit.
    • Restarting the editor and running Assets → Reimport All should complete the project upgrade to the latest package versions.
  • When doing a clean build and run for the visionOS template project, builds may fail on the first attempt.
    • Retrying the build should resolve the build failures.
  • Character Navigation sample Scene is cut off when resizing the volume to a smaller than default size. Increase the volume size to view all Scene content.
  • PlayToDevice running on Vision Pro may get into a bad state if the headset enters a locked state (for example, if the user takes off the headset). After the user logs back into the headset, PlayToDevice may refuse connections. To fix, please press the Digital Crown and the top left button until the force quit menu appears, and force quit PlayToDevice to reset it.
  • If you notice input lag while connected to PlayToDevice, please try increasing the “Limit Frames Per Second” in the PlayToDevice settings menu. For some internet connections, the default of 45 may end up causing input lag.

Universal RP

  • PolySpatial packages no longer declare a dependency on Universal RP. Users upgrading to the latest PolySpatial package version may have Universal RP removed if the dependency was not declared explicitly. Manually re-add Universal RP if still required.
Additional Information

For additional information please visit the General Release Notes, or refer to the package changelog. These release notes apply to the suite of packages released as part of Unity’s support for visionOS:

  • com.unity.polyspatial (2.0.0-pre.11)
  • com.unity.xr.visionos (2.0.0-pre.11)
  • com.unity.polyspatial.visionos (2.0.0-pre.11)
  • com.unity.polyspatial.xr (2.0.0-pre.11)
  • com.unity.polyspatial.extensions (2.0.0-pre.11)
  • com.unity.ext.flatsharp (1.1.1)
2 Likes

Interesting you chose to pin this global given the usage numbers

I have been attempting to run a build of Polyspatial 2.0 from Xcode but I keep getting these errors:

Undefined symbol: RealityKit.DirectionalLightComponent.init(color: __C.UIColor, intensity: Swift.Float) → RealityKit.DirectionalLightComponent

Undefined symbol: _swift_FORCE_LOAD$_swift_errno

Does anyone have an idea as to what’s causing this? My packages should all be up to date, and im using unity 6000.0.0.f1

1 Like

Is it possible that you’re using an older (non-beta) version of Xcode? That DirectionalLightComponent constructor was added in the beta.

1 Like

1.3.9 breaks addressables, they fail to get built, reverting to 1.3.1 solves the issue

What, specifically, breaks? If possible, it would be great if you could submit a bug report reproducing the issue and let us know the incident number (IN-#####).

1 Like

Can you clarify the usage for this?

I am using visionOS 2. Unity 2022.3.47f1.

The app is using a single VOLUME camera.

Inside this volume I have tried a cube and a plane to render the webcam texture, neither display anything (although I did get the permission ask to use the persona feed).

Is this feature only available in full immersive or VR?

Finally, does Unity have any recommended services to broadcast this feed to other clients (so you can see other players/users and not yourself). I know that Netcode explicitly forbids transfer of video information, but that’s all I have found so far.

Thank you! Very excited to get Personas in my builds!

Apologies, I missed the official documentation stating the scripting define symbol required and the marking texture dirty each frame.

I now wonder if it is possible to remove the artificial background currently (I assume that feature will come later?)

I don’t think that’s really under our control; we just use the output from the AVCaptureDevice.systemPreferredCamera, which happens to be the Persona feed on visionOS. Unless you know of a way to configure that camera to remove the background (that we could add support for), you might want to ask Apple for support for that via their Feedback Assistant.

1 Like

Hi,

Can you confirm that Polyspatial 1.3.9 is fully compatible with the now official VisionOS 2.0 release?

We are on Unity 2022.3.31f

We have recently upgraded from Polyspatial 1.0.3 which was working fine on OS1.1 and 2beta but we are now getting crashed with 1.3.9 on the official 2.0 release:

As we are investigating on our side, it will be great to get confirmation from your end. thanks

I upgraded my game (which is already available on AppStore) PolySpatial 1.3.9 and tested on visionOS 2.0, it works fine! If I have any issue, I will let you know.

1 Like

Yes, it should work. I just tried building with PolySpatial 1.3.9/Unity 2022.3.38f1 with Xcode 16 to visionOS 2.0 on both simulator (22N318) and device (22N320), and they worked as expected.

I can’t tell from your stack trace exactly where the crash happened, but it does remind me of another user who was attempting to use Unity-as-a-Library and whose build process didn’t copy over the shaders file (ComputeShaders.metal) that we attempt to load in PolySpatialRealityKit.init. In your generated Xcode project, it should be under Libraries/com.unity.polyspatial.visionos/ComputeShaders.metal. If that doesn’t help, you can try submitting a bug report with a repro case (and letting us know the incident number: IN-#####) so that we can investigate.

As of ios 18 for visionOS support webxr. Do we require this package to develop webxr on visionOS or it just common webxr ? Are there any feature relate to webxr on visionOS specifically?

Thanks @kapolka, great hint as we are also indeed using the (non-official) unity-as-a-library code path. Will verify and test on our side.

Thanks also @ibrahimpenekli for your confirmation, appreciated !

1 Like

Following up on the topic above, it was indeed the issue (uaal + computeshaders + other swift file file out of sync). Fixed now. thanks for the help !

1 Like

I am having some issues after updating to the pre release packages around swiftUI previews in Xcode. I am using the Polyspatial 2.0 Pre-11 packages with Unity 6 Preview (60000.0.19f1) and Xcode 16 beta 6. My project uses some custom swift UI views following the pattern shown in the polyspatial samples. With previous package versions my previews displayed as expected in the Xcode canvas. After updating to the latest packages my previews just load indefinitely. I have a few warnings but no errors displayed. I can deploy to device and all my views work just fine. My current work around is to use a separate Xcode project just for building out swiftUI views and then adding them to my unity project after the fact, this is time consuming but works. I am looking for ideas on what may be causing this and what I can try. Any help is appreciated!

I wouldn’t know, I don’t use the Apple Vision Pro. I’m guessing you replied to me by mistake.

I was using PolySpatialWindowManagerAccess.entityForIdentifier for accessing entities on Swift side. Unfortunately I cannot use this after upgrading PolySpatial to ‘1.3.9’ to ‘2.0.4’.

Error: “Type ‘PolySpatialWindowManagerAccess’ has no member ‘entityForIdentifier’”

I searched all classes and methods under PolySpatialRealityKit namespace but no luck.
How can I access corresponding entity on Swift?