Goal:

-Optimize and effeciently use the available resources while keeping good fps.
-Keep the codes squeaky clean, understandable, and portable.
-Retain the material pass system.

Framebuffers:

gcolor - Main scene / Skybox, vanilla sun and moon : R11F_G11F_B10F
colortex1 - Normals : RGB16_SNORM
colortex2 - Raw albedo, SSAO : RGBA8
colortex3 - Metallic, roughness, glowing entity : RGB8
colortex4 - Clouds / Bloom : R11F_G11F_B10F
colortex5 - TAA / Previous reflections, Auto exposure : RGBA16F

Custom defined macros (These are defined at the start of every .fsh and .vsh file):
    World macros:
        OVERWORLD
        NETHER
        END
    SHADOW
    GBUFFERS
    Gbuffer macros:
        PBR enabled programs:
            TERRAIN
            WATER
            BLOCK
            ENTITIES_GLOWING
            ENTITIES
            HAND
            HAND_WATER

        Simple PBR enabled programs:
            BASIC
            CLOUDS
            TEXTURED

        Basic programs (No PBR materials defined):
            ARMOR_GLINT
            BEACON_BEAM
            SPIDER_EYES
            DAMAGED_BLOCK
            WEATHER

            LINE
            SKY_BASIC
            SKY_TEXTURED
    DEFERRED
    DEFERRED(1-15)
    COMPOSITE
    COMPOSITE(1-15)
    FINAL

TO DO:
    Normal strength