summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorsfan5 <sfan5@live.de>2021-09-10 21:59:29 +0200
committersfan5 <sfan5@live.de>2021-09-17 18:13:50 +0200
commitea250ff5c57301b6ea3e529c811484c743c1fde1 (patch)
treead42a856641992b7a32cc799a1cda155f6bbe715 /client
parentd1e0f73b770165fbd889b8298dec79c83107862e (diff)
downloadminetest-ea250ff5c57301b6ea3e529c811484c743c1fde1.tar.gz
minetest-ea250ff5c57301b6ea3e529c811484c743c1fde1.tar.bz2
minetest-ea250ff5c57301b6ea3e529c811484c743c1fde1.zip
Fix GLES2 discard behaviour (texture transparency)
Diffstat (limited to 'client')
-rw-r--r--client/shaders/nodes_shader/opengl_fragment.glsl9
-rw-r--r--client/shaders/object_shader/opengl_fragment.glsl9
2 files changed, 12 insertions, 6 deletions
diff --git a/client/shaders/nodes_shader/opengl_fragment.glsl b/client/shaders/nodes_shader/opengl_fragment.glsl
index f85ca7b48..87ef9af7d 100644
--- a/client/shaders/nodes_shader/opengl_fragment.glsl
+++ b/client/shaders/nodes_shader/opengl_fragment.glsl
@@ -463,13 +463,16 @@ void main(void)
vec2 uv = varTexCoord.st;
vec4 base = texture2D(baseTexture, uv).rgba;
-#ifdef USE_DISCARD
// If alpha is zero, we can just discard the pixel. This fixes transparency
// on GPUs like GC7000L, where GL_ALPHA_TEST is not implemented in mesa,
// and also on GLES 2, where GL_ALPHA_TEST is missing entirely.
- if (base.a == 0.0) {
+#ifdef USE_DISCARD
+ if (base.a == 0.0)
+ discard;
+#endif
+#ifdef USE_DISCARD_REF
+ if (base.a < 0.5)
discard;
- }
#endif
color = base.rgb;
diff --git a/client/shaders/object_shader/opengl_fragment.glsl b/client/shaders/object_shader/opengl_fragment.glsl
index 8d6f57a44..9a0b90f15 100644
--- a/client/shaders/object_shader/opengl_fragment.glsl
+++ b/client/shaders/object_shader/opengl_fragment.glsl
@@ -328,13 +328,16 @@ void main(void)
vec2 uv = varTexCoord.st;
vec4 base = texture2D(baseTexture, uv).rgba;
-#ifdef USE_DISCARD
// If alpha is zero, we can just discard the pixel. This fixes transparency
// on GPUs like GC7000L, where GL_ALPHA_TEST is not implemented in mesa,
// and also on GLES 2, where GL_ALPHA_TEST is missing entirely.
- if (base.a == 0.0) {
+#ifdef USE_DISCARD
+ if (base.a == 0.0)
+ discard;
+#endif
+#ifdef USE_DISCARD_REF
+ if (base.a < 0.5)
discard;
- }
#endif
color = base.rgb;