I am doing a particle system where particles are Geometries with Mesh which is a point, two-vertex line or somethis as simple. I do this because I want to control every particle object individually. However, with counts of like 3000+ particles, the fps drops to ~30 from 2000+. I have read the forums and there was a similar situation for people here, where various practices like doing shader particles or making them one mesh were proposed. However, I would like to know:
-
Is there any way to increase the framerate, retaining the particles individuality and customizability?
-
What is the bottleneck for this situation? Apparently, there is a trouble of having too many objects, coz a single object, containing the geometry of all these particles does not lag at all.
-
What is the recommended (average bearable) amount of objects in a camera view for a JME3 game? I know that this is vague, but I would appreciate any data on that.
My machine is Intel Core i5 3.2GHz, 4Gb RAM, 32bit, NVidia GeForce GT420, and I have:
a) 2000+ -> 30+ fps with 3000+ made-of-two-geometries particles (6000+ objects), 1 geometry is a line-mesh object, another 1 is an alphed texture quad, attached to a particle Node
b) 2000+ -> 60+ fps with 3000+ made-of-one-geometry particles (3000+ objects), 1 geometry line-mesh, attached to a particle Node
-
If the bottleneck is in the number of objects, then why does increasing objects count in 2 times (case a vs case b) gives only a slight performance hit (60->30) and not as a huge hit as going from 0 to 3000 objects?
-
Is this is a limitation of OpenGL, LWJGL or JME? I mean, will the performance be noticeably better on LWJGL or OpenGL?
below are the pictures of explosions (please discard the white rectangles with circles, they are for reference):