Particles aplenty! We want em! We all know that away3d can only render a few hundred objects when rendered individually due to the fact that there is a massive overhead in setting up matrix transforms for each and every particle in a system when calling drawtriangles for them all separately, one at a time. Hence all the "merge" hacks etc.
I have an idea that should allow mega complex particle systems if nearly infinite numbers of polies. One possible solution would be to create a specialized vertex buffer for the entire particle system. For example, create a 10,000 poly "mesh" with vertex buffer data as follows: x1,y1,z1,x2,y2,z2 meaning the motion of the sprite is pre- calculated and stored in the vertex buffer itself. Then send a delta value as a vertex buffer constant register that varies from 0..1 over time and each frame you render the mesh have your AGAL vertex program interpolate the x,y,z position of each vertex from the starting to the ending position. So each vertex smoothly moves from the first to the second position. This is similar to how md2 and md5 "bones" animations are being done. With this technique, all particle system animation would be handled on the GPU with virtually no rendering overhead for animation of gigantic particle systems. Why? The entire thing is rendered in ONE draw call. Essentially you are "precalculating" the entire animation for your explosions, etc. No worrying about each and every sprite in an explosion, you just draw the whole group at once and get the GPU to do all the heavy lifting. Let me know what you think of this idea. I'm planning to dive in and implement it next week. I'll be sure to share my results in 7-10 days. Words of encouragement or naysayers are warmly welcomed. I want to know what you think.
