Keywords: Graphics, Deferred Shading

Related articles:
[Graphics]Forward Shading Notes

Wikipedia

Deferred shading
https://en.wikipedia.org/wiki/Deferred_shading

Tutorials

Deferred Shading
https://learnopengl.com/Advanced-Lighting/Deferred-Shading

Deferred rendering is performed in two phases. The first phase involves going through the scene's geometry and rendering its positions or depths, normals, and materials into a framebuffer known as the geometry buffer or G-buffer. With the exception of some transformations, this is mostly a read-only phase so its performance cost is minimal. After this phase, you're only dealing with 2D textures in the shape of the screen.
The second and last phase is where you perform your lighting calculations using the output of the first phase. This is when you calculate the ambient, diffuse, and specular colors. Shadow and normal mapping are performed in this phase as well.
Deferred Rendering
https://github.com/lettier/3d-game-shaders-for-beginners/blob/master/sections/deferred-rendering.md

Blogs

Forward Rendering vs. Deferred Rendering
https://gamedevelopment.tutsplus.com/articles/forward-rendering-vs-deferred-rendering--gamedev-12342

实时渲染中常用的几种Rendering Path
https://www.cnblogs.com/polobymulberry/p/5126892.html
PDF download

Research Papaers

Deferred Shading Tutorial
https://www.gamedevs.org/uploads/deferred-shading-tutorial.pdf

Deferred Shading
http://download.nvidia.com/developer/presentations/2004/6800_Leagues/6800_Leagues_Deferred_Shading.pdf

Applications

Deferred Lighting
https://developer.apple.com/documentation/metal/deferred_lighting

Common Notes

How does deferred shading process transparent objects

The final solution is to use multiple passes of a deferred renderer. In each pass we rerun the entire deferred renderer for a transparent object and then at the end we collapse the layers back down into a single layer, blending the colours appropriately for each pixel.
Origin:
https://martindevans.me/game-development/2015/10/09/Deferred-Transparency/

You do the complete deferred shading first (including illumination pass). Then you use the final color buffer and the depth buffer and render the transparent geometry on top of that.
Origin:
https://stackoverflow.com/questions/52140035/opengl-deferred-shading-transparency

Deferred shading with Front Rendering
The front render is used to process transparent objects and fits well into the deferred shading pipeline. It renders all opaque objects first with the deferred shader and then renders the transparent objects on top using the front renderer. This is important as the depth buffer has to be filled with opaque objects first, to prevent rendering of non-visible transparent objects. When the front renderer is performed, the final picture can be rendered to the frame buffer for display. The implementation has the following rendering stages:

  1. Render all opaque geometry to the G-Buffer
  2. Bind the G-Buffer as texture. For each light in the scene draw a full screen rectangle and calculate lighting at each pixel using the data from the G-Buffer. Save result in the P-Buffer.
  3. Sort all transparent entities in back to front order.
  4. Render all transparent geometry using the front renderer. Blend the result to the P-Buffer using the depth buffer to filter out any non-visible transparent geometry. 9
  5. Copy P-Buffer to frame buffer.

Origin:
Transparency with Deferred Shading


The only regret I will have in dying is if it is not for love. ― Gabriel García Márquez, Love in the Time of Cholera