commit d7413405873da22ae06aa5bc82e1f038429309c1
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Thu May 10 13:30:58 2018 +0100

    OIT: lots of progress on all fronts. Still a few bugs to solve though!

diff --git a/src/main/java/org/distorted/examples/transparency/TransparencyRenderer.java b/src/main/java/org/distorted/examples/transparency/TransparencyRenderer.java
index 16b0b22..00e8c3c 100644
--- a/src/main/java/org/distorted/examples/transparency/TransparencyRenderer.java
+++ b/src/main/java/org/distorted/examples/transparency/TransparencyRenderer.java
@@ -84,8 +84,9 @@ class TransparencyRenderer implements GLSurfaceView.Renderer
       mNode         = new DistortedNode[NUM_OBJECTS];
       mTex          = new DistortedTexture[NUM_OBJECTS];
 
-      FragmentEffectAlpha[] alpha= new FragmentEffectAlpha[NUM_OBJECTS];
-      DistortedEffects[] effects = new DistortedEffects[NUM_OBJECTS];
+      FragmentEffectAlpha[] alpha  = new FragmentEffectAlpha[NUM_OBJECTS];
+      DistortedEffects[] effects   = new DistortedEffects[NUM_OBJECTS];
+      PostprocessEffectBlur[] blur = new PostprocessEffectBlur[NUM_OBJECTS];
 
       mMove  = new Static3D(0,0,0);
       mScale = new Static3D(1.0f,1.0f,1.0f);
@@ -96,7 +97,6 @@ class TransparencyRenderer implements GLSurfaceView.Renderer
       MatrixEffectQuaternion quatEffect1 = new MatrixEffectQuaternion(mQuat1, mCenter);
       MatrixEffectQuaternion quatEffect2 = new MatrixEffectQuaternion(mQuat2, mCenter);
 
