commit 2386a081097e7e70a6e64f76e46a5dd3906477f9
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Wed Jul 25 13:54:37 2018 +0100

    1. Hide internalQuality inside Postprocess effects.
    2. First step to turn markStencilAndDepth into a more generic Postprocessing 'preprocess'.

diff --git a/src/main/java/org/distorted/library/main/DistortedOutputSurface.java b/src/main/java/org/distorted/library/main/DistortedOutputSurface.java
index fba996a..0ee80d8 100644
--- a/src/main/java/org/distorted/library/main/DistortedOutputSurface.java
+++ b/src/main/java/org/distorted/library/main/DistortedOutputSurface.java
@@ -400,8 +400,8 @@ public abstract class DistortedOutputSurface extends DistortedSurface implements
 
   int renderChildren(long time, int numChildren, ArrayList<DistortedNode> children, int fbo, boolean oit)
     {
-    int quality=0, internalQuality = 0, numRenders = 0, bucketChange = 0;
-    DistortedNode child1, child2;
+    int quality=0, numRenders=0, bucketChange=0;
+    DistortedNode child;
     EffectQueuePostprocess lastQueue=null, currQueue;
     long lastBucket=0, currBucket;
 
@@ -422,8 +422,8 @@ public abstract class DistortedOutputSurface extends DistortedSurface implements
 
     for(int i=0; i<numChildren; i++)
       {
-      child1 = children.get(i);
-      currQueue = child1.getPostprocessQueue();
+      child = children.get(i);
+      currQueue = child.getPostprocessQueue();
       currBucket= currQueue.getID();
 
       if( currBucket==0 )
@@ -432,12 +432,12 @@ public abstract class DistortedOutputSurface extends DistortedSurface implements
 
         if( oit )
           {
-          numRenders += child1.drawOIT(time, this);
+          numRenders += child.drawOIT(time, this);
           GLES31.glMemoryBarrier(GLES31.GL_SHADER_STORAGE_BARRIER_BIT | GLES31.GL_ATOMIC_COUNTER_BARRIER_BIT);
           }
         else
           {
-          numRenders += child1.draw(time, this);
+          numRenders += child.draw(time, this);
           }
         }
       else
@@ -460,13 +460,7 @@ public abstract class DistortedOutputSurface extends DistortedSurface implements
             }
           else
             {
-            for(int j=bucketChange; j<i; j++)
-              {
-              child2 = children.get(j);
-              mBuffer[internalQuality].setAsOutput();
-              numRenders += child2.markStencilAndDepth(time,mBuffer[internalQuality],lastQueue);
-              }
-
+            for(int j=bucketChange; j<i; j++) numRenders += lastQueue.preprocess( mBuffer,children.get(j), time);
             numRenders += lastQueue.postprocess(mBuffer);
 
             if( oit )
@@ -481,23 +475,16 @@ public abstract class DistortedOutputSurface extends DistortedSurface implements
             mBuffer[quality].clearBuffer(fbo);
             }
 
-          internalQuality = currQueue.getInternalQuality();
-          quality         = currQueue.getQuality();
-          bucketChange    = i;
+          quality     = currQueue.getQuality();
+          bucketChange= i;
           }
 
         mBuffer[quality].setAsOutput(time);
-        child1.drawNoBlend(time,mBuffer[quality]);
+        child.drawNoBlend(time,mBuffer[quality]);
 
         if( i==numChildren-1 )
           {
-          for(int j=bucketChange; j<numChildren; j++)
-            {
-            child2 = children.get(j);
-            mBuffer[internalQuality].setAsOutput();
-            numRenders += child2.markStencilAndDepth(time,mBuffer[internalQuality],currQueue);
-            }
-
+          for(int j=bucketChange; j<numChildren; j++) numRenders += currQueue.preprocess(mBuffer,children.get(j), time);
           numRenders += currQueue.postprocess(mBuffer);
 
           if( oit )
diff --git a/src/main/java/org/distorted/library/main/EffectQueuePostprocess.java b/src/main/java/org/distorted/library/main/EffectQueuePostprocess.java
index d3bb295..f12e0bc 100644
--- a/src/main/java/org/distorted/library/main/EffectQueuePostprocess.java
+++ b/src/main/java/org/distorted/library/main/EffectQueuePostprocess.java
@@ -85,6 +85,7 @@ class EffectQueuePostprocess extends EffectQueue
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
+// TODO  (now only really works in case of 1 effect!)
 
   int getQuality()
     {
@@ -92,12 +93,27 @@ class EffectQueuePostprocess extends EffectQueue
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
+// TODO  (now only really works in case of 1 effect!)
 
-  int getInternalQuality()
+  private int getInternalQuality()
     {
     return mNumEffects>0 ? ((PostprocessEffect)mEffects[0]).getInternalQuality() : 0;
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  int preprocess(DistortedOutputSurface[] buffers, DistortedNode node, long time)
+    {
+    int numRenders = 0;
+    int quality = getInternalQuality();
+
+    buffers[quality].setAsOutput();
+
+    numRenders += node.markStencilAndDepth(time,buffers[quality],this);
+
+    return numRenders;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   int postprocess(DistortedOutputSurface[] buffers)
