State in textures, ping-pong FBOs and instancing — millions of particles without the CPU breaking a sweat.