Atom micro imposter engine
There's a game here too, although it's difficult to read what it might be from Timothy Farrar's development blog. Amazing eye candy, worth a visit! I gather from this description he is generating a world using L-Systems, depth sorting tiny imposter billboards, doing a ton of hidden surface removal, then passing everything to a DirectX 10 geometry shader to blast everything into an HDR frame buffer. Somewhere some CFD signifies, but I'm not sure where yet. Wish there was a movie of this image, it's stunning. The images are drawn in back to front order, allowing local lighting effects and backlighting during the rendering of subsequent layers. Timothy mentions that every object can illuminate every other, although I wonder if it is more precise to say that every object can illuminate every other object that lies closer to the camera? Here's a few key tricks I glean from the description:
- Imposters. The “things” that seem joined together are rendered from an L-System into a texture, and a depth texture. http://home.wanadoo.nl/laurens.lapre/gallery.html
- Camera velocity stretching. The particles are stretched according to their motion plus the camera motion vector
- drawing back to front with additive and multiplicative in a single billboard
- light particles. These particles render “local light” into a render texture (which also has depth). When lit imposters are rendered, they are illuminated by light that is picked up from the local light texture. The local light is also rendered into the framebuffer in order to give the soft backlit illumination look
- The motion of the junk in space is motivated by a fluid simulation
- A serious amount of hidden object removal. After sorting back to front, he removes all particles that are fully occluded for a huge speed up.