commit fd2db9572ed1de9a2010c0c7bc37eba440343407
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Fri Apr 21 15:15:48 2017 +0100

    1) bugfix computing Gaussian BLUR kernel (for odd radii, the last offset was incorrectly computed)
    2) introduce more advanced method of detecting BLUR halo (compute depths in a new way)

diff --git a/src/main/java/org/distorted/library/EffectQueuePostprocess.java b/src/main/java/org/distorted/library/EffectQueuePostprocess.java
index 6631fe0..7674470 100644
--- a/src/main/java/org/distorted/library/EffectQueuePostprocess.java
+++ b/src/main/java/org/distorted/library/EffectQueuePostprocess.java
@@ -245,7 +245,7 @@ class EffectQueuePostprocess extends EffectQueue
       if( radius%2 == 1 )
         {
         int index = offset + radius/2 +1;
-        offsetsCache[index]=mOffsets[radius];
+        offsetsCache[index]=radius;
         weightsCache[index]=mWeights[radius];
         }
       }
diff --git a/src/main/res/raw/blur2_fragment_shader.glsl b/src/main/res/raw/blur2_fragment_shader.glsl
index 9138d6c..0717552 100644
--- a/src/main/res/raw/blur2_fragment_shader.glsl
+++ b/src/main/res/raw/blur2_fragment_shader.glsl
@@ -40,7 +40,19 @@ uniform int u_Radius;
 
 void main()
   {
-  gl_FragDepth = TEXTURE(u_DepthTexture,v_TexCoordinate).r;
+  float depth = TEXTURE(u_DepthTexture,v_TexCoordinate).r;
+
+  if( u_Radius>1 )
+    {
+    float offset = u_Offsets[u_Radius];
+
+    depth = min(depth, TEXTURE(u_DepthTexture,vec2(v_TexCoordinate.x,v_TexCoordinate.y+offset)).r);
+    depth = min(depth, TEXTURE(u_DepthTexture,vec2(v_TexCoordinate.x,v_TexCoordinate.y-offset)).r);
+    depth = min(depth, TEXTURE(u_DepthTexture,vec2(v_TexCoordinate.x+offset,v_TexCoordinate.y)).r);
+    depth = min(depth, TEXTURE(u_DepthTexture,vec2(v_TexCoordinate.x-offset,v_TexCoordinate.y)).r);
+    }
+
+  gl_FragDepth = depth;
 
   vec4 pixel= TEXTURE(u_ColorTexture,v_TexCoordinate) * u_Weights[0];
 
