commit 27cd6b982328e1683951eae92812bd20a00ca5b1
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Wed Mar 28 21:29:50 2018 +0100

    SSBO: more and more works...

diff --git a/src/main/java/org/distorted/library/main/DistortedEffects.java b/src/main/java/org/distorted/library/main/DistortedEffects.java
index e47a74d..da5ae76 100644
--- a/src/main/java/org/distorted/library/main/DistortedEffects.java
+++ b/src/main/java/org/distorted/library/main/DistortedEffects.java
@@ -274,6 +274,8 @@ public class DistortedEffects
     {
     float halfZ = halfW*mesh.zFactor;
 
+    android.util.Log.d("surface", "SurfaceID "+ surface.getID()+" transparent fragments: "+ surface.returnOldCounter() );
+
     mM.compute(currTime);
     mV.compute(currTime,halfW,halfH,halfZ);
     mF.compute(currTime,halfW,halfH);
@@ -285,8 +287,6 @@ public class DistortedEffects
     GLES31.glUniform1i(mMainTextureH, 0);
     GLES31.glUniform1i(mCountIndexH, surface.resetNewCounter() );
 
-    android.util.Log.d("surface", "SurfaceID "+ surface.getID()+" transparent fragments: "+ surface.returnCounter() );
-
     if( Distorted.GLSL >= 300 )
       {
       GLES31.glBindBuffer(GLES31.GL_ARRAY_BUFFER, mesh.mAttVBO[0]);
diff --git a/src/main/java/org/distorted/library/main/DistortedObjectCounter.java b/src/main/java/org/distorted/library/main/DistortedObjectCounter.java
index 9dbb03e..7276c6d 100644
--- a/src/main/java/org/distorted/library/main/DistortedObjectCounter.java
+++ b/src/main/java/org/distorted/library/main/DistortedObjectCounter.java
@@ -71,7 +71,7 @@ class DistortedObjectCounter
     mUsed.add(1);
     mFirstUnused++;
 
-    return size+1;
+    return size;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/library/main/DistortedOutputSurface.java b/src/main/java/org/distorted/library/main/DistortedOutputSurface.java
index 8be0e01..130fc8a 100644
--- a/src/main/java/org/distorted/library/main/DistortedOutputSurface.java
+++ b/src/main/java/org/distorted/library/main/DistortedOutputSurface.java
@@ -207,11 +207,19 @@ public static final int DEBUG_FPS = 1;
     recreateSurface();
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  void debugSSBO()
+    {
+    android.util.Log.d("SSBO", mIntBuffer.get(0)+" "+mIntBuffer.get(1)+" "
+        +mIntBuffer.get(2)+" "+mIntBuffer.get(3) );
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   int resetNewCounter()
     {
-    //mIntBuffer.put(BUFFERING*mSurfaceID+mLastIndex,0);
+    mIntBuffer.put(BUFFERING*mSurfaceID+mLastIndex,0);
     return BUFFERING*mSurfaceID + mLastIndex;
     }
 
@@ -227,13 +235,6 @@ public static final int DEBUG_FPS = 1;
     return ret;
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  int returnCounter()
-    {
-    return mIntBuffer.get(0);
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private void createProjection()
diff --git a/src/main/res/raw/main_fragment_shader.glsl b/src/main/res/raw/main_fragment_shader.glsl
index 6fa42a8..860a568 100644
--- a/src/main/res/raw/main_fragment_shader.glsl
+++ b/src/main/res/raw/main_fragment_shader.glsl
@@ -43,7 +43,7 @@ uniform vec4 fUniforms[2*NUM_FRAGMENT]; // i-th effect is 2 consecutive vec4's:
                                         // next describes the Region, i.e. area over which the effect is active.
 #endif    // NUM_FRAGMENT>0
 
-layout (std140,binding=0) buffer SSBO   // PER-SURFACE count of transparent fragments.
+layout (std430,binding=0) buffer SSBO   // PER-SURFACE count of transparent fragments.
   {                                     // Can be buffered, i.e. if we are for example
   int ssbocount[];                      // triple-buffered, then surfaceID=N uses 3
   };                                    // consecutive counts (N,N+1,N+2) during 3
@@ -73,7 +73,7 @@ void main()
     }
 #endif
 
-  ssbocount[0]=17;
+  ssbocount[u_currentIndex]= 27 + u_currentIndex;
 
   FRAG_COLOR = vec4(color.rgb * (1.0 + 7.0*v_Normal.z) * 0.125, color.a);
   }
\ No newline at end of file
