📌 Official Support for visionOS - Release Notes 1.2 and 2.0-pre

Changes for Release 1.2

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

  • Support for procedural skinned meshes.
  • Minor enhancements to Play to Device, including a stream loading screen.
  • Additional package samples for ARKit Mesh, occlusion based portal effect, uGUI and a new Object Manipulation scene with Unity’s XR Interaction Toolkit (XRI).

Looking Ahead

With Unity 6 right around the corner, Unity’s support for visionOS is now also available on Unity 6 Preview via our 2.0 pre-release packages. Our first 2.0 pre-release contains the same features as the 1.2 release, but developers can expect additional new features to be available on the 2.0 pre-release in the coming weeks.

Since our release at the start of the year, we’ve made significant progress on many features that have been actively voted for across our roadmap. Holistically, our ongoing efforts can be broken down into three main areas:

  • Performance and stability: Bug fixes, performance optimizations, play to device enhancements and additional samples to reinforce developer confidence across the toolchain, from working in the Unity editor and Xcode to optimizing on device.

  • Unlocking greater immersion: Multi-volume support, stereo render targets and mode switching capabilities to help creators innovate with new types of immersive experiences.

  • Enabling visual diversity: Improved support for shaders, bake to texture support for particles, support for blendshapes and entities graphics to enable the creation of spatial experiences across a wide visual spectrum.

These powerful features will soon be available alongside Unity 6 Preview, where developers can take advantage of them in tandem with the improvements and features that come along with the latest version of the Unity editor. We’ll share more about these features in our upcoming releases.

While we’re excited for you to check out these new features in our upcoming releases, please note that we’re still working through various phases of refinement and we do not recommend using pre-release packages for production.

For more details, please check out the release notes for the 1.2 and 2.0 pre-release packages below.

General 1.2 Release Notes

Supported Versions and Installation

Supported Versions

  • Unity 2022 LTS 2022.3.19f1 or newer (Apple Silicon version only).
  • Xcode 15.3 - Xcode beta versions are not currently supported.
  • visionOS 1.1 (21O209) SDK - We currently do not support beta versions 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.
  • On Unity 2022.3.26f1 or newer, 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.
Major Features & Fixes

General Highlights

  • VolumeCamera event API has been changed - obsolete events OnWindowOpened, OnWindowClosed, OnWindowFocused, and OnWindowResized have been removed in favor of a singular OnWindowEvent that provides the same functionality.
  • We’ve fixed an issue where audio was available in the Unity editor but not playing on the device.

Mixed Reality (Immersive) Mode

  • Material property improvements:
    • Added support for MaterialPropertyBlocks.
    • Added support for animated material properties.
  • Additional shader graph node support:
    • Added support for Simple Noise, Parallax Mapping, Fog, and View Vector nodes.
    • Fixed support for Object, Voronoi Noise, Rotate About Axis, and View Direction nodes.

We’ve made a wide range of additional fixes and performance improvements. For an exhaustive list, please refer to the changelogs and package documentation below.

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.

Play to Device

  • Pausing Play Mode during a Play to Device (P2D) session disrupts active connections.
  • Connecting while the device is locked will cause both the current connection and all future connections to fail, as will locking a device while a P2D host app is running.
    • To work around either issue, force quit and restart the P2D host app.
  • Setting ‘Connect on Play’ to ‘Enabled’ in the editor P2D window with no Available Connections selected may still connect to a connection entry if the P2D host app is running.
    • To work around, set ‘Connect on Play’ to ‘Disabled’ to disable connections.
  • 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.
  • When your scene has an unbounded volume camera, after stopping PlayMode in the editor, the P2D app will appear in an unbounded volume and can no longer be moved around.
    • You can workaround this by connecting any scene to P2D, or by force-quitting and restarting.
  • 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.
Additional Information

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

General 2.0 Pre-release Notes

Supported Versions 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 15.3 - Xcode beta versions are not currently supported.
  • visionOS 1.1 (21O209) SDK - We currently do not support beta versions 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.3) 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.
Major Features and Fixes

This release of 2.0.0-pre.3 for Unity 6 is feature aligned with 1.2.3. Please reference the package changelog for more information.

Known Issues

General

  • 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) 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.
  • 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 Unity 6 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.

Play to Device

  • Play to Device is currently only available for the visionOS simulator. We are looking at how to get a 2.0.0 version of the application on TestFlight in a way that will not block users of 2022.3 from using the right version as well.
Additional Information

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

6 Likes

PolySpatial package sample updates

You’ll notice some new samples in the PolySpatial package noted in the release notes. I also wanted to talk about some changes in the scenes we’ve shipped in the past.

Spatial UI scene has been replaced with a uGUI scene. The spatial UI scene and code is still shipped but it’s been replaced in the project launcher. Our support for uGUI is much more robust now and this sample shows off how to interact with UI components including text fields (to pull up the OS keyboard), buttons and more.

Object Manipulation scene has been replaced with a version that uses the XR Interaction toolkit. As noted in the release notes you’ll need to install the XRI package in order for this scene to work properly.

For the XR Interaction toolkit we’re expanding our support on visionOS. The next release for XRI (3.0.2) will include a package sample for visionOS. It more closely integrates with existing XRI behavior including the Near-far and XR Poke Interactors.

