Odd particle system behavior

Hi all.

We are working on adding some particles to our game for visionOS and are seeing some interesting behavior.

We are using the Universal Render Pipeline/particle/unlit shader and while looking at the particle from top down on the sim/device they appear to render properly. Once the camera moves around in the sim and the particles are viewed from the side we are seeing some weird artifacts and black transparency.

Hoping someone has came across this and knows how to fix it.

Pic attached:

Here is the shader/material configuration.

Ill also note, the only way we have gotten particles to work is to use the Bake To Mesh on the PolySpatial settings.

I’m not entirely sure from your screenshot what the artifacts you’re seeing are, but there is an issue with sorting in the Bake to Mesh particles that will be fixed in the next release. Basically, there’s no way to disable depth writes/comparisons for the baked mesh particles, and particles by default aren’t depth-sorted, so closer particles can occlude further ones (despite being transparent). In the upcoming release, we addressed this by using the ModelSortGroupComponent to defer writing the depth until after all the particles have been rendered.

1 Like

Hey there, hope you’ve been well.

We previously managed to find a work around by using the non particle URP/Unlit shader, adjusting the material settings to be Transparent/Alpha in version 0.5.0 and though it didn’t look great it rendered transparency.

However, after updating to version 0.6.2 & trying 0.6.3, we noticed that this workaround is no longer effective. The issue with the particles textures displaying black due to transparency has resurfaced.

We’ve attempted to apply all the available URP particle shaders, both Lit and Unlit, in 0.6.2 and 3 but the problem persists with the textures still rendering black.

Do you have any suggestions or advice on how to resolve this outside of rolling back to 0.5.0?

Some added context: We did roll back to 0.5.0 to see if it was related and confirmed that the upgrade to 0.6.2 and 3 was the cause.

Here is a GIF for reference.
BrokenParticleGIF

Is this still with baked mesh particles? If you submit a bug report and let us know the incident number (IN-#####), we can take a look. Otherwise, it’s hard to know what in your particular setup might be causing this.

We tried to reproduce this in a sample project, but the particle appears correctly there.

particle

We tried to upload our whole main project not just the sample, and after 24+ hours it failed due to a bad gateway error. What can we check in our project on how this is happening, or how can we make sure our settings are the same in the sample project to reproduce it?

If we are relying on the next version of Polyspatial to include the Addressable workaround for material loading, then we’ll need to update to that version, but if that breaks our particles still we’ll be in a bit of a catch 22. Anything you can do to help us zero in on this so we can either work around it or get it properly reported would be great.

Thanks for your help!

Sorry! That’s very frustrating.

@connorbell-u might have some insight into possible failure modes. My first thought is something to do with the texture import settings (format, alpha source). When you transferred the sample to the example project, did you include the .meta files as well? Might also be worth trying to transfer the project settings, though I don’t know which ones in particular might cause this.

To export the particles from our main project into the sample project we right clicked and did Export Package… and imported that into our sample project. I looked through the texture import settings, those all appear to have been brought over.

I noticed we have Spine in our project and that added an AssetPostProcessor (just OnPreprocessTexture) of Spine.Unity.Editor.SpineEditorUtilities. I copied Spine into the sample project so the textures listed the same asset processors as our main project.

I also copied all files from ProjectSettings/ in our main project into the sample project, resolved the dangling GUID pointers brought along.

With those changes, I’m still not seeing the black instead of transparencies seen in the gif above in our main project.

It’s a long shot, but: if you use a PolySpatialSortingGroup with Depth Pass = Pre Pass, transparent objects in the list will render as opaque…

Thanks @mikkel_lbs, but unfortunately we don’t have any use of PolySpatialSortingGroup in our project.

@kapolka or @connorbell-u - any other ideas here?

We updated to 0.7.1 to see if this is resolved there, but the black transparency is still happening on particles. I tried changing the materials Surface Options → Alpha Clipping to true with a couple different thresholds (0.001 and 0.255) thinking maybe that could be it, but same black transparencies on the particles.

Are there any other workarounds or things we should check? If we can’t work around this or figure it out we may need to ship with 0.5.0 packages, but I’d really rather not do that. I’m hoping we can upgrade because there are for sure crashes happening on 0.5.0 that are better on higher versions, and we could remove our addressable hacks.

Sorry; without a repro case, I’m not sure how we can debug this.

I’ve been unable to reproduce this in a sample project, and the bug submission errors out each time I try to upload our main project after 24+ hours of attempting to upload. Can I share a zip of the unity or built Xcode project somehow? Any other way to share with you?

I can try to use the bug submission again later today and see if it works, but if there is another way to share I can do that for you.

Hey Trent, can you please submit a ticket with a link in the description to the uploaded Unity project (google drive, etc), along with any instructions on how to repro. You can do this from an empty project. Then follow up here with the case number. Thanks!

1 Like

Thank you @connorbell-u! That has been uploaded to google drive and attached to the bug report IN-64978.

1 Like

Unfortunately the download has continued to fail for me 3 times around the 97% mark across multiple browsers.

Circling back to the sample repro that was attempted - That would be helpful to have so I could at least test with your assets and attempt to repro. I’d also be curious to see the texture import settings of the main texture map you’re using in the main project. Cheers and thanks!

That is weird it won’t download. I did just notice it is something like 37 GB on Google Drive but the actual zip should be 40, not sure what is going on there. I tried to re-upload it to google, so the new bug report has a new Google link but you might have the same problem.

IN-65060 Is sent from the sample project that has the particles imported. SampleScene has the particles firing. It’s not reproducing the issue, but hopefully points to something useful

Thanks Trent! I’m about halfway done attempting to download. Hopefully this works but if it doesn’t, it’s worth trying to not including the Library/ and Temp/ folders in the zip archive as those will contain lots of unnecessary data that my machine will regenerate upon opening.