commit 513b2e9ca979be7c512d4246fbd68a577e856a1a
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Mon May 4 00:26:50 2020 +0100

    A lot of changes.
    
    1) main vertex shader: remove support for degree_object. This functionality will hopefully come back when we introduce other than circular regions.
    2) MeshBase: remove the need to set a Bounding box (this is the point of the whole thing - we wanted to get rid of this so that the advances in MeshJoined will be easier)
    3) Set ground for removing the MeshBase.setStretch / getStretch (another thing needed to advance MeshJoined )
    4) since we removed the Bounding box, we need to change the DEFORN effect to have 1 additional parameter, the 'radius' which takes over the function of the bounding box in the vertex shader.
    5) since the'res no bounding box, simplify the postprocessing Halo (remove EffectQueueMatrix.magnify() )
    6) adjust applications.
    
    After this we will hopefully be ready to introduce MeshBase.preApply(VertexEffect), i.e. bending several simple Meshes with any VertexEffect - including the freshly-introduced PseudoMatrix-Vertex effects like VertexEffectScale - and then combining them into one MeshJoined.

diff --git a/src/main/java/org/distorted/examples/check/CheckRenderer.java b/src/main/java/org/distorted/examples/check/CheckRenderer.java
index 19248ef..b1f5f8c 100644
--- a/src/main/java/org/distorted/examples/check/CheckRenderer.java
+++ b/src/main/java/org/distorted/examples/check/CheckRenderer.java
@@ -66,6 +66,7 @@ class CheckRenderer implements GLSurfaceView.Renderer
     private DistortedScreen mScreen;
     private int mObjHeight, mObjWidth;
     private Static3D mScale, mSwirl1, mSwirl2, mDeform1, mDeform2;
+    private Static1D mRadius;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -88,6 +89,8 @@ class CheckRenderer implements GLSurfaceView.Renderer
       mDeform2= new Static3D(0,0,0);
       mScale  = new Static3D(1,1,1);
 
+      mRadius = new Static1D(0);
+
       mEffects = new DistortedEffects();
       mEffects.apply(new MatrixEffectScale(mScale));
 
@@ -110,7 +113,7 @@ class CheckRenderer implements GLSurfaceView.Renderer
       dDeform.add(mDeform1);
       dDeform.add(mDeform2);
 
-      if( !mEffects.apply( new VertexEffectDeform(dDeform,new Static3D(0,0,0)) ) )
+      if( !mEffects.apply( new VertexEffectDeform(dDeform, mRadius, new Static3D(0,0,0)) ) )
         {
         Log.e("Check", "Failed to add Deform effect!");
         }
@@ -175,6 +178,8 @@ class CheckRenderer implements GLSurfaceView.Renderer
       mObjHeight = bitmap.getHeight();
       mObjWidth  = bitmap.getWidth();
 
+      mRadius.set(mObjWidth/2);
+
       if( mTexture==null ) mTexture = new DistortedTexture();
       mTexture.setTexture(bitmap);
 
diff --git a/src/main/java/org/distorted/examples/deform/DeformRenderer.java b/src/main/java/org/distorted/examples/deform/DeformRenderer.java
index e35dd34..c8b1c25 100644
--- a/src/main/java/org/distorted/examples/deform/DeformRenderer.java
+++ b/src/main/java/org/distorted/examples/deform/DeformRenderer.java
@@ -36,6 +36,7 @@ import org.distorted.library.mesh.MeshRectangles;
 
 import org.distorted.library.message.EffectListener;
 import org.distorted.library.type.Dynamic3D;
+import org.distorted.library.type.Static1D;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
 
@@ -140,12 +141,14 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener
       mScreen = new DistortedScreen();
       mScreen.showFPS();
 
