visionOS Beta Release Notes (0.4.1)

We have published a new release (0.4.1) that brings compatibility to Xcode 15.1 beta 1 and visionOS beta 4 (21N5259k) SDK. When upgrading to this release, there are two significant upgrade tasks you must do:

  • After updating to this version, you will need to restart the editor to clear out compilation errors related to upgrading the Unity Collections package.
  • You will need to re-configure “Mixed Reality” mode in Project Settings > XR > visionOS Loader settings.

With this release on visionOS, transitioning between volumetric windows of different sizes and between a volumetric window and an immersive space is now supported.

  • A Volume Camera Configuration asset (created via ‘Create’->‘PolySpatial’->‘Volume Camera Configuration’, and placed in a Resources folder) is needed to define an output window or immersive space, and a configuration can be assigned to each volume camera.
  • These configurations can be changed dynamically at runtime. A default configuration is specified in Project Settings > PolySpatial.
  • Only one volume camera can be active at a time (meaning an application can have only one window or immersive space).
  • Please refer to the “Volume Camera” documentation in the com.unity.polyspatial.visionos package for more information.

For those who are testing on devices at Apple’s developer labs or via a developer kit, you should only be using the following updated configuration.

  • Apple Silicon Mac for development
  • Unity 2022 LTS (2022.3.9f1 and above)
  • Xcode 15.1 beta 1
    • The Xcode 15 Release Candidate will not work
  • visionOS beta 4 (21N5259k) - SDK

To learn more about Unity’s visionOS beta program, please refer to this post. The following release notes apply to the suite of packages released as part of Unity’s visionOS beta program:

  • com.unity.polyspatial (0.4.1)
  • com.unity.xr.visionos (0.4.1)
  • com.unity.polyspatial.visionos (0.4.1)
  • com.unity.polyspatial.xr (0.4.1)

A new compatible version (0.4.1) of the template is also available here.

PolySpatial Version Support Summary

PolySpatial package versions Unity Version Xcode Version Device seed version
0.1.0 2022.3.5f1 15 beta 2 1
0.1.2 2022.3.5f1 15 beta 2 1
0.2.2 2022.3.5f1 15 beta 5 2 21N5207g
0.3.2 2022.3.9f1 15 beta 8 3 21N5233f
0.3.3 2022.3.9f1 15 beta 8 3 21N5233f
0.4.1 2022.3.9f1 and above 15.1 beta 4 21N5259k

Known Issues

  • Content does not appear when the Splash screen is enabled. Disable the Splash screen in Player Settings > Splash Image.
  • The Tutorial that was part of the previous template is not compatible with 0.4.1. Please remove the Tutorial folder under Assets if it comes from a template earlier than 0.4.1.
  • When moving to 2022.3.11f1 editor, you will need to specify whether you are targeting the simulator or device SDK, found in Project Settings > Player Settings > Other. With Unity versions earlier than 11f1, the Target SDK must remain “Device”. In a future release, we will remove the need to choose, and a single project will work with both.
  • When loading a new scene, the scene may open in a different location than where the current scene is. This is a byproduct of the new volume camera support and will be resolved in a future release.
  • You may get a fatal exception when trying to exit the Object Manipulation scene. This will be resolved in a future release.
  • Occasionally, the app builds occasionally show up very dark when doing subsequent builds (replace and append).
4 Likes

Still no Intel support for development ? :slight_smile:

I opened the newest template and I’m not seeing where this is. In “Project Settings” I’m only seeing “XR Plug-in Management”. Am I in the complete wrong place?

2 Likes

The option to disable splash screen is greyed out in 2022.3.11f1.

2 Likes

Occasionally, the app builds occasionally show up very dark when doing subsequent builds (replace and append).

Can you provide some more context on what is happening here, and what needs to be cleaned/rebuilt to fix it? I’m seeing it on every build (including new builds into empty folder).

Edit: Issue is occurring 100% for me in simulator, but looks fine in device.

Maybe it is Project > XR > Settings > VisionOSSettings.asset.
I had to change the App Mode setting to Mixed Reality.

Hi, I’m trying to run PolySpartial Samples on the device, I changed target to device in Project Settings, but I’m getting this error when I try to run on device:

dyld[818]: Symbol not found: _$s10RealityKit13UnlitMaterialV0A10FoundationE23applyPostProcessToneMapACSb_tcfC
Referenced from: <37DEB655-F50A-3221-ABD7-D6F6056A7ABC> /private/var/containers/Bundle/Application/9849152B-3D0B-42C2-B4AF-76EADD66B14C/Quantum Project Template.app/Quantum Project Template
Expected in: <467E9060-14A4-3F94-AAD0-71B7F071177B> /System/Library/Frameworks/RealityFoundation.framework/RealityFoundation

Do you know what im doing wrong?

@jarodockalova In the Polyspatial documentation (0.4.1) its written 2022.3.11f1 is required

