Files
minecraft-pt/shaders/Lib/BasicFunctions/Blocklight.glsl
T

37 lines
1.3 KiB
GLSL

// 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