// MinecraftPT — Block Light // Maps vanilla block light level to physical light, with per-block colors. #ifndef BLOCKLIGHT_GLSL #define BLOCKLIGHT_GLSL // Convert lightmap blocklight (0-1) to physical light intensity float BlocklightFromLightmap(float blocklight){ return pow(blocklight, 2.0) * BLOCKLIGHT_BRIGHTNESS; } // Get the block light color for a material vec3 BlocklightColor(float materialID){ // Warm torch color by default vec3 color = pow(vec3(COLOR_TORCH_R, COLOR_TORCH_G, COLOR_TORCH_B), vec3(2.2)); if (materialID == MATID_SOULTORCH || materialID == MATID_COPPER_LANTERN){ color = pow(vec3(COLOR_SOULTORCH_R, COLOR_SOULTORCH_G, COLOR_SOULTORCH_B), vec3(2.2)); }else if (materialID == MATID_AMETHYST){ color = pow(vec3(COLOR_AMETHYST_R, COLOR_AMETHYST_G, COLOR_AMETHYST_B), vec3(2.2)); }else if (materialID == MATID_FIRE){ color = pow(vec3(COLOR_FIRE_R, COLOR_FIRE_G, COLOR_FIRE_B), vec3(2.2)); }else if (materialID == MATID_ENDROD){ color = pow(vec3(COLOR_ENDROD_R, COLOR_ENDROD_G, COLOR_ENDROD_B), vec3(2.2)); } return color * BlocklightFromLightmap(0.5); } // Physical block light for a lightmap value vec3 Blocklight(vec2 lightmap){ // Blocklight color temperature vec3 warmColor = pow(vec3(COLOR_TORCH_R, COLOR_TORCH_G, COLOR_TORCH_B), vec3(2.2)); return warmColor * pow(lightmap.x, 2.0) * BLOCKLIGHT_BRIGHTNESS; } #endif