gbuffers opaque: 0.rgb - sky + near plane 0.a - 1.rgb - far plane 1.a - 0 is sky, 1 is anything else - Make sure to set blending to ONE ZERO SRC_ALPHA ZERO 2.rg - lightmap 2.b - [if vanilla AO] AO 2.a - 3.rgb - opaque normal 3.a - 5.rg - screenspace motion vector (velocity in clipspace) 5.b - 5.a - defer0: lighting REQUIRES albedo.rgb REQUIRES normal.rgb REQUIRES lightmap.rgb REQUIRES AO data (lightmap.b) [if pixelated shadows] REQUIRES normal defer1: combine passes and fog, manually clear albedo.rgba REQUIRES sky.rgb REQUIRES albedo.rgb REQUIRES sky mask (albedo.a) REQUIRES transparent.rgba 0.rgb - composited albedo 0.a - 1.rgba - vec4(0) 3.rgba - vec4(0) 4.rgb - previous frame gbuffers transparent: 0.rgb - composited albedo (+ transparent w/indirect lighting) 0.a - 1.rgba - transparent 2.rg - transparent lightmap 2.b - [if vanilla AO] transparent AO 2.a - 3.rgb - transparent normal 3.a - comp0: transparency shadows REQUIRES composited albedo.rgb REQUIRES transparent direct lighting.rgb REQUIRES transparent lightmap.g [if pixelated shadows] REQUIRES transparent normal 0.rgb - fully composited albedo 0.a - 1.rgb - no-hand albedo.rgb (and potentially light-limited) 1.a - if light-limited, multiplier for light (for bloom) 4.rgb - previous frame 4.a - comp1: Fast GI and bloom REQUIRES fully composited albedo.rgb REQUIRES no-hand albedo.rgb 0.rgb - albedo with bloom and GI 0.a - comp2: apply color REQUIRES albedo.rgb 0.rgb - colorgraded albedo 0.a -