commit 371c43ca4644a286dcdc5735f82f8d21a0c8ffd8
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Apr 6 22:16:04 2018 +0100

    Improve the 'Triblur' app.

diff --git a/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java b/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java
index bdc2687..ceeb70a 100644
--- a/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java
+++ b/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java
@@ -73,7 +73,7 @@ class TriblurRenderer implements GLSurfaceView.Renderer
     private FragmentEffectChroma[] mChroma;
     private int mDistance;
     private boolean[] mBlurStatus;
-    private Static3D mMove, mScale, mCenter;
+    private Static3D mMove1, mMove2, mScale1, mScale2, mCenter;
 
     Static4D mQuat1, mQuat2;
     int mScreenMin;
@@ -83,7 +83,7 @@ class TriblurRenderer implements GLSurfaceView.Renderer
     TriblurRenderer(GLSurfaceView v)
       {
       mView = v;
-      mDistance = OBJ_SIZE/2;
+      mDistance = (int)(OBJ_SIZE*0.6f);
 
       MeshCubes mesh = new MeshCubes(1,1,1);
 
@@ -105,12 +105,16 @@ class TriblurRenderer implements GLSurfaceView.Renderer
 
       DistortedEffects[] effects= new DistortedEffects[NUM_OBJECTS];
 
-      mMove   = new Static3D(0,0,0);
-      mScale  = new Static3D(1,1,1);
+      mMove1  = new Static3D(0,0,0);
+      mMove2  = new Static3D(0,0,0);
+      mScale1 = new Static3D(1,1,1);
+      mScale2 = new Static3D(1.5f,1.5f,1.5f);
       mCenter = new Static3D(0,0,0);
 
-      MatrixEffectMove moveEffect = new MatrixEffectMove(mMove);
-      MatrixEffectScale scaleEffect = new MatrixEffectScale(mScale);
+      MatrixEffectMove moveEffect1 = new MatrixEffectMove(mMove1);
+      MatrixEffectMove moveEffect2 = new MatrixEffectMove(mMove2);
+      MatrixEffectScale scaleEffect1 = new MatrixEffectScale(mScale1);
+      MatrixEffectScale scaleEffect2 = new MatrixEffectScale(mScale2);
       MatrixEffectQuaternion quatEffect1 = new MatrixEffectQuaternion(mQuat1, mCenter);
       MatrixEffectQuaternion quatEffect2 = new MatrixEffectQuaternion(mQuat2, mCenter);
 
@@ -125,14 +129,14 @@ class TriblurRenderer implements GLSurfaceView.Renderer
 
         effects[i].apply(mBlur[i]);
         effects[i].apply(mChroma[i]);
-        effects[i].apply(moveEffect);
-        effects[i].apply(scaleEffect);
+        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]));
 
         mBlurStatus[i] = true;
-        mNode[i] = new DistortedNode(mTex, effects[i], mesh);
+        mNode[i] = new DistortedNode(mTex, effects[i], mesh );
         mScreen.attach(mNode[i]);
         }
 
@@ -204,10 +208,13 @@ class TriblurRenderer implements GLSurfaceView.Renderer
       {
       mScreenMin = width<height ? width:height;
 
-      float factor = 0.24f*mScreenMin/OBJ_SIZE;
-      mScale.set(factor,factor,factor);
+      float factor1 = 0.22f*mScreenMin/OBJ_SIZE;
+      float factor2 = 1.50f*factor1;
+      mScale1.set(factor1,factor1,factor1);
+      mScale2.set(factor2,factor2,factor2);
       mCenter.set((float)OBJ_SIZE/2, (float)OBJ_SIZE/2, -(float)OBJ_SIZE/2 );
-      mMove.set( (width -factor*OBJ_SIZE)/2 ,(height-factor*OBJ_SIZE)/2 ,0);
+      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);
       }
