There is plenty of information on what deferred rendering is but there is a lack when it comes to deferred lighting and the information that there is there is not clear.

My question is simple, what is deferred lighting and what is its advantage and disadvantage.

  • 2
    \$\begingroup\$ If you are not yet able to understand a text that references external concepts, consider reading up on those external concepts. As there's "plenty of information" on deferred shading, it should be easy for you to find out enough about it in order to understand the contrast the text you linked attempts to make. It's very rare that a complete piece is completely opaque to the reader, surely there's individual parts of it that you do not quite follow and which may warrant questions. \$\endgroup\$ Aug 10, 2014 at 6:48

1 Answer 1


In deferred shading all the material properties are rendered into the G-buffer, e.g. albedo, normals, roughness, metalness, etc. that are needed for BRDF evaluation. After this step shading is performed for pixels within light volumes using light and material properties as input to the BRDF. The problem with deferred shading is that more complex BRDF's (e.g. subsurface scattering or anisotropic reflections) can require quite a lot of properties which inflates G-buffer space and bandwidth requirements, thus it's important to have compact representation of the material properties.

Deferred lighting tries to address this problem by decoupling constant and non-constant BRDF terms, evaluating partial BRDF, and combining these terms in the second geometry pass. The properties needed for non-constant terms are rendered to G-buffer, and then partial BRDF is evaluated for pixels within light volumes whose results are written to diffuse & specular lighting buffers. These buffers are then combined in the second geometry pass with constant terms (e.g. albedo & emissivity).

The bandwidth issues of deferred shading has been addressed with tiled approaches though, which makes deferred lighting less of an interesting option, IMHO. Multiple BRDF's can also be supported in deferred shading but memory requirements of the G-buffer is still a concern (though diminishing one as GPU's have increasing amount of memory). Deferred lighting doesn't really have big benefit in memory savings either since most terms in BRDF's are not constant and having two passes over geometry adds quite a bit of overhead in more complex environments.

  • \$\begingroup\$ Just to make sure I got it right. First Pass: Record non constant to a buffer. Second pass: Evaluate light from first pass buffer and record to a buffer. Third Pass: Redraw everything and in the pixel shader you map to the second pass buffer to get the light. \$\endgroup\$
    – Caesar
    Aug 10, 2014 at 9:20
  • \$\begingroup\$ Yes. In the first pass you render normal, roughness, etc. to G-buffer. In second pass evaluate lighting for pixels with some BRDF and write the results to diffuse & specular buffers. And in the third pass do the final BRDF combination like: final_color=albedo*diffuse+specular_reflectance*specular+emissivity, where diffuse and specular are results from the 2nd pass, and albedo, specular_reflectance and emissivity are fetched from textures for the object that's being rendered. \$\endgroup\$
    – JarkkoL
    Aug 10, 2014 at 9:46

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .