commit 895d2f4f4805ecbad0a4fb6f9a55da6ee98fb2ef
Author: leszek <leszek@koltunski.pl>
Date:   Thu Apr 13 00:55:04 2017 +0100

    Separate the Postprocessing Effects to their own DistortedEffectsPostprocess queue.
    This partly breaks Multiblur (to be debugged)

diff --git a/src/main/java/org/distorted/examples/blur/BlurRenderer.java b/src/main/java/org/distorted/examples/blur/BlurRenderer.java
index c34a8af..8b8a34f 100644
--- a/src/main/java/org/distorted/examples/blur/BlurRenderer.java
+++ b/src/main/java/org/distorted/examples/blur/BlurRenderer.java
@@ -21,12 +21,13 @@ package org.distorted.examples.blur;
 
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
-import android.opengl.GLES30;
 import android.opengl.GLSurfaceView;
 
 import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
+import org.distorted.library.DistortedEffectsPostprocess;
+import org.distorted.library.DistortedNode;
 import org.distorted.library.DistortedScreen;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.EffectNames;
@@ -48,6 +49,7 @@ class BlurRenderer implements GLSurfaceView.Renderer
 {
     private GLSurfaceView mView;
     private DistortedEffects mEffects;
+    private DistortedEffectsPostprocess mPostEffects;
     private DistortedScreen mScreen;
     private MeshFlat mMesh;
     private Static1D mRadiusSta;
@@ -57,16 +59,17 @@ class BlurRenderer implements GLSurfaceView.Renderer
 
    BlurRenderer(GLSurfaceView v)
       {
-      mView    = v;
-      mMesh    = new MeshFlat(1,1);
-      mEffects = new DistortedEffects();
-      mScreen  = new DistortedScreen();
+      mView        = v;
+      mMesh        = new MeshFlat(1,1);
+      mEffects     = new DistortedEffects();
+      mPostEffects = new DistortedEffectsPostprocess();
+      mScreen      = new DistortedScreen();
 
       mRadiusSta = new Static1D(5);
       Dynamic1D radiusDyn = new Dynamic1D();
       radiusDyn.add(mRadiusSta);
 
-      mEffects.blur(radiusDyn);
+      mPostEffects.blur(radiusDyn);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -138,7 +141,9 @@ class BlurRenderer implements GLSurfaceView.Renderer
       texture.setTexture(bitmap);
 
       mScreen.detachAll();
-      mScreen.attach(texture,mEffects,mMesh);
+      DistortedNode node = new DistortedNode(texture,mEffects,mMesh);
+      node.setPostprocessEffects(mPostEffects);
+      mScreen.attach(node);
 
       DistortedEffects.enableEffect(EffectNames.BLUR);
 
diff --git a/src/main/java/org/distorted/examples/multiblur/MultiblurRenderer.java b/src/main/java/org/distorted/examples/multiblur/MultiblurRenderer.java
index f5ec012..6d06033 100644
--- a/src/main/java/org/distorted/examples/multiblur/MultiblurRenderer.java
+++ b/src/main/java/org/distorted/examples/multiblur/MultiblurRenderer.java
@@ -26,6 +26,8 @@ import android.opengl.GLSurfaceView;
 import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
+import org.distorted.library.DistortedEffectsPostprocess;
+import org.distorted.library.DistortedNode;
 import org.distorted.library.DistortedScreen;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.EffectNames;
@@ -66,6 +68,8 @@ class MultiblurRenderer implements GLSurfaceView.Renderer
     private GLSurfaceView mView;
     private DistortedTexture mTex1, mTex2;
     private DistortedEffects[] mEffects;
+    private DistortedNode[] mNode;
+    private DistortedEffectsPostprocess mPostEffects;
     private Static3D[]  mMoveVector;
     private Dynamic3D[] mMoveDynamic;
     private Static1D  mBlurVector;
@@ -88,7 +92,9 @@ class MultiblurRenderer implements GLSurfaceView.Renderer
       mBlurStatus = new boolean[NUM_OBJECTS];
       mMoveDynamic= new Dynamic3D[NUM_OBJECTS];
       mMoveVector = new Static3D[NUM_OBJECTS];
+      mNode       = new DistortedNode[NUM_OBJECTS];
       mEffects    = new DistortedEffects[NUM_OBJECTS];
+      mPostEffects= new DistortedEffectsPostprocess();
 
       for(int i=0; i<NUM_OBJECTS; i++)
         {
@@ -103,9 +109,7 @@ class MultiblurRenderer implements GLSurfaceView.Renderer
       mBlurDynamic= new Dynamic1D();
       mBlurVector = new Static1D(10);
       mBlurDynamic.add(mBlurVector);
-
-      mBlurStatus[0] = true;
-      mEffects[0].blur(mBlurDynamic);
+      mPostEffects.blur(mBlurDynamic);
 
       MeshCubes mesh = new MeshCubes(1,1,false);
 
@@ -124,7 +128,13 @@ class MultiblurRenderer implements GLSurfaceView.Renderer
       mScreen = new DistortedScreen();
 
       for(int i=0; i<NUM_OBJECTS; i++)
-        mScreen.attach( i<NUM_OBJECTS/2 ? mTex1:mTex2, mEffects[i], mesh);
+        {
+        mNode[i] = new DistortedNode(i < NUM_OBJECTS / 2 ? mTex1 : mTex2, mEffects[i], mesh);
+        mScreen.attach(mNode[i]);
+        }
+
+      mBlurStatus[0] = true;
+      mNode[0].setPostprocessEffects(mPostEffects);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -240,22 +250,22 @@ class MultiblurRenderer implements GLSurfaceView.Renderer
 
    void setChecked(int number, boolean checked)
      {
-     if( number>=0 && number<=7 && mEffects!=null )
+     if( number>=0 && number<=7 )
        {
        if( checked && !mBlurStatus[number] )
          {
          mBlurStatus[number] = true;
-         mEffects[number].blur(mBlurDynamic);
+         mNode[number].setPostprocessEffects(mPostEffects);
          }
        if( !checked && mBlurStatus[number] )
          {
          mBlurStatus[number] = false;
-         mEffects[number].abortEffects(EffectNames.BLUR);
+         mNode[number].setPostprocessEffects(null);
          }
        }
      else
        {
-       android.util.Log.e("renderer", "Error, number: "+number+" checked: "+checked+" mEffects="+ (mEffects==null ? "null":"not null") );
+       android.util.Log.e("renderer", "Error, number: "+number+" checked: "+checked );
        }
 
      //android.util.Log.d("renderer", "setting box "+number+" BLUR state to "+checked);