-      mMovingDistort   = new VertexEffectDistort( movingDistortDynamic  , mTouchPoint, mRegion);
-      mMovingDeform    = new VertexEffectDeform ( movingDeformDynamic   , mTouchPoint, mRegion);
-      mMovingShear     = new MatrixEffectShear  ( movingShearDynamic    , mTouchPoint         );
-      mReleasedDistort = new VertexEffectDistort( releasedDistortDynamic, mTouchPoint, mRegion);
-      mReleasedDeform  = new VertexEffectDeform ( releasedDeformDynamic , mTouchPoint, mRegion);
-      mReleasedShear   = new MatrixEffectShear  ( releasedShearDynamic  , mTouchPoint         );
+      Static1D deformRadius = new Static1D(0.5f);
+
+      mMovingDistort   = new VertexEffectDistort( movingDistortDynamic  ,               mTouchPoint, mRegion);
+      mMovingDeform    = new VertexEffectDeform ( movingDeformDynamic   , deformRadius, mTouchPoint, mRegion);
+      mMovingShear     = new MatrixEffectShear  ( movingShearDynamic    ,               mTouchPoint         );
+      mReleasedDistort = new VertexEffectDistort( releasedDistortDynamic,               mTouchPoint, mRegion);
+      mReleasedDeform  = new VertexEffectDeform ( releasedDeformDynamic , deformRadius, mTouchPoint, mRegion);
+      mReleasedShear   = new MatrixEffectShear  ( releasedShearDynamic  ,               mTouchPoint         );
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/differentbitmaps/DifferentBitmapsRenderer.java b/src/main/java/org/distorted/examples/differentbitmaps/DifferentBitmapsRenderer.java
index 4262f8d..beffcf7 100644
--- a/src/main/java/org/distorted/examples/differentbitmaps/DifferentBitmapsRenderer.java
+++ b/src/main/java/org/distorted/examples/differentbitmaps/DifferentBitmapsRenderer.java
@@ -69,7 +69,8 @@ class DifferentBitmapsRenderer implements GLSurfaceView.Renderer
       Dynamic3D dDistort = new Dynamic3D(3000,0.0f);
       dDistort.add(new Static3D( 25,0,0));
       dDistort.add(new Static3D(-25,0,0));
-      Static3D mPoint = new Static3D(0,-60,0);
+      Static3D point = new Static3D(0,-60,0);
+      Static4D region= new Static4D(0,0,0,300);
 
       mEffects = new DistortedEffects[NUM];
       mEffects[0] = new DistortedEffects();
@@ -78,8 +79,8 @@ class DifferentBitmapsRenderer implements GLSurfaceView.Renderer
 
       // Add the effects only to the first queue - all VERTEX and FRAGMENT effects are shared!
       // (Matrix effect cannot be shared as we have to display each Texture in a different location)
-      VertexEffectSink sink = new VertexEffectSink(new Static1D(8), mPoint, new Static4D(0,0,0,80));
-      VertexEffectDistort distort = new VertexEffectDistort(dDistort,mPoint);
+      VertexEffectSink sink = new VertexEffectSink(new Static1D(8), point, new Static4D(0,0,0,80));
+      VertexEffectDistort distort = new VertexEffectDistort(dDistort,point,region);
       mEffects[0].apply(sink);    // enlarge the nose
       mEffects[0].apply(distort); // keep moving the whole bitmap left and right.
 
diff --git a/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java b/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java
index 8ae2d14..2359523 100644
--- a/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java
+++ b/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java
@@ -70,8 +70,9 @@ class DifferentEffectsRenderer implements GLSurfaceView.Renderer
       // mEffects[0] effects
       Static3D pLeft = new Static3D(214 - 594/2, 394 - 600/2, 0);
       Static3D pRight= new Static3D(390 - 594/2, 388 - 600/2, 0);
-      Static4D RegionEye = new Static4D(0,0,0,60);
-      
+      Static4D RegionEye = new Static4D(0,0,0, 60);
+      Static4D RegionCen = new Static4D(0,0,0,300);
+
       // mEffects[1] effects
       Dynamic3D dyn = new Dynamic3D(1000,0.0f);
       dyn.add(new Static3D( 50,0,0));
@@ -90,7 +91,7 @@ class DifferentEffectsRenderer implements GLSurfaceView.Renderer
 
       VertexEffectSink sinkL = new VertexEffectSink(sink, pLeft , RegionEye);
       VertexEffectSink sinkR = new VertexEffectSink(sink, pRight, RegionEye);
-      VertexEffectDistort distort = new VertexEffectDistort(dyn,pNose1);
+      VertexEffectDistort distort = new VertexEffectDistort(dyn,pNose1, RegionCen);
 
       mEffects[0].apply(sinkL);
       mEffects[0].apply(sinkR);
