[ URP ] Particle Systems don't have GPU Instancing option

Is there a way to enable GPU instancing for particles?

The manual shows the option here, but it only works if using a Mesh… If we’re using Billboard, there is no such option. Why is that? :face_with_spiral_eyes:

7832598--992199--upload_2022-1-22_21-48-40.png

7832598--992202--upload_2022-1-22_21-48-48.png

1 Like

You can use the default quad mesh to get most of the same functionality, plus instancing.

Thanks for the response @bgolus , I just gotta wonder if there are performance hits if quad meshes are used for particles? I’ve got a lot of particle systems… Guess the only way is to test it out … but seems odd that Unity doesn’t have GPU instance option for their URP particle materials…

Instancing is great on certain platforms / GPUs when you want to render a huge number of particles. Like tens of thousands of them. Under that it usually won’t be a performance improvement, and can be worse for performance. Not a lot worse, but worse.

The SRPs have both generally been avoiding instancing in favor of the SRP Batcher, but that doesn’t help with the default particle system. Though the VFX graph is 100% GPU instancing at all times.

We still have to prepare per-instance data on the CPU even when using billboards. We found that billboards have so few verts that there wasn’t really any perf benefit (at least not enough to justify investing the effort in it) as bgolus says, you can use a quad mesh to do the exact same thing too. You could profile this and see if it’s a big win for you or not.

1 Like