aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorx2048 <codeforsmile@gmail.com>2023-03-11 13:49:40 +0100
committerGitHub <noreply@github.com>2023-03-11 13:49:40 +0100
commit1de8a1e962098b94154111c7aafe18c4aab74fc9 (patch)
treea63ae3f1b81d691b71fb73f4f61f2b9302351858
parentad41d0af9d80568e50aac2c9512dcb8ca4f10060 (diff)
downloadminetest-1de8a1e962098b94154111c7aafe18c4aab74fc9.tar.xz
Fix missing shadows when sun tilt is zero
-rw-r--r--client/shaders/nodes_shader/opengl_fragment.glsl2
-rw-r--r--client/shaders/nodes_shader/opengl_vertex.glsl2
-rw-r--r--client/shaders/object_shader/opengl_fragment.glsl2
-rw-r--r--client/shaders/object_shader/opengl_vertex.glsl2
4 files changed, 4 insertions, 4 deletions
diff --git a/client/shaders/nodes_shader/opengl_fragment.glsl b/client/shaders/nodes_shader/opengl_fragment.glsl
index 1f7d98069..d26806fb0 100644
--- a/client/shaders/nodes_shader/opengl_fragment.glsl
+++ b/client/shaders/nodes_shader/opengl_fragment.glsl
@@ -392,7 +392,7 @@ void main(void)
float distance_rate = (1.0 - pow(clamp(2.0 * length(posLightSpace.xy - 0.5),0.0,1.0), 10.0));
if (max(abs(posLightSpace.x - 0.5), abs(posLightSpace.y - 0.5)) > 0.5)
distance_rate = 0.0;
- float f_adj_shadow_strength = max(adj_shadow_strength-mtsmoothstep(0.9,1.1, posLightSpace.z),0.0);
+ float f_adj_shadow_strength = max(adj_shadow_strength - mtsmoothstep(0.9, 1.1, posLightSpace.z),0.0);
if (distance_rate > 1e-7) {
diff --git a/client/shaders/nodes_shader/opengl_vertex.glsl b/client/shaders/nodes_shader/opengl_vertex.glsl
index a00deb660..47f79d68f 100644
--- a/client/shaders/nodes_shader/opengl_vertex.glsl
+++ b/client/shaders/nodes_shader/opengl_vertex.glsl
@@ -241,7 +241,7 @@ void main(void)
float pFactor = getPerspectiveFactor(getRelativePosition(m_ShadowViewProj * mWorld * shadow_pos));
if (f_normal_length > 0.0) {
nNormal = normalize(vNormal);
- cosLight = dot(nNormal, -v_LightDirection);
+ cosLight = max(1e-5, dot(nNormal, -v_LightDirection));
float sinLight = pow(1 - pow(cosLight, 2.0), 0.5);
normalOffsetScale = 2.0 * pFactor * pFactor * sinLight * min(f_shadowfar, 500.0) /
xyPerspectiveBias1 / f_textureresolution;
diff --git a/client/shaders/object_shader/opengl_fragment.glsl b/client/shaders/object_shader/opengl_fragment.glsl
index 662d0c865..4e80e7fbc 100644
--- a/client/shaders/object_shader/opengl_fragment.glsl
+++ b/client/shaders/object_shader/opengl_fragment.glsl
@@ -393,7 +393,7 @@ void main(void)
float distance_rate = (1.0 - pow(clamp(2.0 * length(posLightSpace.xy - 0.5),0.0,1.0), 10.0));
if (max(abs(posLightSpace.x - 0.5), abs(posLightSpace.y - 0.5)) > 0.5)
distance_rate = 0.0;
- float f_adj_shadow_strength = max(adj_shadow_strength-mtsmoothstep(0.9,1.1, posLightSpace.z),0.0);
+ float f_adj_shadow_strength = max(adj_shadow_strength - mtsmoothstep(0.9, 1.1, posLightSpace.z),0.0);
if (distance_rate > 1e-7) {
diff --git a/client/shaders/object_shader/opengl_vertex.glsl b/client/shaders/object_shader/opengl_vertex.glsl
index dc9c70cdf..4a28ff714 100644
--- a/client/shaders/object_shader/opengl_vertex.glsl
+++ b/client/shaders/object_shader/opengl_vertex.glsl
@@ -146,7 +146,7 @@ void main(void)
float pFactor = getPerspectiveFactor(getRelativePosition(m_ShadowViewProj * mWorld * inVertexPosition));
if (f_normal_length > 0.0) {
nNormal = normalize(vNormal);
- cosLight = dot(nNormal, -v_LightDirection);
+ cosLight = max(1e-5, dot(nNormal, -v_LightDirection));
float sinLight = pow(1 - pow(cosLight, 2.0), 0.5);
normalOffsetScale = 0.1 * pFactor * pFactor * sinLight * min(f_shadowfar, 500.0) /
xyPerspectiveBias1 / f_textureresolution;