37 lines
1.3 KiB
GLSL
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 |