In this lesson, you will learn how to reduce draw calls and memory overhead by applying strategic batching techniques to your Shuriken Particle Systems.
When targeting mobile hardware, the primary performance bottleneck for particles is the draw call count, which is exacerbated by frequent state changes. Because each ParticleSystem usually renders with its own material and unique settings, Unity often cannot combine them into a single draw call.
The Strategy of Material Consolidation
The most effective way to optimize is to consolidate your materials. If you have five different effects using five different materials, the GPU must switch states between every draw. By packing your textures into a single Sprite Atlas and using a shared, lightweight particle shader, you enable Unity’s dynamic batching.
Ensure that your Renderer module settings are synchronized across your systems. If multiple particle systems share the exact same Material and RenderMode, Unity is significantly more likely to batch these into a single draw call, drastically reducing the burden on the mobile CPU.
Managing Vertex Streams
As you learned in our previous lesson on Custom Vertex Streams, unnecessary data increases the bandwidth cost per particle. For mobile, navigate to the Renderer module and enable Custom Vertex Streams. Ensure you are only sending the bare minimum data required for the shader. For example, if your effect doesn't use rotation, strip the Rotation stream:
// Example of optimizing stream data to reduce memory bandwidth
// Keep only what the shader absolutely requires
// Position, Color, UV, Size, Rotation, etc.
Eliminating Overdraw
Mobile GPUs struggle heavily with "overdraw"—the act of drawing pixels multiple times due to overlapping transparent particles. To mitigate this, keep your Max Particles count low and prefer additive blending over alpha blending when possible. If you must use alpha blending, reduce the scale of your particles to minimize the footprint of transparent fragments, which saves precious fill rate on mobile chipsets.
Key Takeaway: Consolidate your materials and minimize vertex data streams to ensure that multiple particle systems are processed in as few draw calls as possible, keeping your mobile frame rate consistent.