I also gave at talk at Siggraph 2012, titled ‘Tiled and clustered forward shading: supporting transparency and MSAA‘ on the topic of using tiled and, more importantly, clustered forward shading to draw transparent geometry with high efficiency.
For a demo, I’m referring you to the clustered forward shading demo, which I have prepared to go with my Siggraph talk. The core techniques are the same, and the implementation is actually simpler. The demo also includes our hierarchical light assignment implementation in CUDA, which is shown in the paper to scale to a million lights in real time.
Supplementary video is available on youtube.
This paper presents and investigates Clustered Shading for deferred and forward rendering. In Clustered Shading, view samples with similar properties (e.g. 3D-position and/or normal) are grouped into clusters. This is comparable to tiled shading, where view samples are grouped into tiles based on 2D-position only. We show that Clustered Shading creates a better mapping of light sources to view samples than tiled shading, resulting in a significant reduction of lighting computations during shading. Additionally, Clustered Shading enables using normal information to perform per-cluster back-face culling of lights, again reducing the number of lighting computations. We also show that Clustered Shading not only outperforms tiled shading in many scenes, but also exhibits better worst case behaviour under tricky conditions (e.g. when looking at high-frequency geometry with large discontinuities in depth). Additionally, Clustered Shading enables real-time scenes with two to three orders of magnitudes more lights than previously feasible (up to around one million light sources).