From 2bfcd45b35d9e64cbbe54827c4d58d3b5082299a Mon Sep 17 00:00:00 2001 From: DS Date: Mon, 13 Jan 2025 09:39:20 +0100 Subject: [PATCH] Fix always waving semitransparent liquid regression --- client/shaders/nodes_shader/opengl_fragment.glsl | 6 +++--- src/client/shader.cpp | 12 +++++++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/client/shaders/nodes_shader/opengl_fragment.glsl b/client/shaders/nodes_shader/opengl_fragment.glsl index 537f8b4a7fe1d..ed0404cea7175 100644 --- a/client/shaders/nodes_shader/opengl_fragment.glsl +++ b/client/shaders/nodes_shader/opengl_fragment.glsl @@ -51,7 +51,7 @@ centroid varying float nightRatio; varying highp vec3 eyeVec; #ifdef ENABLE_DYNAMIC_SHADOWS -#if (defined(ENABLE_WATER_REFLECTIONS) && MATERIAL_WAVING_LIQUID && ENABLE_WAVING_WATER) +#if (defined(ENABLE_WATER_REFLECTIONS) && MATERIAL_WATER_REFLECTIONS && ENABLE_WAVING_WATER) vec4 perm(vec4 x) { return mod(((x * 34.0) + 1.0) * x, 289.0); @@ -502,7 +502,7 @@ void main(void) vec3 viewVec = normalize(worldPosition + cameraOffset - cameraPosition); // Water reflections -#if (defined(ENABLE_WATER_REFLECTIONS) && MATERIAL_WAVING_LIQUID && ENABLE_WAVING_WATER) +#if (defined(ENABLE_WATER_REFLECTIONS) && MATERIAL_WATER_REFLECTIONS && ENABLE_WAVING_WATER) vec3 wavePos = worldPosition * vec3(2.0, 0.0, 2.0); float off = animationTimer * WATER_WAVE_SPEED * 10.0; wavePos.x /= WATER_WAVE_LENGTH * 3.0; @@ -530,7 +530,7 @@ void main(void) col.rgb += water_reflect_color * f_adj_shadow_strength * brightness_factor; #endif -#if (defined(ENABLE_NODE_SPECULAR) && !MATERIAL_WAVING_LIQUID) +#if (defined(ENABLE_NODE_SPECULAR) && !MATERIAL_WATER_REFLECTIONS) // Apply specular to blocks. if (dot(v_LightDirection, vNormal) < 0.0) { float intensity = 2.0 * (1.0 - (base.r * varColor.r)); diff --git a/src/client/shader.cpp b/src/client/shader.cpp index f953a2148ee07..290e3a572dc31 100644 --- a/src/client/shader.cpp +++ b/src/client/shader.cpp @@ -687,13 +687,23 @@ ShaderInfo ShaderSource::generateShader(const std::string &name, case TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT: case TILE_MATERIAL_WAVING_LIQUID_OPAQUE: case TILE_MATERIAL_WAVING_LIQUID_BASIC: - case TILE_MATERIAL_LIQUID_TRANSPARENT: shaders_header << "#define MATERIAL_WAVING_LIQUID 1\n"; break; default: shaders_header << "#define MATERIAL_WAVING_LIQUID 0\n"; break; } + switch (material_type) { + case TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT: + case TILE_MATERIAL_WAVING_LIQUID_OPAQUE: + case TILE_MATERIAL_WAVING_LIQUID_BASIC: + case TILE_MATERIAL_LIQUID_TRANSPARENT: + shaders_header << "#define MATERIAL_WATER_REFLECTIONS 1\n"; + break; + default: + shaders_header << "#define MATERIAL_WATER_REFLECTIONS 0\n"; + break; + } shaders_header << "#define ENABLE_WAVING_LEAVES " << g_settings->getBool("enable_waving_leaves") << "\n"; shaders_header << "#define ENABLE_WAVING_PLANTS " << g_settings->getBool("enable_waving_plants") << "\n";