commit fec27f1652aa4391e6bbbd2431483a344f74e23d
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Tue Jun 13 14:05:08 2017 +0100

    Fix the final 'Vertex & Fragment Effects' APP. All APPs work now!

diff --git a/src/main/java/org/distorted/examples/effects3d/Effects3DRenderer.java b/src/main/java/org/distorted/examples/effects3d/Effects3DRenderer.java
index 07c6620..20f5981 100644
--- a/src/main/java/org/distorted/examples/effects3d/Effects3DRenderer.java
+++ b/src/main/java/org/distorted/examples/effects3d/Effects3DRenderer.java
@@ -58,14 +58,13 @@ class Effects3DRenderer implements GLSurfaceView.Renderer
     private DistortedNode mCenterNode, mRegionNode;
     private int mObjWidth, mObjHeight;
     private Static3D mCenterPoint, mRegionPoint, mRegionScalePoint;
-    private Static3D mRotateCen, mMoveObject, mMoveCenter, mScaleCenter, mMoveRegion, mMoveBackground, mScaleBackground;
-
+    private Static3D mRotateCen, mMoveObject, mScaleObject, mMoveCenter, mScaleCenter, mMoveRegion, mMoveBackground, mScaleBackground;
+    private boolean mShowingCenter=false;
+    private boolean mShowingRegion=false;
     private float mFactorObj, mFactorReg;
 
     Static4D mQuat1, mQuat2;
     int mScreenMin;
-    private boolean mShowingCenter=false;
-    private boolean mShowingRegion=false;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -77,6 +76,7 @@ class Effects3DRenderer implements GLSurfaceView.Renderer
 
       mRotateCen      = new Static3D(0,0,0);
       mMoveObject     = new Static3D(0,0,0);
+      mScaleObject    = new Static3D(1,1,1);
       mMoveCenter     = new Static3D(0,0,0);
       mScaleCenter    = new Static3D(1,1,1);
       mMoveRegion     = new Static3D(0,0,0);
@@ -126,7 +126,7 @@ class Effects3DRenderer implements GLSurfaceView.Renderer
       MatrixEffectMove centerMove = new MatrixEffectMove(mCenterPoint);
 
       objectEffects.apply( new MatrixEffectMove(mMoveObject));
-      objectEffects.apply( new MatrixEffectScale(mFactorObj) );
+      objectEffects.apply( new MatrixEffectScale(mScaleObject) );
       objectEffects.apply(quat1obj);
       objectEffects.apply(quat2obj);
 
@@ -182,7 +182,7 @@ class Effects3DRenderer implements GLSurfaceView.Renderer
     void setRegion(float x, float y, float r)
       {
       mFactorReg = 2*mFactorObj*r/mRegionTexture.getWidth();
-      mRegionPoint.set(mFactorObj*x,mFactorObj*y,0);
+      mRegionPoint.set(mFactorObj*x,-mFactorObj*y,0);
       mRegionScalePoint.set(mFactorReg,mFactorReg,mFactorReg);
       }
 
@@ -215,13 +215,13 @@ class Effects3DRenderer implements GLSurfaceView.Renderer
         }
 
       Effects3DActivity act = (Effects3DActivity)mView.getContext();
-      mCenterPoint.set(mFactorObj*act.getCenterX(),mFactorObj*act.getCenterY(),0);
-      mRegionPoint.set(mFactorObj*act.getRegionX(),mFactorObj*act.getRegionY(),0);
+      mCenterPoint.set(mFactorObj*act.getCenterX(),+mFactorObj*act.getCenterY(),0);
+      mRegionPoint.set(mFactorObj*act.getRegionX(),-mFactorObj*act.getRegionY(),0);
       mFactorReg = 2*mFactorObj*act.getRegionR()/regionSize;
       mRegionScalePoint.set(mFactorReg,mFactorReg,mFactorReg);
       mMoveObject.set( (width-mFactorObj*mObjWidth)/2 , (height-mFactorObj*mObjHeight)/2 , 0 );
       mRotateCen.set(width/2,height/2, 0);
-
+      mScaleObject.set(mFactorObj,mFactorObj,mFactorObj);
       mMoveCenter.set( (width -factorCen*centerSize-mFactorObj*mObjWidth )/2 ,
                        (height-factorCen*centerSize-mFactorObj*mObjHeight)/2 , 15 );
       mScaleCenter.set(factorCen,factorCen,factorCen);
