Implementing Light Volume Front Faces
- by cubrman
I recently read an article about light indexed deferred rendering from here:
http://code.google.com/p/lightindexed-deferredrender/
It explains its ideas in a clear way, but there was one point that I failed to understand. It in fact is one of the most interesting ones, as it explains how to implement transparency with this approach:
Typically when rendering light volumes in deferred rendering, only
surfaces that intersect the light volume are marked and lit. This is
generally accomplished by a “shadow volume like” technique of
rendering back faces – incrementing stencil where depth is greater
than – then rendering front faces and only accepting when depth is
less than and stencil is not zero. By only rendering front faces where
depth is less than, all future lookups by fragments in the forward
rendering pass will get all possible lights that could hit the
fragment.
Can anyone explain how exactly you need to render only front faces? Another question is why do you need the front faces at all? Why can't we simply render all the lights and store the ones that overlap at this pixel in a texture? Does this approach serves as a cut-off plane to discard lights blocked by opaque geometry?