diff --git a/src/main/java/org/distorted/examples/earth/EarthRenderer.java b/src/main/java/org/distorted/examples/earth/EarthRenderer.java
index 913849f..49b31d5 100644
--- a/src/main/java/org/distorted/examples/earth/EarthRenderer.java
+++ b/src/main/java/org/distorted/examples/earth/EarthRenderer.java
@@ -210,7 +210,8 @@ class EarthRenderer implements GLSurfaceView.Renderer
         case DISTORT          : vector = new Static3D( +x*mObjWidth/CORR, +y*mObjHeight/CORR, +z*mObjDepth/CORR);
                                 effect = new VertexEffectDistort(   vector, center, mRegionV); break;
         case DEFORM           : vector = new Static3D( +x*mObjWidth/CORR, +y*mObjHeight/CORR, +z*mObjDepth/CORR);
-                                effect = new VertexEffectDeform (   vector, center, mRegionV); break;
+                                Static1D radius = new Static1D(mObjWidth/2);
+                                effect = new VertexEffectDeform (   vector, radius, center, mRegionV); break;
         case SINK             : effect = new VertexEffectSink   (mStrength, center, mRegionV); break;
         case PINCH            : float lat = latitude>0 ? (float)(-Math.PI/2 + latitude) : (float)(Math.PI/2 + latitude);
                                 float lon = longitude;
diff --git a/src/main/java/org/distorted/examples/generic/GenericEffect.java b/src/main/java/org/distorted/examples/generic/GenericEffect.java
index 7edb8b5..6787e9f 100644
--- a/src/main/java/org/distorted/examples/generic/GenericEffect.java
+++ b/src/main/java/org/distorted/examples/generic/GenericEffect.java
@@ -118,17 +118,17 @@ class GenericEffect implements SeekBar.OnSeekBarChangeListener
       case SCALE            : effect = new MatrixEffectScale       (mDyn3)                   ; break;
       case SHEAR            : effect = new MatrixEffectShear       (mDyn3, mCenterDyn)       ; break;
 
-      case DISTORT          : effect = new VertexEffectDistort     (mDyn3, mCenterDyn, mRegion4Dyn); break;
-      case DEFORM           : effect = new VertexEffectDeform      (mDyn3, mCenterDyn, mRegion4Dyn); break;
-      case SINK             : effect = new VertexEffectSink        (mDyn1, mCenterDyn, mRegion4Dyn); break;
-      case PINCH            : effect = new VertexEffectPinch       (mDyn3, mCenterDyn, mRegion4Dyn); break;
-      case SWIRL            : effect = new VertexEffectSwirl       (mDyn1, mCenterDyn, mRegion4Dyn); break;
-      case WAVE             : effect = new VertexEffectWave        (mDyn5, mCenterDyn, mRegion4Dyn); break;
-      case VERTEX_MOVE      : effect = new VertexEffectMove        (mDyn3)                         ; break;
-      case VERTEX_QUATERNION: effect = new VertexEffectQuaternion  (mDyn4, mCenterDyn)             ; break;
-      case VERTEX_ROTATE    : effect = new VertexEffectRotate      (mDyn1, mDyn3, mCenterDyn)      ; break;
-      case VERTEX_SCALE     : effect = new VertexEffectScale       (mDyn3)                         ; break;
-      case VERTEX_SHEAR     : effect = new VertexEffectShear       (mDyn3, mCenterDyn)             ; break;
+      case DISTORT          : effect = new VertexEffectDistort     (mDyn3, mCenterDyn, mRegion4Dyn)              ; break;
+      case DEFORM           : effect = new VertexEffectDeform      (mDyn3, mDyn1, mCenterDyn, mRegion4Dyn)       ; break;
+      case SINK             : effect = new VertexEffectSink        (mDyn1, mCenterDyn, mRegion4Dyn)              ; break;
+      case PINCH            : effect = new VertexEffectPinch       (mDyn3, mCenterDyn, mRegion4Dyn)              ; break;
+      case SWIRL            : effect = new VertexEffectSwirl       (mDyn1, mCenterDyn, mRegion4Dyn)              ; break;
+      case WAVE             : effect = new VertexEffectWave        (mDyn5, mCenterDyn, mRegion4Dyn)              ; break;
+      case VERTEX_MOVE      : effect = new VertexEffectMove        (mDyn3)                                       ; break;
+      case VERTEX_QUATERNION: effect = new VertexEffectQuaternion  (mDyn4, mCenterDyn)                           ; break;
+      case VERTEX_ROTATE    : effect = new VertexEffectRotate      (mDyn1, mDyn3, mCenterDyn)                    ; break;
+      case VERTEX_SCALE     : effect = new VertexEffectScale       (mDyn3)                                       ; break;
+      case VERTEX_SHEAR     : effect = new VertexEffectShear       (mDyn3, mCenterDyn)                           ; break;
 
       case ALPHA            : effect = new FragmentEffectAlpha     (mDyn1,        mCenterDyn, mRegion3Dyn, false); break;
       case SMOOTH_ALPHA     : effect = new FragmentEffectAlpha     (mDyn1,        mCenterDyn, mRegion3Dyn, true ); break;
