visionOS Beta Release Notes (0.4.1)

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.

I’m also getting the same/similar errors in the simulator, I don’t have a device to test on though.

Any ideas what’s causing this?

Edit: Something I imported enabled the splash screen. Disabling this fixed it.

Do you know if we stick with RC3 for firmware with 0.4.1 ?

The most likely cause of the option being grayed out, is an issue with your license (Unity Plan). Could you please confirm which license version you have?

If this is a bug, it will be on the Editor side. But, let’s confirm your license first.

Hello, have you tried to disable the splash screen?

Disable the Splash screen in Player Settings > Splash Image.

Hey there, make sure you have a professional license and disable the splash screen. that should fix your issues

I just signed up for the professional trial, the option is now selectable and I’m able to get the demo scene working! Will we need Unity Professional to continue developing for visionOS?

I observed this issue with minimal test projects – I believe there is a race condition on startup. I worked around the issue by setting a breakpoint in UnitySwiftUIiPhoneApp.onWindowAdded, and waiting a couple of seconds before continuing when the breakpoint is hit.

1 Like

It looks like Unity is recommending visionOS beta 4 (21N5259k) for 0.4.1. Is that what you were asking?

Thanks Alex! This seems to be the case.

@jarodockalova @jmunozarUTech license is good and splash screen is disabled

Adding “sleep(4)” to requestDismissWindow also “works” for me. It looks like it closes the current window, before opening the next one. It seems to happen everytime a new scene is loaded?

We have a permanently loaded scene with all main logic, and then load individual scenes/levels additively, and unload them when they are no longer needed. This is a fairly standard setup, I have used in many commercial titles, but the changes to the VolumeCamera seems to conflict with this approach. To be clear we keep the VolumeCamera in the permanently loaded scene, so I don’t see any reason for closing/reopening windows.

In addition the volume moves around everytime the window is reopened.

It would be great if these issues could be fixed quickly! I’m happy to provide a simple example project that demonstrates the issue, which can be used as a test case for releases.

In Bounded mode it seems the dimensions are halved compared to 0.3.3 and previous versions.

I have been working with Dimensions = 50,50,50 and Output Dimensions = 1,1,1 so far, but in 0.4.1 this means half the scene is not displayed. Setting Dimensions = 100,100,100 and Output Dimensions = 2,2,2 seems to match previous versions. Does that make sense?

In 0.3.3 the following ShaderGraph produced the correct World Position, this seems to no longer be the case:


What is the correct graph for getting the World Position?

I’m aware that the visionOS beta 4 SDK is installed through XCode, but I was wondering about updating the device firmware to RC4. I’m not sure a clean firmware downgrade path exists so I want to be sure.

That would be really helpful!, could you create a bug with a sample project (as you mentioned) and a link to this thread explaining what is the issue?

That graph should be correct. I tried to reproduce your error, but everything worked for me in 0.4.1. I made a volume camera with dimensions (50, 50, 50) and output dimensions of (1, 1, 1) and placed a cube of scale 25 in it with a modified version of that shader graph that divides the output of PolySpatial Volume to World by 25 (to match the cube’s scale). The result looks correct to me:


If your results differ, I suggest submitting a bug report.