diff --git a/assets/minecraft/shaders/core/particle.fsh b/assets/minecraft/shaders/core/particle.fsh index 3c9acc7..9769084 100644 --- a/assets/minecraft/shaders/core/particle.fsh +++ b/assets/minecraft/shaders/core/particle.fsh @@ -14,13 +14,14 @@ in float vertexDistance; in vec2 texCoord0; in vec4 vertexColor; in vec4 lightColor; +in vec4 maxLightColor; out vec4 fragColor; void main() { vec4 color = texture(Sampler0, texCoord0) * vertexColor * ColorModulator; float alpha = textureLod(Sampler0, texCoord0, 0.0).a * 255.0; - color = make_emissive(color, lightColor, vertexDistance, alpha); + color = make_emissive(color, lightColor, maxLightColor, vertexDistance, alpha); color.a = remap_alpha(alpha) / 255.0; if (color.a < 0.1) { discard; diff --git a/assets/minecraft/shaders/core/particle.vsh b/assets/minecraft/shaders/core/particle.vsh index 6e73dad..eb3e439 100644 --- a/assets/minecraft/shaders/core/particle.vsh +++ b/assets/minecraft/shaders/core/particle.vsh @@ -16,6 +16,7 @@ out float vertexDistance; out vec2 texCoord0; out vec4 vertexColor; out vec4 lightColor; +out vec4 maxLightColor; void main() { gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0); @@ -24,4 +25,5 @@ void main() { texCoord0 = UV0; vertexColor = Color; lightColor = minecraft_sample_lightmap(Sampler2, UV2); + maxLightColor = minecraft_sample_lightmap(Sampler2, ivec2(240.0, 240.0)); } diff --git a/assets/minecraft/shaders/core/rendertype_armor_cutout_no_cull.fsh b/assets/minecraft/shaders/core/rendertype_armor_cutout_no_cull.fsh index 3c9acc7..ee03900 100644 --- a/assets/minecraft/shaders/core/rendertype_armor_cutout_no_cull.fsh +++ b/assets/minecraft/shaders/core/rendertype_armor_cutout_no_cull.fsh @@ -14,13 +14,13 @@ in float vertexDistance; in vec2 texCoord0; in vec4 vertexColor; in vec4 lightColor; - +in vec4 maxLightColor; out vec4 fragColor; void main() { vec4 color = texture(Sampler0, texCoord0) * vertexColor * ColorModulator; float alpha = textureLod(Sampler0, texCoord0, 0.0).a * 255.0; - color = make_emissive(color, lightColor, vertexDistance, alpha); + color = make_emissive(color, lightColor, maxLightColor, vertexDistance, alpha); color.a = remap_alpha(alpha) / 255.0; if (color.a < 0.1) { discard; diff --git a/assets/minecraft/shaders/core/rendertype_armor_cutout_no_cull.vsh b/assets/minecraft/shaders/core/rendertype_armor_cutout_no_cull.vsh index 83284a4..0b07e86 100644 --- a/assets/minecraft/shaders/core/rendertype_armor_cutout_no_cull.vsh +++ b/assets/minecraft/shaders/core/rendertype_armor_cutout_no_cull.vsh @@ -20,6 +20,7 @@ uniform vec3 Light1_Direction; out float vertexDistance; out vec4 vertexColor; out vec4 lightColor; +out vec4 maxLightColor; out vec2 texCoord0; out vec2 texCoord1; out vec4 normal; @@ -30,6 +31,7 @@ void main() { vertexDistance = length((ModelViewMat * vec4(Position, 1.0)).xyz); vertexColor = minecraft_mix_light(Light0_Direction, Light1_Direction, Normal, Color); lightColor = minecraft_sample_lightmap(Sampler2, UV2); + maxLightColor = minecraft_sample_lightmap(Sampler2, ivec2(240.0, 240.0)); texCoord0 = UV0; texCoord1 = UV1; normal = ProjMat * ModelViewMat * vec4(Normal, 0.0); diff --git a/assets/minecraft/shaders/core/rendertype_cutout.fsh b/assets/minecraft/shaders/core/rendertype_cutout.fsh index 9a17932..cc70a81 100644 --- a/assets/minecraft/shaders/core/rendertype_cutout.fsh +++ b/assets/minecraft/shaders/core/rendertype_cutout.fsh @@ -13,6 +13,7 @@ uniform vec4 FogColor; in float vertexDistance; in vec4 vertexColor; in vec4 lightColor; +in vec4 maxLightColor; in vec2 texCoord0; in vec4 normal; @@ -21,7 +22,7 @@ out vec4 fragColor; void main() { vec4 color = texture(Sampler0, texCoord0) * vertexColor * ColorModulator; float alpha = textureLod(Sampler0, texCoord0, 0.0).a * 255.0; - color = make_emissive(color, lightColor, vertexDistance, alpha); + color = make_emissive(color, lightColor, maxLightColor, vertexDistance, alpha); color.a = remap_alpha(alpha) / 255.0; if (color.a < 0.1) { discard; diff --git a/assets/minecraft/shaders/core/rendertype_cutout.vsh b/assets/minecraft/shaders/core/rendertype_cutout.vsh index a9cf44f..c6e045b 100644 --- a/assets/minecraft/shaders/core/rendertype_cutout.vsh +++ b/assets/minecraft/shaders/core/rendertype_cutout.vsh @@ -17,6 +17,7 @@ uniform vec3 ChunkOffset; out float vertexDistance; out vec4 vertexColor; out vec4 lightColor; +out vec4 maxLightColor; out vec2 texCoord0; out vec4 normal; @@ -26,6 +27,7 @@ void main() { vertexDistance = length((ModelViewMat * vec4(Position + ChunkOffset, 1.0)).xyz); vertexColor = Color; lightColor = minecraft_sample_lightmap(Sampler2, UV2); + maxLightColor = minecraft_sample_lightmap(Sampler2, ivec2(240.0, 240.0)); texCoord0 = UV0; normal = ProjMat * ModelViewMat * vec4(Normal, 0.0); } diff --git a/assets/minecraft/shaders/core/rendertype_cutout_mipped.fsh b/assets/minecraft/shaders/core/rendertype_cutout_mipped.fsh index 24b693a..03e42df 100644 --- a/assets/minecraft/shaders/core/rendertype_cutout_mipped.fsh +++ b/assets/minecraft/shaders/core/rendertype_cutout_mipped.fsh @@ -13,6 +13,7 @@ uniform vec4 FogColor; in float vertexDistance; in vec4 vertexColor; in vec4 lightColor; +in vec4 maxLightColor; in vec2 texCoord0; in vec4 normal; @@ -21,7 +22,7 @@ out vec4 fragColor; void main() { vec4 color = texture(Sampler0, texCoord0) * vertexColor * ColorModulator; float alpha = textureLod(Sampler0, texCoord0, 0.0).a * 255.0; - color = make_emissive(color, lightColor, vertexDistance, alpha); + color = make_emissive(color, lightColor, maxLightColor, vertexDistance, alpha); color.a = remap_alpha(alpha) / 255.0; if (color.a < 0.5) { discard; diff --git a/assets/minecraft/shaders/core/rendertype_cutout_mipped.vsh b/assets/minecraft/shaders/core/rendertype_cutout_mipped.vsh index a9cf44f..c6e045b 100644 --- a/assets/minecraft/shaders/core/rendertype_cutout_mipped.vsh +++ b/assets/minecraft/shaders/core/rendertype_cutout_mipped.vsh @@ -17,6 +17,7 @@ uniform vec3 ChunkOffset; out float vertexDistance; out vec4 vertexColor; out vec4 lightColor; +out vec4 maxLightColor; out vec2 texCoord0; out vec4 normal; @@ -26,6 +27,7 @@ void main() { vertexDistance = length((ModelViewMat * vec4(Position + ChunkOffset, 1.0)).xyz); vertexColor = Color; lightColor = minecraft_sample_lightmap(Sampler2, UV2); + maxLightColor = minecraft_sample_lightmap(Sampler2, ivec2(240.0, 240.0)); texCoord0 = UV0; normal = ProjMat * ModelViewMat * vec4(Normal, 0.0); } diff --git a/assets/minecraft/shaders/core/rendertype_entity_cutout.fsh b/assets/minecraft/shaders/core/rendertype_entity_cutout.fsh index 7b15ab0..70f8497 100644 --- a/assets/minecraft/shaders/core/rendertype_entity_cutout.fsh +++ b/assets/minecraft/shaders/core/rendertype_entity_cutout.fsh @@ -13,6 +13,7 @@ uniform vec4 FogColor; in float vertexDistance; in vec4 vertexColor; in vec4 lightColor; +in vec4 maxLightColor; in vec4 overlayColor; in vec2 texCoord0; in vec4 normal; @@ -24,7 +25,7 @@ void main() { color *= vertexColor * ColorModulator; color.rgb = mix(overlayColor.rgb, color.rgb, overlayColor.a); float alpha = color.a * 255.0; - color = make_emissive(color, lightColor, vertexDistance, alpha); + color = make_emissive(color, lightColor, maxLightColor, vertexDistance, alpha); color.a = remap_alpha(alpha) / 255.0; if (color.a < 0.1) { discard; diff --git a/assets/minecraft/shaders/core/rendertype_entity_cutout.vsh b/assets/minecraft/shaders/core/rendertype_entity_cutout.vsh index 727232a..3950c3f 100644 --- a/assets/minecraft/shaders/core/rendertype_entity_cutout.vsh +++ b/assets/minecraft/shaders/core/rendertype_entity_cutout.vsh @@ -21,6 +21,7 @@ uniform vec3 Light1_Direction; out float vertexDistance; out vec4 vertexColor; out vec4 lightColor; +out vec4 maxLightColor; out vec4 overlayColor; out vec2 texCoord0; out vec4 normal; @@ -31,6 +32,7 @@ void main() { vertexDistance = length((ModelViewMat * vec4(Position, 1.0)).xyz); vertexColor = minecraft_mix_light(Light0_Direction, Light1_Direction, Normal, Color); lightColor = minecraft_sample_lightmap(Sampler2, UV2); + maxLightColor = minecraft_sample_lightmap(Sampler2, ivec2(240.0, 240.0)); overlayColor = texelFetch(Sampler1, UV1, 0); texCoord0 = UV0; normal = ProjMat * ModelViewMat * vec4(Normal, 0.0); diff --git a/assets/minecraft/shaders/core/rendertype_entity_cutout_no_cull.fsh b/assets/minecraft/shaders/core/rendertype_entity_cutout_no_cull.fsh index 7b15ab0..70f8497 100644 --- a/assets/minecraft/shaders/core/rendertype_entity_cutout_no_cull.fsh +++ b/assets/minecraft/shaders/core/rendertype_entity_cutout_no_cull.fsh @@ -13,6 +13,7 @@ uniform vec4 FogColor; in float vertexDistance; in vec4 vertexColor; in vec4 lightColor; +in vec4 maxLightColor; in vec4 overlayColor; in vec2 texCoord0; in vec4 normal; @@ -24,7 +25,7 @@ void main() { color *= vertexColor * ColorModulator; color.rgb = mix(overlayColor.rgb, color.rgb, overlayColor.a); float alpha = color.a * 255.0; - color = make_emissive(color, lightColor, vertexDistance, alpha); + color = make_emissive(color, lightColor, maxLightColor, vertexDistance, alpha); color.a = remap_alpha(alpha) / 255.0; if (color.a < 0.1) { discard; diff --git a/assets/minecraft/shaders/core/rendertype_entity_cutout_no_cull.vsh b/assets/minecraft/shaders/core/rendertype_entity_cutout_no_cull.vsh index 727232a..3950c3f 100644 --- a/assets/minecraft/shaders/core/rendertype_entity_cutout_no_cull.vsh +++ b/assets/minecraft/shaders/core/rendertype_entity_cutout_no_cull.vsh @@ -21,6 +21,7 @@ uniform vec3 Light1_Direction; out float vertexDistance; out vec4 vertexColor; out vec4 lightColor; +out vec4 maxLightColor; out vec4 overlayColor; out vec2 texCoord0; out vec4 normal; @@ -31,6 +32,7 @@ void main() { vertexDistance = length((ModelViewMat * vec4(Position, 1.0)).xyz); vertexColor = minecraft_mix_light(Light0_Direction, Light1_Direction, Normal, Color); lightColor = minecraft_sample_lightmap(Sampler2, UV2); + maxLightColor = minecraft_sample_lightmap(Sampler2, ivec2(240.0, 240.0)); overlayColor = texelFetch(Sampler1, UV1, 0); texCoord0 = UV0; normal = ProjMat * ModelViewMat * vec4(Normal, 0.0); diff --git a/assets/minecraft/shaders/core/rendertype_entity_cutout_no_cull_z_offset.fsh b/assets/minecraft/shaders/core/rendertype_entity_cutout_no_cull_z_offset.fsh index 7b15ab0..70f8497 100644 --- a/assets/minecraft/shaders/core/rendertype_entity_cutout_no_cull_z_offset.fsh +++ b/assets/minecraft/shaders/core/rendertype_entity_cutout_no_cull_z_offset.fsh @@ -13,6 +13,7 @@ uniform vec4 FogColor; in float vertexDistance; in vec4 vertexColor; in vec4 lightColor; +in vec4 maxLightColor; in vec4 overlayColor; in vec2 texCoord0; in vec4 normal; @@ -24,7 +25,7 @@ void main() { color *= vertexColor * ColorModulator; color.rgb = mix(overlayColor.rgb, color.rgb, overlayColor.a); float alpha = color.a * 255.0; - color = make_emissive(color, lightColor, vertexDistance, alpha); + color = make_emissive(color, lightColor, maxLightColor, vertexDistance, alpha); color.a = remap_alpha(alpha) / 255.0; if (color.a < 0.1) { discard; diff --git a/assets/minecraft/shaders/core/rendertype_entity_cutout_no_cull_z_offset.vsh b/assets/minecraft/shaders/core/rendertype_entity_cutout_no_cull_z_offset.vsh index 727232a..3950c3f 100644 --- a/assets/minecraft/shaders/core/rendertype_entity_cutout_no_cull_z_offset.vsh +++ b/assets/minecraft/shaders/core/rendertype_entity_cutout_no_cull_z_offset.vsh @@ -21,6 +21,7 @@ uniform vec3 Light1_Direction; out float vertexDistance; out vec4 vertexColor; out vec4 lightColor; +out vec4 maxLightColor; out vec4 overlayColor; out vec2 texCoord0; out vec4 normal; @@ -31,6 +32,7 @@ void main() { vertexDistance = length((ModelViewMat * vec4(Position, 1.0)).xyz); vertexColor = minecraft_mix_light(Light0_Direction, Light1_Direction, Normal, Color); lightColor = minecraft_sample_lightmap(Sampler2, UV2); + maxLightColor = minecraft_sample_lightmap(Sampler2, ivec2(240.0, 240.0)); overlayColor = texelFetch(Sampler1, UV1, 0); texCoord0 = UV0; normal = ProjMat * ModelViewMat * vec4(Normal, 0.0); diff --git a/assets/minecraft/shaders/core/rendertype_entity_no_outline.fsh b/assets/minecraft/shaders/core/rendertype_entity_no_outline.fsh index c873d92..7697f32 100644 --- a/assets/minecraft/shaders/core/rendertype_entity_no_outline.fsh +++ b/assets/minecraft/shaders/core/rendertype_entity_no_outline.fsh @@ -13,6 +13,7 @@ uniform vec4 FogColor; in float vertexDistance; in vec4 vertexColor; in vec4 lightColor; +in vec4 maxLightColor; in vec2 texCoord0; in vec4 normal; @@ -21,7 +22,7 @@ out vec4 fragColor; void main() { vec4 color = texture(Sampler0, texCoord0) * vertexColor * ColorModulator; float alpha = textureLod(Sampler0, texCoord0, 0.0).a * 255.0; - color = make_emissive(color, lightColor, vertexDistance, alpha); + color = make_emissive(color, lightColor, maxLightColor, vertexDistance, alpha); color.a = remap_alpha(alpha) / 255.0; fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor); } diff --git a/assets/minecraft/shaders/core/rendertype_entity_no_outline.vsh b/assets/minecraft/shaders/core/rendertype_entity_no_outline.vsh index e5e62d7..467de06 100644 --- a/assets/minecraft/shaders/core/rendertype_entity_no_outline.vsh +++ b/assets/minecraft/shaders/core/rendertype_entity_no_outline.vsh @@ -19,6 +19,7 @@ uniform vec3 Light1_Direction; out float vertexDistance; out vec4 vertexColor; out vec4 lightColor; +out vec4 maxLightColor; out vec2 texCoord0; out vec4 normal; @@ -28,6 +29,7 @@ void main() { vertexDistance = length((ModelViewMat * vec4(Position, 1.0)).xyz); vertexColor = minecraft_mix_light(Light0_Direction, Light1_Direction, Normal, Color); lightColor = minecraft_sample_lightmap(Sampler2, UV2); + maxLightColor = minecraft_sample_lightmap(Sampler2, ivec2(240.0, 240.0)); texCoord0 = UV0; normal = ProjMat * ModelViewMat * vec4(Normal, 0.0); } diff --git a/assets/minecraft/shaders/core/rendertype_entity_solid.fsh b/assets/minecraft/shaders/core/rendertype_entity_solid.fsh index 6531306..ddc371c 100644 --- a/assets/minecraft/shaders/core/rendertype_entity_solid.fsh +++ b/assets/minecraft/shaders/core/rendertype_entity_solid.fsh @@ -13,6 +13,7 @@ uniform vec4 FogColor; in float vertexDistance; in vec4 vertexColor; in vec4 lightColor; +in vec4 maxLightColor; in vec4 overlayColor; in vec2 texCoord0; in vec4 normal; @@ -23,7 +24,7 @@ void main() { vec4 color = texture(Sampler0, texCoord0) * vertexColor * ColorModulator; color.rgb = mix(overlayColor.rgb, color.rgb, overlayColor.a); float alpha = color.a * 255.0; - color = make_emissive(color, lightColor, vertexDistance, alpha); + color = make_emissive(color, lightColor, maxLightColor, vertexDistance, alpha); color.a = remap_alpha(alpha) / 255.0; fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor); } diff --git a/assets/minecraft/shaders/core/rendertype_entity_solid.vsh b/assets/minecraft/shaders/core/rendertype_entity_solid.vsh index 727232a..3950c3f 100644 --- a/assets/minecraft/shaders/core/rendertype_entity_solid.vsh +++ b/assets/minecraft/shaders/core/rendertype_entity_solid.vsh @@ -21,6 +21,7 @@ uniform vec3 Light1_Direction; out float vertexDistance; out vec4 vertexColor; out vec4 lightColor; +out vec4 maxLightColor; out vec4 overlayColor; out vec2 texCoord0; out vec4 normal; @@ -31,6 +32,7 @@ void main() { vertexDistance = length((ModelViewMat * vec4(Position, 1.0)).xyz); vertexColor = minecraft_mix_light(Light0_Direction, Light1_Direction, Normal, Color); lightColor = minecraft_sample_lightmap(Sampler2, UV2); + maxLightColor = minecraft_sample_lightmap(Sampler2, ivec2(240.0, 240.0)); overlayColor = texelFetch(Sampler1, UV1, 0); texCoord0 = UV0; normal = ProjMat * ModelViewMat * vec4(Normal, 0.0); diff --git a/assets/minecraft/shaders/core/rendertype_entity_translucent.fsh b/assets/minecraft/shaders/core/rendertype_entity_translucent.fsh index 7b15ab0..70f8497 100644 --- a/assets/minecraft/shaders/core/rendertype_entity_translucent.fsh +++ b/assets/minecraft/shaders/core/rendertype_entity_translucent.fsh @@ -13,6 +13,7 @@ uniform vec4 FogColor; in float vertexDistance; in vec4 vertexColor; in vec4 lightColor; +in vec4 maxLightColor; in vec4 overlayColor; in vec2 texCoord0; in vec4 normal; @@ -24,7 +25,7 @@ void main() { color *= vertexColor * ColorModulator; color.rgb = mix(overlayColor.rgb, color.rgb, overlayColor.a); float alpha = color.a * 255.0; - color = make_emissive(color, lightColor, vertexDistance, alpha); + color = make_emissive(color, lightColor, maxLightColor, vertexDistance, alpha); color.a = remap_alpha(alpha) / 255.0; if (color.a < 0.1) { discard; diff --git a/assets/minecraft/shaders/core/rendertype_entity_translucent.vsh b/assets/minecraft/shaders/core/rendertype_entity_translucent.vsh index 727232a..3950c3f 100644 --- a/assets/minecraft/shaders/core/rendertype_entity_translucent.vsh +++ b/assets/minecraft/shaders/core/rendertype_entity_translucent.vsh @@ -21,6 +21,7 @@ uniform vec3 Light1_Direction; out float vertexDistance; out vec4 vertexColor; out vec4 lightColor; +out vec4 maxLightColor; out vec4 overlayColor; out vec2 texCoord0; out vec4 normal; @@ -31,6 +32,7 @@ void main() { vertexDistance = length((ModelViewMat * vec4(Position, 1.0)).xyz); vertexColor = minecraft_mix_light(Light0_Direction, Light1_Direction, Normal, Color); lightColor = minecraft_sample_lightmap(Sampler2, UV2); + maxLightColor = minecraft_sample_lightmap(Sampler2, ivec2(240.0, 240.0)); overlayColor = texelFetch(Sampler1, UV1, 0); texCoord0 = UV0; normal = ProjMat * ModelViewMat * vec4(Normal, 0.0); diff --git a/assets/minecraft/shaders/core/rendertype_entity_translucent_cull.fsh b/assets/minecraft/shaders/core/rendertype_entity_translucent_cull.fsh index 67caf7d..94962da 100644 --- a/assets/minecraft/shaders/core/rendertype_entity_translucent_cull.fsh +++ b/assets/minecraft/shaders/core/rendertype_entity_translucent_cull.fsh @@ -13,6 +13,7 @@ uniform vec4 FogColor; in float vertexDistance; in vec4 vertexColor; in vec4 lightColor; +in vec4 maxLightColor; in vec2 texCoord0; in vec2 texCoord1; in vec4 normal; @@ -22,7 +23,7 @@ out vec4 fragColor; void main() { vec4 color = texture(Sampler0, texCoord0) * vertexColor * ColorModulator; float alpha = textureLod(Sampler0, texCoord0, 0.0).a * 255.0; - color = make_emissive(color, lightColor, vertexDistance, alpha); + color = make_emissive(color, lightColor, maxLightColor, vertexDistance, alpha); color.a = remap_alpha(alpha) / 255.0; if (color.a < 0.1) { discard; diff --git a/assets/minecraft/shaders/core/rendertype_entity_translucent_cull.vsh b/assets/minecraft/shaders/core/rendertype_entity_translucent_cull.vsh index acffc43..fcf4ae7 100644 --- a/assets/minecraft/shaders/core/rendertype_entity_translucent_cull.vsh +++ b/assets/minecraft/shaders/core/rendertype_entity_translucent_cull.vsh @@ -20,6 +20,7 @@ uniform vec3 Light1_Direction; out float vertexDistance; out vec4 vertexColor; out vec4 lightColor; +out vec4 maxLightColor; out vec2 texCoord0; out vec2 texCoord1; out vec2 texCoord2; @@ -31,6 +32,7 @@ void main() { vertexDistance = length((ModelViewMat * vec4(Position, 1.0)).xyz); vertexColor = minecraft_mix_light(Light0_Direction, Light1_Direction, Normal, Color); lightColor = minecraft_sample_lightmap(Sampler2, UV2); + maxLightColor = minecraft_sample_lightmap(Sampler2, ivec2(240.0, 240.0)); texCoord0 = UV0; texCoord1 = UV1; texCoord2 = UV2; diff --git a/assets/minecraft/shaders/core/rendertype_item_entity_translucent_cull.fsh b/assets/minecraft/shaders/core/rendertype_item_entity_translucent_cull.fsh index af854ff..892ddb8 100644 --- a/assets/minecraft/shaders/core/rendertype_item_entity_translucent_cull.fsh +++ b/assets/minecraft/shaders/core/rendertype_item_entity_translucent_cull.fsh @@ -13,6 +13,7 @@ uniform vec4 FogColor; in float vertexDistance; in vec4 vertexColor; in vec4 lightColor; +in vec4 maxLightColor; in vec2 texCoord0; in vec2 texCoord1; in vec4 normal; @@ -22,7 +23,7 @@ out vec4 fragColor; void main() { vec4 color = texture(Sampler0, texCoord0) * vertexColor * ColorModulator; float alpha = textureLod(Sampler0, texCoord0, 0.0).a * 255.0; - color = make_emissive(color, lightColor, vertexDistance, alpha); + color = make_emissive(color, lightColor, maxLightColor, vertexDistance, alpha); color.a = remap_alpha(alpha) / 255.0; if (color.a < 0.1) { discard; diff --git a/assets/minecraft/shaders/core/rendertype_item_entity_translucent_cull.vsh b/assets/minecraft/shaders/core/rendertype_item_entity_translucent_cull.vsh index acffc43..fcf4ae7 100644 --- a/assets/minecraft/shaders/core/rendertype_item_entity_translucent_cull.vsh +++ b/assets/minecraft/shaders/core/rendertype_item_entity_translucent_cull.vsh @@ -20,6 +20,7 @@ uniform vec3 Light1_Direction; out float vertexDistance; out vec4 vertexColor; out vec4 lightColor; +out vec4 maxLightColor; out vec2 texCoord0; out vec2 texCoord1; out vec2 texCoord2; @@ -31,6 +32,7 @@ void main() { vertexDistance = length((ModelViewMat * vec4(Position, 1.0)).xyz); vertexColor = minecraft_mix_light(Light0_Direction, Light1_Direction, Normal, Color); lightColor = minecraft_sample_lightmap(Sampler2, UV2); + maxLightColor = minecraft_sample_lightmap(Sampler2, ivec2(240.0, 240.0)); texCoord0 = UV0; texCoord1 = UV1; texCoord2 = UV2; diff --git a/assets/minecraft/shaders/core/rendertype_solid.fsh b/assets/minecraft/shaders/core/rendertype_solid.fsh index 0c983b9..54a47b2 100644 --- a/assets/minecraft/shaders/core/rendertype_solid.fsh +++ b/assets/minecraft/shaders/core/rendertype_solid.fsh @@ -13,6 +13,7 @@ uniform vec4 FogColor; in float vertexDistance; in vec4 vertexColor; in vec4 lightColor; +in vec4 maxLightColor; in vec2 texCoord0; in vec4 normal; @@ -21,7 +22,7 @@ out vec4 fragColor; void main() { vec4 color = texture(Sampler0, texCoord0) * vertexColor * ColorModulator; float alpha = textureLod(Sampler0, texCoord0, 0.0).a * 255.0; - color = make_emissive(color, lightColor, vertexDistance, alpha); + color = make_emissive(color, lightColor, maxLightColor, vertexDistance, alpha); color.a = remap_alpha(alpha) / 255.0; fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor); } diff --git a/assets/minecraft/shaders/core/rendertype_solid.vsh b/assets/minecraft/shaders/core/rendertype_solid.vsh index a9cf44f..c6e045b 100644 --- a/assets/minecraft/shaders/core/rendertype_solid.vsh +++ b/assets/minecraft/shaders/core/rendertype_solid.vsh @@ -17,6 +17,7 @@ uniform vec3 ChunkOffset; out float vertexDistance; out vec4 vertexColor; out vec4 lightColor; +out vec4 maxLightColor; out vec2 texCoord0; out vec4 normal; @@ -26,6 +27,7 @@ void main() { vertexDistance = length((ModelViewMat * vec4(Position + ChunkOffset, 1.0)).xyz); vertexColor = Color; lightColor = minecraft_sample_lightmap(Sampler2, UV2); + maxLightColor = minecraft_sample_lightmap(Sampler2, ivec2(240.0, 240.0)); texCoord0 = UV0; normal = ProjMat * ModelViewMat * vec4(Normal, 0.0); } diff --git a/assets/minecraft/shaders/core/rendertype_translucent.fsh b/assets/minecraft/shaders/core/rendertype_translucent.fsh index 0c983b9..54a47b2 100644 --- a/assets/minecraft/shaders/core/rendertype_translucent.fsh +++ b/assets/minecraft/shaders/core/rendertype_translucent.fsh @@ -13,6 +13,7 @@ uniform vec4 FogColor; in float vertexDistance; in vec4 vertexColor; in vec4 lightColor; +in vec4 maxLightColor; in vec2 texCoord0; in vec4 normal; @@ -21,7 +22,7 @@ out vec4 fragColor; void main() { vec4 color = texture(Sampler0, texCoord0) * vertexColor * ColorModulator; float alpha = textureLod(Sampler0, texCoord0, 0.0).a * 255.0; - color = make_emissive(color, lightColor, vertexDistance, alpha); + color = make_emissive(color, lightColor, maxLightColor, vertexDistance, alpha); color.a = remap_alpha(alpha) / 255.0; fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor); } diff --git a/assets/minecraft/shaders/core/rendertype_translucent.vsh b/assets/minecraft/shaders/core/rendertype_translucent.vsh index a9cf44f..c6e045b 100644 --- a/assets/minecraft/shaders/core/rendertype_translucent.vsh +++ b/assets/minecraft/shaders/core/rendertype_translucent.vsh @@ -17,6 +17,7 @@ uniform vec3 ChunkOffset; out float vertexDistance; out vec4 vertexColor; out vec4 lightColor; +out vec4 maxLightColor; out vec2 texCoord0; out vec4 normal; @@ -26,6 +27,7 @@ void main() { vertexDistance = length((ModelViewMat * vec4(Position + ChunkOffset, 1.0)).xyz); vertexColor = Color; lightColor = minecraft_sample_lightmap(Sampler2, UV2); + maxLightColor = minecraft_sample_lightmap(Sampler2, ivec2(240.0, 240.0)); texCoord0 = UV0; normal = ProjMat * ModelViewMat * vec4(Normal, 0.0); } diff --git a/assets/minecraft/shaders/include/emissive_utils.glsl b/assets/minecraft/shaders/include/emissive_utils.glsl index 922724f..5a37c76 100644 --- a/assets/minecraft/shaders/include/emissive_utils.glsl +++ b/assets/minecraft/shaders/include/emissive_utils.glsl @@ -7,7 +7,7 @@ float check_alpha(float textureAlpha, float targetAlpha) { else return 0.0; } -vec4 make_emissive(vec4 inputColor, vec4 lightColor, float vertexDistance, float inputAlpha) { +vec4 make_emissive(vec4 inputColor, vec4 lightColor, vec4 maxLightColor, float vertexDistance, float inputAlpha) { if (vertexDistance > 800) return inputColor; if (check_alpha(inputAlpha, 252.0) == 1.0) return inputColor; // Default case, checks for alpha 252 and just returns the input color if it is. else if (check_alpha(inputAlpha, 251.0) == 1.0) return inputColor; // Copypaste this and change the number to add a custom alpha value.