@@ -207,13 +207,20 @@ class GenericEffect implements SeekBar.OnSeekBarChangeListener
       ///////////////////////////////////////////////////////////////////////////////////////
 
       case VERTEX_MOVE      :
-      case DISTORT          :
-      case DEFORM           : float ld = mAct.get().getWidth()/50.0f;
+      case DISTORT          : float ld = mAct.get().getWidth()/50.0f;
                               float xd = (mInter[0]-50)*ld;
                               float yd = (mInter[1]-50)*ld;
                               float zd = (mInter[2]-50)*ld;
                               mSta3.set(xd,yd,zd);
                               break;
+      case DEFORM           : float le = mAct.get().getWidth()/50.0f;
+                              float xe = (mInter[0]-50)*le;
+                              float ye = (mInter[1]-50)*le;
+                              float ze = (mInter[2]-50)*le;
+                              mSta3.set(xe,ye,ze);
+                              float re = (mInter[3])*le;
+                              mSta1.set(re);
+                              break;
       case WAVE             : float l2 = mAct.get().getWidth()/50.0f;
                               float x2 = (mInter[0]-50)*l2;
                               float y2 = (mInter[1]-50)*l2;
diff --git a/src/main/java/org/distorted/examples/movingeffects/MovingEffectsSurfaceView.java b/src/main/java/org/distorted/examples/movingeffects/MovingEffectsSurfaceView.java
index 564a4c6..c700a54 100644
--- a/src/main/java/org/distorted/examples/movingeffects/MovingEffectsSurfaceView.java
+++ b/src/main/java/org/distorted/examples/movingeffects/MovingEffectsSurfaceView.java
@@ -66,6 +66,7 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
     private int mCurrEffect;
     private int mSize1, mSize2;
     private Static3D mDeform;
+    private Static1D mRadius;
 
     private MovingEffectsRenderer mRenderer;
 
@@ -88,6 +89,7 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
       
       mCenter = new Dynamic3D(LOOP_TIME,0.0f);
       mDeform = new Static3D(0,0,0.15f);
+      mRadius = new Static1D(0);
 
       if(!isInEditMode())
         {
@@ -103,7 +105,7 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
         Static3D regionFrag = new Static3D(0.15f,0.15f,0.15f);
         Static4D regionVert = new Static4D(0,0,0,0.15f);
 
-        mEffectDeform  = new VertexEffectDeform  ( mDeform          , mCenter, regionVert);
+        mEffectDeform  = new VertexEffectDeform  ( mDeform          , mRadius, mCenter, regionVert);
         mEffectSink    = new VertexEffectSink    (new Static1D(10)  , mCenter, regionVert);
         mEffectSwirl   = new VertexEffectSwirl   (new Static1D(30)  , mCenter, regionVert);
         mEffectAlpha   = new FragmentEffectAlpha (new Static1D(0.5f), mCenter, regionFrag, true);
@@ -120,6 +122,8 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
       mScrWidth  = width;
       mScrHeight = height;
 
+      mRadius.set(max/2);
+
       mSize1 = max/200;
       mSize2 = max/80;
       }
