GPU Particles programming


I want to write a GPU particles module for n-body problem simulation. Basically, I want each particle to “pull” every other particle to itself.


I want to use a shader for gpgpu calculations. In particular I want a ‘texture’, storing in its ‘pixels’ the coordinates of each particle. I suggest the current implementation of particle system is somewhat similar to this (isn’t it?). So, for start, for each particle I would iterate through this ‘texture’ and ‘apply’ forces. O(n^2), oh well.


It seems I can’t find the implementation of existing particle modules in the engine source, for example the source of “PointGravity” module. I’ve found a large .cpp file with couple of methods implemented, but no hlsl\usf files. Documentation lacks information about GPU particle system implementation, only the usage.


Please, someone, point me to the sources of the “PointGravity”, where are the calculations? I need to understand how to make the “PointGravity” module from scratch.


n-body example: