From e0b420a1835d500a1d62253891d0e620cf90b0fd Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford Date: Wed, 27 Feb 2019 11:31:05 -0800 Subject: [PATCH] Use alpha test to avoid false touching-color --- src/shaders/sprite.frag | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/shaders/sprite.frag b/src/shaders/sprite.frag index 055e9a2..5517f35 100644 --- a/src/shaders/sprite.frag +++ b/src/shaders/sprite.frag @@ -45,6 +45,8 @@ uniform sampler2D u_skin; varying vec2 v_texCoord; +const float minAlpha = 1.0 / 255.0; + #if !defined(DRAW_MODE_silhouette) && (defined(ENABLE_color)) // Branchless color conversions based on code from: // http://www.chilliant.com/rgb2hsv.html by Ian Taylor @@ -155,9 +157,14 @@ void main() gl_FragColor = texture2D(u_skin, texcoord0); - #ifdef ENABLE_ghost - gl_FragColor.a *= u_ghost; - #endif // ENABLE_ghost + if (gl_FragColor.a < minAlpha) + { + discard; + } + + #ifdef ENABLE_ghost + gl_FragColor.a *= u_ghost; + #endif // ENABLE_ghost #ifdef DRAW_MODE_silhouette // switch to u_silhouetteColor only AFTER the alpha test