VFX Graph Instancing does not work on Vision Pro

The Visual Effects Graph does not seem to support instancing. To repro:

  • Create a new Fully Immersive App setup for project for Vision Pro (2022.3.20f1 in my case)
  • Add the Visual Effects Package (14.0.10 at the moment)
  • Create a Visual Effect on a GameObject
  • Create a default .vfx file
  • If Allow Instancing is enabled, it the particles flicker or disappears when built to device
  • Disabling Allow Instancing it appears fine (but with an assumed big performance hit)

Building the same project to macOS desktop displays no issues

Here is a simple screenshot of two Visual Effects side by side, referencing the same Asset Template, one with instancing, one without, as a minimal reproduction. Build to device the instancing version shows the issue.

Hi @scatterco

Yes, you’re correct -as documented, we do not support VFX Graph directly in MR Mode. And unfortunately, the lack of direct GPU access makes it unlikely we’ll ever be able to directly support this, absent an architectural change by Apple.

However, do note that you can use VFX Graph to a render texture in MR mode, then display this render texture to the user. Depending on your use case, this may prove sufficient. We’re also exploring a potential feature called “stereo render targets” which we hope will make the render texture path an even more compelling option.

As always, feel free to upvote “Stereo Render Targets” on our public roadmap if it seems useful to you and your team!

–Tim

1 Like

Thanks for the fast response, @timc-unity

To clarify I’m running this example Virtual Reality (Fully Immersive) mode - is it still the case that is not supported?

Thank you!

Ah, I’m sorry, I missed that!

Let me have one of the VR experts chime in, but in the interim, does this work on iOS?

–Tim

@timc-unity i will test on iOS when I’m back at my desk tomorrow.

I can also upload a test project to drive if that’s helpful. I’ll update this post with more info soon. Please let me know if you have more information prior to that

Thanks!

I am seeing similar VFX graph flickering/disappearing issue. In my case, the issue persists after disabling Allow Instancing. I only managed to fix it by changing particle orient in the VFX graph to not facing the camera.

This issue can only be seen on Vision Pro device, VFX graphs work fine in MacOS build or in VisionOS simulator.

1 Like

Hi @timc-unity

Here is a test project

Here is a video that shows the issue.

I tested the same project on iOS and it works fine.

Also, adding to what @KrabbyQ shared. I have another project where disabling instancing did not fix the flickering (the display is Cubes not Quads). Also trying the fix that @KrabbyQ mentions to disable billboarding and set to a fix axis doesn’t seem to make a difference in the example project.

I’m at a loss on how to diagnose since there doesn’t seem to be a consistent repro or work around. Hoping Unity folks can help.

Any updates on this from the Unity folks? Or tips on how to get around this bug at the moment? Can also submit bugs if that’s the correct process for getting it fix.

This is a major blocker to get our project on VisionOS :frowning:

It may work if setting Blend Mode to Opaque and using alpha clipping.But if there exist some objects using my custom shader in the camera view, it’s still flickering.

I managed to fix the flickering by changing the render queue of other transparent objects using my custom shader.Set a number like 3010 or 2990 to force the transparent object to render after or before the vfx particles.It seems that objects using custom shader with same render queue is not sorting automatically in AVP, but it’s fine with the built-in shader like Lit or Shader Graph.@KrabbyQ

1 Like

Not work with multiple transparent objects, my bad.