Light Indexed Deferred Rendering

January 24, 2008 at 3:19 pm (Demos, Papers)


Damian Trebilco posted a paper and demo of an interesting approach to deferred rendering on the Beyond3D forums. Instead of rendering out several buffers of geometry information (gbuffers), the author renders the light volumes with unique IDs into a buffer. Standard forward rendering is then used and the per-pixel light indices are used to index light information. The great benefit of doing it this way is that you don’t have all of the bandwidth of outputting these gbuffers. Once you turn on MSAA, these already large buffers become increasingly costly. Another benefit is that handling transparent surfaces becomes much easier.

With this approach, the worry of packing geometry and material information into as few gbuffers as possible is replaced with the worry of storing your light IDs and handling the max number of lights that might overlap one pixel. There are a few other gotchas, but you should read the paper for a comparison with standard forward rendering and traditional deferred rendering. Worth a read!



  1. Damian said,

    Just FYI: There is a minor update to the demo – ATI support and moving lights.

  2. levelofdetail said,

    Thanks for the update!

  3. ReJ said,

    I actually had an article published several years ago in ShaderX4 on the same topic (“Better geometry batching using Light Buffers”). Difference was that instead of light IDs I stored light properties directly (approach was aimed at PS1.1 class hardware). Article addressed two possible ways of applying light buffers: 1st as Damian suggests to project from camera, 2nd more specialized (used in RTS game I was working at the time) – to project onto “most important” plane of action – terrain in that specific case.

    Arcticle is publicly available from Google cache 🙂 (1.1 chapter)

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: