Particle Emitter performance

I use quite a lot of particles in my game, and I'm getting some performance issues under iOS 9.


Spritekit now has an extra draw call for each Particle Emitter. So if I had 20 particle emitters in the scene, the draw call is increased by 20. This happens if the particles from the different emitters have the exact same texture and z position. This is obviously bad, as these particles should be batch drawn together. It affects performance quite significantly.


iOS 8 worked as it should, not increasing the draw call for each particle emitter with the same texture and zpos.


I've lodged a bug report for it, but has anyone else noticed it?


Dan

Just out of curiosity, have you tried setting the emitters to different z positions to see if that improves performance?

I just tried it, draw count is exactly the same if I use different z positions for the particle emitters (increases by 1 for each PE)

We are seeing the same issue here with each particle requiring a separate draw call.


We still get resonable performance on iPad Air, but when we run on an older device such as iPad 2 frame rate drops 10-20 FPS.


To maintain reasonable performance on older devices, we only enable non-essential particle emitters for Metal devices.


We detect Metal devices with the following:

#define IS_METAL_DEVICE (MTLCreateSystemDefaultDevice())


if (IS_METAL) {
... add non essential particles
}

Hi hareball,


Thanks for posting and reaching out. Do you have a radar number for your bug report?


Cheers

Hi greven,


Yes the bug # is

22871593


Thanks

Good tip, thanks I might use this until it is fixed.


Important to discern though, that it's 1 extra draw call for each particle emitter, not each particle (That's what I've noticed in my testing at least).

Im seeing the same issue still in latest versions. Ive tried searching for the radar bug you listed. Was there every any resolution to this?

Particle Emitter performance
 
 
Q