Indirect Instancing: Is it efficient for particle systems?

Hello everyone,

I’m a developer at a mobile game company, and I’ve been working on optimization solutions recently. I’ve learned and applied some basic optimization techniques and read a few topics about them. Now, I’m looking to develop my skills further by exploring advanced techniques.

A few days ago, I came across Indirect Instancing while browsing Reddit. It seems a bit complex but also very promising. I started thinking about where this method could be applied and realized it might be particularly useful for particle systems, such as rain or snow effects.

If you’ve used this method before, what are your thoughts? Do you think it’s genuinely useful for solving such problems? Also, how efficient is it for mobile devices?

Lastly, I’d appreciate any recommendations for alternative methods similar to this one.

Thank you!

Unity’s particle system already uses instancing and so in terms of rendering it’ll be the same as indirect instancing from C#. But overall Unity’s particle system will be a little faster because it’s using C++ compiled code to manipulate the particles. That’s not to say that you couldn’t get better performance by using another method like a compute shader to move the particles around, which would then take you closer to VFX graph performance but with the similar limitations - no decent physics.

Here’s some examples.

1 Like