4 Likes

Hi, after upgrading to 1.2.3 from 1.1.6 for an existing project(by reimporting all plugins). There’s an error in console.

A new PolySpatialSettings asset was initialized when its asset already exists. Was PolySpatialSettings.instance used by an asset importer?
UnityEngine.Debug:LogError (object)
Unity.PolySpatial.PolySpatialSettings/<>c:b__104_0 () (at ./Library/PackageCache/com.unity.polyspatial@1.2.3/Runtime/Public/PolySpatialSettingsForEditor.cs:78)
UnityEditor.EditorApplication:Internal_CallDelayFunctions () (at /Users/bokken/build/output/unity/unity/Editor/Mono/EditorApplication.cs:396)

Seems like it’s an old bug that was once fixed in 1.0.3 according to https://docs.unity3d.com/Packages/com.unity.polyspatial@1.0/changelog/CHANGELOG.html

Also, the VolumeCamera component is missing after upgrading. I can’t edit the component as before. Only (Script) appears as title of the component on Inspector. And when I double click on the component, it can open Packages/PolySpatial/Runtime/Public/VolumeCamera.cs. When I run the scene, the warning appears: “The referenced script (Unknown) on this Behaviour is missing!”.
Though I can play the scene on editor without a problem. (Not tested on device yet.)
If I create a new project and import PolySpatial plugins, this won’t happen. The VolumeCamera component works as normal.

I re-upgraded from 1.1.6 by editing the project manifest, and both issues did not occur. :smiley:

A new PolySpatialSettings asset was initialized when its asset already exists. Was PolySpatialSettings.instance used by an asset importer?
UnityEngine.Debug:LogError (object)
Unity.PolySpatial.PolySpatialSettings/<>c:b__104_0 () (at ./Library/PackageCache/com.unity.polyspatial@1.2.3/Runtime/Public/PolySpatialSettingsForEditor.cs:78)
UnityEditor.EditorApplication:Internal_CallDelayFunctions () (at /Users/bokken/build/output/unity/unity/Editor/Mono/EditorApplication.cs:396)

You can delete the old PolySpatialSettings.asset where under Assets/Resources folder and reimport all (Maybe just need reimport com.unity.polyspatial@1.2.3 package) :smiley:

Xcode build fails after upgrading to v1.2.3

ld: warning: Could not find or use auto-linked framework 'CoreAudioTypes': framework 'CoreAudioTypes' not found
Undefined symbols for architecture arm64:
  "_main", referenced from:
      <initial-undefines>
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Hi.

I tried to build samples on Unity6 with polyspatial 2.0-pre.
When building samples in Unity6, it took about 1.5 hours to complete. However, with Unity2022.3.20f1 and polyspatial 1.1.6, the build was completed in just a few minutes. The issue stems from the combinatorial explosion of shader variants caused by ShaderGraph and URP combinations, even though there are no custom shaders involved, only built-in ones. Is there any way to mitigate the increase in build time due to this combinatorial explosion of shader variants? (It would be greatly appreciated if development could be done within a build time similar to Unity2022.3…)

I did delete the file and try reimporting plugins but the error was still there after reopening the project. However, re-upgrading from a backup with 1.1.6 by editing manifest.json solved it. :tada:

@IsaacsUnity will the PolySpatial SDK continue to be updated for the 2022 LTS or is the expectation that teams working on visionOS upgrade to Unity 6 for the latest and greatest version of PolySpatial?

A few of the team ran into this and found that canceling the build (if it’s excessively long) and restarting it should reduce build times back to expected times. We’re tracking down the issue to see what might be causing it.

@DanMillerU3D

Thank you for checking the issue.
At least, I confirmed number of shader variants of two shaders are extremely increased.(2.3k →190k)

  1. Assets/Samples/XR Interaction Toolkit/3.0.3/Starter Assets/Shaders/Interactable.shadergraph
  2. Packages/com.unity.polyspatial/Resources/Shaders/LitBakedMeshParticles.shadergraph

We will continue to provide bug fixes and stability improvements to the 1.x series of packages, but we anticipate new features being available only on the 2.x series of packages moving forward.

Please note that our 2.x series of packages are currently still in pre-release, so we do not recommend using them in production.

1 Like

So that means new PolySpatial features will only be supported on Unity 6?

Yes, that’s correct. Generally, we are planning for the new features highlighted above to be used in tandem with the latest editor experience, starting with Unity 6 Preview and then Unity 6 when it becomes available later in the year.

Dat means if the blendshap support is launch, we can use it only on Unity 6, right?

I am curious which webcam is being used for Added support for WebCamTexture to PSL. - has camera api been exposed on vision pro?!

I believe the idea is that the webcam returns a feed of your Persona.

We are testing visionOSTemplate-2.0.0-pre.3 on two computers using unity6 and we are experiencing the same problem, we have changed the StrippingLevel but the error still occurs, we are not experiencing a similar problem with unity2022, is there anything we can do?
截屏2024-05-11 01.13.12

2 Likes

Did you try enabling the “IL2CPP Large Exe Workaround” option in Project Settings → XR Plug-in Management → Apple visionOS? That’s the specific error that that workaround was added to resolve.

1 Like