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: