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 - 
    4.rgb - previous frame


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.rgba - vec4(0)
    5.rgba - vec4(0)


gbuffers transparent:
    0.rgb - composited albedo (+ transparent w/indirect lighting)
    0.a - 
    1.rgba - transparent direct lighting (additive)
    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)



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 -