Unity PolySpatial and its support for visionOS require Unity 2022.3.11f1 .>
[visionOS PolySpatial Requirements & Limitations | PolySpatial visionOS | 0.4.1 (unity3d.com)]

(visionOS PolySpatial Requirements & Limitations | PolySpatial visionOS | 0.4.3)

What is correct now? in your blog post 2022.3.9f1 can be used however the documentation says sth else.

1 Like

I have successfully built the project after looking at the posts in this thread. However, the loading screen in the simulator turns gray, and it doesn’t proceed to the next scene. There were no fatal errors during the build and while running the simulator.
Is this a bug? Or is there a setting that I might have forgotten?

Oh, awesome. Thank you!

That’s correct, and it’s looking like Mac with Apple silicon will continue to be required for visionOS development. Check out the Xcode 15.1 beta release notes which states “Developing for visionOS requires a Mac with Apple silicon.”

It sounds like you aren’t using the latest Xcode beta/visionOS release. If you’re using PolySpatial 0.4.1, you should be using Xcode 15.1 beta and visionOS beta 4 (21N5259k).

I used Unity 2022.3.11 and XCode beta 15.1, but for now I downgraded packages and Xcode to previous one and everything works, maybe I will try to upgrade again

When I load the 0.4.1 template project and only change App Mode to Fully Immersive Space, I get this error in Xcode:

New input system (experimental) initialized
[AssetManager] Could not find shader Universal Render Pipeline/Unlit.
dyld[77793]: missing symbol called

My goal is to understand how to set up a fully immersive scene’s camera. When I create a new project in an attempt to do this, I can run the scene in simulator but I can’t figure out how to attach the camera’s movement to simulated device movements.

Update: I get the shader error only with PolySpatial turned on.

Using Xcode 15.1 Beta 1, Unity 2022.3.11

1 Like

The VisionOS SDK that is installed with Xcode 15.1 beta 1 is 21N5259j, not 21N5259k. Which means I can build for the simulator/device but Xcode is telling me I have no eligible devices/simulators

From my observations, on 2022.3.9 build for simulator SDK will fail now, 2022.3.11 builds ok. The Same applies to sample project 0.41.

Ok, I found out that I’m using correct xcode and unity version. I think my device has the wrong version, but I don’t see an option to update it, maybe you know how to deal with it?

I have issues getting anything to display on device with 0.4.1. I get warnings after loading the initial scene, and the app minimizes to the desktop view, but remains running in the background, without anything displayed.

These are the warnings I get. I’m unable to find anything about this in the documentation.

ObjectDispatcher hasn't collected changes for type GameObject for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type VolumeCamera for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type PolySpatialHoverEffect for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type Button for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type Dropdown for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type InputField for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type Scrollbar for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type Slider for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type Toggle for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type SkinnedMeshRenderer for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type Light for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type BoxCollider for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type SphereCollider for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type CapsuleCollider for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type MeshCollider for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type Image for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type RawImage for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type Text for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type TextMeshProUGUI for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type ParticleSystem for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type MeshRenderer for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type MeshFilter for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type SpriteMask for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type PolySpatialVideoComponent for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type SpriteRenderer for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.
ObjectDispatcher hasn't collected changes for type PolySpatialSortingGroup for more than 64 frames. The Type tracking will be disabled. Use 'maxDispatchHistoryFramesCount' to increase maximum number of frames of the dispatch history.This might also happen if you forgot to dispose ObjectDispatcher or forgot to disable the Type tracking.

After loading is done, a continuous stream of these show up in the log:

Type tracking is not enabled in the ObjectDispatcher.
UnityEngine.ObjectDispatcher:DispatchTypeChangesAndClear(IntPtr, Type, Action`6, Boolean, Boolean, Action`1)
UnityEngine.ObjectDispatcher:DispatchTypeChangesAndClear(Type, Action`1, Boolean, Boolean)
Unity.PolySpatial.Internals.ObjectDispatcherProxy:DispatchTypeChangesAndClear(Type, Action`1)
Unity.PolySpatial.Internals.UnityObjectTrackerBase:FetchDirtyOneTypeIntoLists(Type)
Unity.PolySpatial.Internals.UnityObjectTracker`3:TrackObjectChanges(LayerMask)
Unity.PolySpatial.Internals.PolySpatialUnityTracker:IsTrackedGameObjectInstanceID(Int32)
Unity.PolySpatial.Internals.PolySpatialUnityTracker:TrackObjectChanges(LayerMask)
Unity.PolySpatial.Internals.PolySpatialUnitySimulation:Update()
Unity.PolySpatial.Internals.PolySpatialCore:PolySpatialAfterLateUpdate()
UnityEngine.LowLevel.UpdateFunction:Invoke()

[./Runtime/Misc/ObjectDispatcher.cpp line 1869253928]

Any pointers to what can fix this? The template project runs without issues on device.

1 Like

You should be able to update in the device. From the home page, Settings, General, Software Updates, then there are some settings you can choose there. I would leave future new updates on “download only” since with this last one, it broke the connection with Unity.