commit 90eb5f533a9c753010537b3b0f79382b1d5eb074
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue May 22 14:26:40 2018 +0100

    OIT: correction for blending in Pass4

diff --git a/src/main/res/raw/oit_render_fragment_shader.glsl b/src/main/res/raw/oit_render_fragment_shader.glsl
index c108e94..e412c80 100644
--- a/src/main/res/raw/oit_render_fragment_shader.glsl
+++ b/src/main/res/raw/oit_render_fragment_shader.glsl
@@ -43,11 +43,15 @@ vec4 convert(uint rgba)
   }
 
 //////////////////////////////////////////////////////////////////////////////////////////////
-// https://en.wikipedia.org/wiki/Alpha_compositing (premultiplied)
+// A over B (https://en.wikipedia.org/wiki/Alpha_compositing)
 
-vec4 blend(vec4 clr,vec4 srf)
+
+vec4 blend(vec4 A,vec4 B)
   {
-  return clr + (1.0 - clr.a) * vec4(srf.rgb * srf.a , srf.a);
+  float b = B.a * (1.0-A.a);
+  float a = A.a + b;
+
+  return vec4( (A.rgb*A.a + B.rgb*b)/a , a );
   }
 
 //////////////////////////////////////////////////////////////////////////////////////////////
