I was trying to implement a feature into my game where players can switch between two visions (and therefore some particle systems become invisible and its particles will not collide with the player while others do the reverse).
If only I could make a compromise… I came up with several possibilities:
1.Always render all particles in both visions. When player switched the vision, simply make a particle shader completely transparent. However, this is not a suitable solution since mobile devices will run into a performance issue - If this solution is used, this will result in an estimated amount of average rendered particles in a scene outnumbering 60k in the highest difficulty, and 16k in easy mode.
2.Use Prewarm to simulate particle behavior. But I’m afraid this will bring a large spike to both CPU and GPU profiler. Also, I’m not sure whether Particle Playground 3 is able to reproduce some complex particle event cases.
3.Transform particle systems to different locations when player vision switching is triggered, but that requires local simulation spaces if I want to transform particles as well. And if local spaces are used, what about collision? (since it’s a bullet hell game).
(Actually, I don’t have a proof that offscreen particle motions will be calculated either.)
Ultimately, I want to be able to eliminate negative performance impacts caused by high amount of particles onscreen. Is it possible to hide certain particles (in the best scenario, disable rendering these particles) while still calculating its attributes?