-      PostprocessEffectBlur blur = new PostprocessEffectBlur(new Static1D(0));
 
       for(int i=0; i<NUM_OBJECTS; i++)
         {
@@ -104,9 +104,10 @@ class TransparencyRenderer implements GLSurfaceView.Renderer
         mMoveVector[i]   = new Static3D(0,0,0);
         mAlphaVector[i]  = new Static1D(0.5f);
         alpha[i]         = new FragmentEffectAlpha(mAlphaVector[i]);
+        blur[i]          = new PostprocessEffectBlur(new Static1D(0));
         effects[i]       = new DistortedEffects();
 
-        effects[i].apply(blur);
+        effects[i].apply(blur[i]);
         effects[i].apply(alpha[i]);
         effects[i].apply(moveEffect);
         effects[i].apply(scaleEffect);
diff --git a/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java b/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java
index 62f169d..dffce8d 100644
--- a/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java
+++ b/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java
@@ -54,9 +54,9 @@ class TriblurRenderer implements GLSurfaceView.Renderer
 
     private static final int[] OBJECTS =
         {
-        -1, 0, 0, 255,   0,  0,  // x,y,z, R,G,B
-         0, 0, 0, 255, 255,  0,  //
-        +1, 0, 0,   0, 255,  0,  //
+        -150, 0, 0,   255,   0,  0,  // x,y,z, R,G,B
+           0, 0, 0,   255, 255,  0,  //
+        +150, 0, 0,     0, 255,  0,  //
         };
 
     private static final int NUM_OBJECTS = OBJECTS.length/NUM;
@@ -65,13 +65,9 @@ class TriblurRenderer implements GLSurfaceView.Renderer
     private GLSurfaceView mView;
     private DistortedTexture mTex;
     private DistortedNode[] mNode;
-    private Static3D[]  mMoveVector;
-    private Static3D[]  mChromaVector;
     private Static1D[]  mBlurVector;
     private DistortedScreen mScreen;
     private PostprocessEffectBlur[] mBlur;
-    private FragmentEffectChroma[] mChroma;
-    private int mDistance;
     private boolean[] mBlurStatus;
     private Static3D mMove1, mMove2, mScale1, mScale2, mCenter;
 
@@ -83,7 +79,6 @@ class TriblurRenderer implements GLSurfaceView.Renderer
     TriblurRenderer(GLSurfaceView v)
       {
       mView = v;
-      mDistance = (int)(OBJ_SIZE*0.6f);
 
       MeshCubes mesh = new MeshCubes(1,1,1);
 
@@ -96,12 +91,13 @@ class TriblurRenderer implements GLSurfaceView.Renderer
       mScreen.setDebug(DistortedScreen.DEBUG_FPS);
 
       mBlurStatus   = new boolean[NUM_OBJECTS];
-      mMoveVector   = new Static3D[NUM_OBJECTS];
-      mChromaVector = new Static3D[NUM_OBJECTS];
       mBlurVector   = new Static1D[NUM_OBJECTS];
       mNode         = new DistortedNode[NUM_OBJECTS];
       mBlur         = new PostprocessEffectBlur[NUM_OBJECTS];
-      mChroma       = new FragmentEffectChroma[NUM_OBJECTS];
+
+      FragmentEffectChroma[] chroma= new FragmentEffectChroma[NUM_OBJECTS];
+      Static3D[] chromaVector      = new Static3D[NUM_OBJECTS];
+      Static3D[] moveVector        = new Static3D[NUM_OBJECTS];
 
       DistortedEffects[] effects= new DistortedEffects[NUM_OBJECTS];
 
@@ -120,20 +116,20 @@ class TriblurRenderer implements GLSurfaceView.Renderer
 
       for(int i=0; i<NUM_OBJECTS; i++)
         {
-        mMoveVector[i]   = new Static3D(0,0,0);
-        mChromaVector[i] = new Static3D(OBJECTS[NUM*i+3],OBJECTS[NUM*i+4],OBJECTS[NUM*i+5]);
+        moveVector[i]    = new Static3D(OBJECTS[NUM*i  ], OBJECTS[NUM*i+1], OBJECTS[NUM*i+2]);
+        chromaVector[i]  = new Static3D(OBJECTS[NUM*i+3], OBJECTS[NUM*i+4], OBJECTS[NUM*i+5]);
         mBlurVector[i]   = new Static1D(10);
         mBlur[i]         = new PostprocessEffectBlur(mBlurVector[i]);
-        mChroma[i]       = new FragmentEffectChroma( new Static1D(0.3f), mChromaVector[i]);
+        chroma[i]        = new FragmentEffectChroma( new Static1D(0.3f), chromaVector[i]);
         effects[i]       = new DistortedEffects();
 
         effects[i].apply(mBlur[i]);
-        effects[i].apply(mChroma[i]);
+        effects[i].apply(chroma[i]);
         effects[i].apply( (i==0||i==NUM_OBJECTS-1) ?  moveEffect1 :  moveEffect2 );
         effects[i].apply( (i==0||i==NUM_OBJECTS-1) ? scaleEffect1 : scaleEffect2 );
         effects[i].apply(quatEffect1);
         effects[i].apply(quatEffect2);
-        effects[i].apply(new MatrixEffectMove(mMoveVector[i]));
+        effects[i].apply(new MatrixEffectMove(moveVector[i]));
 
         mBlurStatus[i] = true;
         mNode[i] = new DistortedNode(mTex, effects[i], mesh );
@@ -215,22 +211,9 @@ class TriblurRenderer implements GLSurfaceView.Renderer
       mCenter.set((float)OBJ_SIZE/2, (float)OBJ_SIZE/2, -(float)OBJ_SIZE/2 );
       mMove1.set( (width -factor1*OBJ_SIZE)/2 ,(height-factor1*OBJ_SIZE)/2 ,0);
       mMove2.set( (width -factor2*OBJ_SIZE)/2 ,(height-factor2*OBJ_SIZE)/2 ,0);
-      computeMoveVectors();
       mScreen.resize(width, height);
       }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-    private void computeMoveVectors()
-      {
-      float size= 0.026f*OBJ_SIZE*mDistance;
-
-      for(int i=0; i<NUM_OBJECTS; i++)
-        {
-        mMoveVector[i].set(size*OBJECTS[NUM*i], size*OBJECTS[NUM*i+1], size*OBJECTS[NUM*i+2]);
-        }
-      }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     void setRange(int object, int range)