diff --git a/src/main/java/org/distorted/examples/movingglow/MovingGlowRenderer.java b/src/main/java/org/distorted/examples/movingglow/MovingGlowRenderer.java
index afbc962..db63218 100644
--- a/src/main/java/org/distorted/examples/movingglow/MovingGlowRenderer.java
+++ b/src/main/java/org/distorted/examples/movingglow/MovingGlowRenderer.java
@@ -108,7 +108,7 @@ class MovingGlowRenderer implements GLSurfaceView.Renderer,EffectListener
 
       Dynamic1D radiusDyn = new Dynamic1D(FLASH_TIME,1.0f);
       radiusDyn.add(new Static1D( 0));
-      radiusDyn.add(new Static1D(50));
+      radiusDyn.add(new Static1D(70));
 
       for(int leaf=0; leaf<NUM_LEAVES; leaf++)
         {
diff --git a/src/main/java/org/distorted/examples/objecttree/ObjectTreeRenderer.java b/src/main/java/org/distorted/examples/objecttree/ObjectTreeRenderer.java
index 6865fd4..5b8165a 100644
--- a/src/main/java/org/distorted/examples/objecttree/ObjectTreeRenderer.java
+++ b/src/main/java/org/distorted/examples/objecttree/ObjectTreeRenderer.java
@@ -56,6 +56,7 @@ import android.opengl.GLSurfaceView;
 class ObjectTreeRenderer implements GLSurfaceView.Renderer
 {
    private static final int NODE_FBO_SIZE = 300;
+   private static final int GRID = 20;
 
    private GLSurfaceView mView;
    private DistortedEffects mEffectsNode, mEffectsGrid;
@@ -85,8 +86,8 @@ class ObjectTreeRenderer implements GLSurfaceView.Renderer
 
       mEffectsGrid = new DistortedEffects();
 
-      float factor = NODE_FBO_SIZE/2;
-      MatrixEffectScale scale = new MatrixEffectScale( new Static3D(factor,factor,factor/10) );
+      float factor = NODE_FBO_SIZE/(2.0f*GRID);
+      MatrixEffectScale scale = new MatrixEffectScale( new Static3D(factor,factor,factor) );
       mEffectsGrid.apply(scale);
 
       Dynamic1D rotDyn = new Dynamic1D(12000,0.0f);
@@ -99,7 +100,7 @@ class ObjectTreeRenderer implements GLSurfaceView.Renderer
       Dynamic1D sinkDyn = new Dynamic1D(3000,0.0f);
       sinkDyn.add(new Static1D(1.0f));
       sinkDyn.add(new Static1D(0.3f));
-      VertexEffectSink sink = new VertexEffectSink(sinkDyn, new Static3D(0,0,0) );
+      VertexEffectSink sink = new VertexEffectSink(sinkDyn, new Static3D(0,0,0), new Static4D(0,0,0,10) );
       mEffectsGrid.apply(sink);
 
       mScreen = new DistortedScreen();
@@ -179,13 +180,17 @@ class ObjectTreeRenderer implements GLSurfaceView.Renderer
       mLisaTexture.setTexture(bitmapLisa);
       mGridTexture.setTexture(bitmapGrid);
 
-      final int GRID = 20;
       final Static4D mapFB = new Static4D(0.0f,0.0f,1.0f     ,1.0f     );
       final Static4D mapLR = new Static4D(0.0f,0.0f,1.0f/GRID,1.0f     );
       final Static4D mapTB = new Static4D(0.0f,0.0f,1.0f     ,1.0f/GRID);
 
       if( mMeshQuad ==null ) mMeshQuad = new MeshQuad();
-      if( mMeshCubes==null ) mMeshCubes= new MeshCubes(GRID,GRID,1, mapFB, mapFB, mapLR, mapLR, mapTB, mapTB);
+      if( mMeshCubes==null )
+        {
+        mMeshCubes= new MeshCubes(GRID,GRID,1, mapFB, mapFB, mapLR, mapLR, mapTB, mapTB);
+        mMeshCubes.setStretch(GRID,GRID,1);
+        }
+
 
       mRoot = new DistortedNode(mLisaTexture, mEffectsNode, mMeshQuad);
       mRoot.resizeFBO(NODE_FBO_SIZE,NODE_FBO_SIZE);
diff --git a/src/main/java/org/distorted/examples/projection/ProjectionRenderer.java b/src/main/java/org/distorted/examples/projection/ProjectionRenderer.java
index aa4f1f3..21d56f4 100644
--- a/src/main/java/org/distorted/examples/projection/ProjectionRenderer.java
+++ b/src/main/java/org/distorted/examples/projection/ProjectionRenderer.java
@@ -29,6 +29,7 @@ import org.distorted.library.main.DistortedEffects;
 import org.distorted.library.main.DistortedScreen;
 import org.distorted.library.mesh.MeshRectangles;
 import org.distorted.library.main.DistortedTexture;
+import org.distorted.library.type.Static1D;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
 
@@ -65,14 +66,16 @@ class ProjectionRenderer implements GLSurfaceView.Renderer
       Static4D region = new Static4D( 0, 0, 0, 0.25f);
       Static3D vector = new Static3D( 0, 0, 0.25f);
 
+      Static1D deformRadius = new Static1D(1);
+
       mScale = new Static3D(1,1,1);
 
       mEffects.apply( new MatrixEffectScale(mScale) );
 
-      mEffects.apply( new VertexEffectDeform(vector, point1, region) );
-      mEffects.apply( new VertexEffectDeform(vector, point2, region) );
-      mEffects.apply( new VertexEffectDeform(vector, point3, region) );
-      mEffects.apply( new VertexEffectDeform(vector, point4, region) );
+      mEffects.apply( new VertexEffectDeform(vector, deformRadius, point1, region) );
+      mEffects.apply( new VertexEffectDeform(vector, deformRadius, point2, region) );
+      mEffects.apply( new VertexEffectDeform(vector, deformRadius, point3, region) );
+      mEffects.apply( new VertexEffectDeform(vector, deformRadius, point4, region) );
 
       mTexture= new DistortedTexture();
       }
diff --git a/src/main/java/org/distorted/examples/sink/SinkRenderer.java b/src/main/java/org/distorted/examples/sink/SinkRenderer.java
index 601a133..60590bc 100644
--- a/src/main/java/org/distorted/examples/sink/SinkRenderer.java
+++ b/src/main/java/org/distorted/examples/sink/SinkRenderer.java
@@ -37,6 +37,7 @@ import org.distorted.library.main.DistortedTexture;
 import org.distorted.library.type.Dynamic1D;
 import org.distorted.library.type.Static1D;
 import org.distorted.library.type.Static3D;
+import org.distorted.library.type.Static4D;
 
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
@@ -64,13 +65,13 @@ class SinkRenderer implements GLSurfaceView.Renderer
     mScreen  = new DistortedScreen();
 
     Dynamic1D sinkStrength = new Dynamic1D(2000,0.0f);
-    sinkStrength.add(new Static1D(1.0f));
+    sinkStrength.add(new Static1D(2.0f));
     sinkStrength.add(new Static1D(0.2f));
 
     // strength [changing in time from 1.0 to 0.2 and back],
     // center   [(0,0,0), i.e. center of the bitmap],
-    // region   [null - apply to the whole bitmap
-    VertexEffectSink sinkEffect = new VertexEffectSink(sinkStrength, new Static3D(0,0,0), null);
+    // region   [ (0,0,0) with radius 0.5 - apply to the center circle of the bitmap ]
+    VertexEffectSink sinkEffect = new VertexEffectSink(sinkStrength, new Static3D(0,0,0), new Static4D(0,0,0,0.5f) );
     mEffects.apply(sinkEffect);
 
     mScale = new Static3D(1,1,1);
diff --git a/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java b/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java
index 43bccf4..2fa3978 100644
--- a/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java
+++ b/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java
@@ -32,6 +32,7 @@ import org.distorted.library.effect.MatrixEffectQuaternion;
 import org.distorted.library.effect.MatrixEffectScale;
 import org.distorted.library.effect.PostprocessEffectBlur;
 import org.distorted.library.effect.PostprocessEffectGlow;
+import org.distorted.library.effect.VertexEffectScale;
 import org.distorted.library.main.DistortedLibrary;
 import org.distorted.library.main.DistortedEffects;
 import org.distorted.library.main.DistortedNode;
@@ -110,6 +111,7 @@ class TriblurRenderer implements GLSurfaceView.Renderer
       mScale2 = new Static3D(1.5f,1.5f,1.5f);
       Static3D center = new Static3D(0,0,0);
 
+     // VertexEffectScale scaleEffectV = new VertexEffectScale(OBJ_SIZE);
       MatrixEffectScale scaleEffect1 = new MatrixEffectScale(mScale1);
       MatrixEffectScale scaleEffect2 = new MatrixEffectScale(mScale2);
       MatrixEffectQuaternion quatEffect1 = new MatrixEffectQuaternion(mQuat1, center);
@@ -126,7 +128,7 @@ class TriblurRenderer implements GLSurfaceView.Renderer
         effects[i]       = new DistortedEffects();
         effects[i].apply(mBlur[i]);
         effects[i].apply(chroma[i]);
-
+      //  effects[i].apply(scaleEffectV);
         effects[i].apply(new MatrixEffectMove(moveVector[i]));
         effects[i].apply(quatEffect2);
         effects[i].apply(quatEffect1);
@@ -193,6 +195,7 @@ class TriblurRenderer implements GLSurfaceView.Renderer
 
       mTex.setTexture(bitmap);
 
+      VertexEffectScale.enable();
       PostprocessEffectBlur.enable();
       FragmentEffectChroma.enable();
 
diff --git a/src/main/java/org/distorted/examples/wind/WindEffectsManager.java b/src/main/java/org/distorted/examples/wind/WindEffectsManager.java
index 7e31e13..d6c2110 100644
--- a/src/main/java/org/distorted/examples/wind/WindEffectsManager.java
+++ b/src/main/java/org/distorted/examples/wind/WindEffectsManager.java
@@ -28,6 +28,7 @@ import org.distorted.library.effect.VertexEffectWave;
 import org.distorted.library.main.DistortedEffects;
 import org.distorted.library.type.Dynamic;
 import org.distorted.library.type.Dynamic5D;
+import org.distorted.library.type.Static1D;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
 import org.distorted.library.type.Static5D;
@@ -114,7 +115,7 @@ class WindEffectsManager
     effects.apply( new MatrixEffectScale(scaleFactor) );
     effects.apply( new MatrixEffectShear(shearFactor,midLeft) );
 
-    effects.apply( new VertexEffectDeform(deformForce,midRight) );
+    effects.apply( new VertexEffectDeform(deformForce, new Static1D(mWidth/2), midRight) );
     effects.apply( new VertexEffectWave(windDynamic1, midRight, windRegion) );
     effects.apply( new VertexEffectWave(windDynamic2, midRight, windRegion) );
     effects.apply( new VertexEffectWave(windDynamic3, midRight, windRegion) );
diff --git a/src/main/java/org/distorted/examples/wind/WindRenderer.java b/src/main/java/org/distorted/examples/wind/WindRenderer.java
index 27599e1..e397c37 100644
--- a/src/main/java/org/distorted/examples/wind/WindRenderer.java
+++ b/src/main/java/org/distorted/examples/wind/WindRenderer.java
@@ -49,6 +49,10 @@ import javax.microedition.khronos.opengles.GL10;
 
 class WindRenderer implements GLSurfaceView.Renderer
 {
+   private static final int X = 50;
+   private static final int Y = 30;
+   private static final int Z =  1;
+
    private GLSurfaceView mView;
    private DistortedTexture mTexture;
    private DistortedScreen mScreen;
@@ -63,12 +67,12 @@ class WindRenderer implements GLSurfaceView.Renderer
       { 
       mView = view;
 
-      MeshCubes cubes = new MeshCubes(50,30,1);
+      MeshCubes cubes = new MeshCubes(X,Y,Z);
       DistortedEffects effects = new DistortedEffects();
-      cubes.setStretch(50,30,1);
+      cubes.setStretch(X,Y,Z);
 
       mTexture = new DistortedTexture();
-      mManager = new WindEffectsManager(50,30);
+      mManager = new WindEffectsManager(X,Y);
       mGust    = new WindGust();
       mScreen  = new DistortedScreen();
 
