Using the GPU for applications other than graphics!
http://www.nvidia.com/object/what-is-gpu-computing.html
https://www.opengl.org/wiki/Rendering_Pipeline_Overview
Just for a sense of scale...
Credit for images:
http://theotherguy103.deviantart.com/art/Fire-particle-system-157655165
http://www.darwin3d.com/gdm1999.htm
https://www.youtube.com/watch?v=HurJ3b7n_8w
https://software.intel.com/en-us/articles/dynamics-and-particle-effects-part-1
http://gamma.cs.unc.edu/CSTREAMS/cloth/
//Exact specifics differ on hardware capabilities
//and/or user-defined output color definitions
//e.g. R8G8B8A8 uses bytes instead of floats
//This is a theoretical R32G32B32A32 example
struct Pixel
{
float red;
float green;
float blue;
float alpha; //transparency/opacity, usually
}//Represents a point in 3D space
//Acceleration, Velocity, Position
struct Vec4
{
float x;
float y;
float z;
float w; //"are we in clip space yet?" indicator
}Let's make a particle system!
"Texture" in quotes really means, "think of this as an array of structs"
Things have changed since then!
No one "right" method, depends on application
The Ecosystem as it stands:
OpenGL 4.3 details and presentation slides:
https://www.khronos.org/assets/uploads/developers/library/2014-siggraph-bof/KITE-BOF_Aug14.pdf