Explosions in my game trigger a series of particle systems to depict flames, heat and dust. I’m finding on my iPad (my iPhone is too old to hold 60fps) that if there are a number of explosions in quick succession the frame rate will drop to around 50 fps (dropping one frame every few) and stay there even after the explosions have stopped until I background the app and bring it back or restart the level which internally involves reloading the scene. I’d expect a temporary frame rate drop perhaps from increased gfx overdraw and cpu/memory load but not a persistent one. It’s not thermal throttling as I can provoke the behaviour early in app execution when the device is cold.
I can reduce the occurrence of the effect by keeping a decaying register of the number of particles that have been generated recently and reducing the number used for new explosions. With some tuning I may be able to eliminate it entirely. But it doesn’t make much sense that the frame rate drop should persist.
I’ve done both shallow and deep profiling under unity and looked at the XCode frame debugger and absolutely nothing extra shows up other than extra time waiting for vsync every few frames.
This combined with the fact that backgrounding the app for a second or two returns the game to 60 fps has me wondering if it’s an iOS or hardware issue. Wondering if anyone has seen something similar or could suggest some other tests I could run?