commit 7bebb19684b3805b95469ca220d1c83c7bf38834
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Jan 4 23:07:43 2019 +0000

    Massive: make the coordinate system agree with that of OpenGL (i.e. invert the Y axis).

diff --git a/src/main/java/org/distorted/library/effect/MatrixEffectMove.java b/src/main/java/org/distorted/library/effect/MatrixEffectMove.java
index e088759..6be6a7f 100644
--- a/src/main/java/org/distorted/library/effect/MatrixEffectMove.java
+++ b/src/main/java/org/distorted/library/effect/MatrixEffectMove.java
@@ -54,7 +54,7 @@ public class MatrixEffectMove extends MatrixEffect
     float sy = uniforms[NUM_UNIFORMS*index+1];
     float sz = uniforms[NUM_UNIFORMS*index+2];
 
-    Matrix.translateM(matrix, 0, sx,-sy, sz);
+    Matrix.translateM(matrix, 0, sx, sy, sz);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/library/effect/MatrixEffectQuaternion.java b/src/main/java/org/distorted/library/effect/MatrixEffectQuaternion.java
index fe2ca31..3c59bb5 100644
--- a/src/main/java/org/distorted/library/effect/MatrixEffectQuaternion.java
+++ b/src/main/java/org/distorted/library/effect/MatrixEffectQuaternion.java
@@ -65,9 +65,9 @@ public class MatrixEffectQuaternion extends MatrixEffect
     float y = uniforms[NUM_UNIFORMS*index+5];
     float z = uniforms[NUM_UNIFORMS*index+6];
 
-    Matrix.translateM(matrix, 0, x,-y,-z);
+    Matrix.translateM(matrix, 0, x, y, z);
     multiplyByQuat( matrix, qX, qY, qZ, qW);
-    Matrix.translateM(matrix, 0,-x, y, z);
+    Matrix.translateM(matrix, 0,-x,-y,-z);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/library/effect/MatrixEffectRotate.java b/src/main/java/org/distorted/library/effect/MatrixEffectRotate.java
index e04503d..14c33b0 100644
--- a/src/main/java/org/distorted/library/effect/MatrixEffectRotate.java
+++ b/src/main/java/org/distorted/library/effect/MatrixEffectRotate.java
@@ -63,9 +63,9 @@ public class MatrixEffectRotate extends MatrixEffect
     float y = uniforms[NUM_UNIFORMS*index+5];
     float z = uniforms[NUM_UNIFORMS*index+6];
 
-    Matrix.translateM(matrix, 0, x,-y,-z);
+    Matrix.translateM(matrix, 0, x, y, z);
     Matrix.rotateM( matrix, 0, alpha, axisX, axisY, axisZ);
-    Matrix.translateM(matrix, 0,-x, y, z);
+    Matrix.translateM(matrix, 0,-x,-y,-z);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/library/effect/MatrixEffectShear.java b/src/main/java/org/distorted/library/effect/MatrixEffectShear.java
index bbfae3b..6ec7c27 100644
--- a/src/main/java/org/distorted/library/effect/MatrixEffectShear.java
+++ b/src/main/java/org/distorted/library/effect/MatrixEffectShear.java
@@ -59,7 +59,7 @@ public class MatrixEffectShear extends MatrixEffect
     float y  = uniforms[NUM_UNIFORMS*index+5];
     float z  = uniforms[NUM_UNIFORMS*index+6];
 
-    Matrix.translateM(matrix, 0, x,-y, z);
+    Matrix.translateM(matrix, 0, x, y, z);
 
     matrix[4] += sx*matrix[0]; // Multiply viewMatrix by 1 x 0 0 , i.e. X-shear.
     matrix[5] += sx*matrix[1]; //                        0 1 0 0
@@ -76,7 +76,7 @@ public class MatrixEffectShear extends MatrixEffect
     matrix[6] += sz*matrix[10];//                        0 z 1 0
     matrix[7] += sz*matrix[11];//                        0 0 0 1
 
-    Matrix.translateM(matrix, 0,-x, y, -z);
+    Matrix.translateM(matrix, 0,-x,-y,-z);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/library/effect/VertexEffectDeform.java b/src/main/java/org/distorted/library/effect/VertexEffectDeform.java
index 534fc24..d848278 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectDeform.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectDeform.java
@@ -42,11 +42,7 @@ public class VertexEffectDeform extends VertexEffect
     {
     mCenter.get(uniforms,index+CENTER_OFFSET,currentDuration,step);
     mRegion.get(uniforms,index+REGION_OFFSET,currentDuration,step);
-    boolean ret = mVector.get(uniforms,index,currentDuration,step);
-
-    uniforms[index+REGION_OFFSET+1] =-uniforms[index+REGION_OFFSET+1];  // region's y
-
-    return ret;
+    return mVector.get(uniforms,index,currentDuration,step);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -116,7 +112,7 @@ public class VertexEffectDeform extends VertexEffect
       + "const float C = 5.0; \n"
 
       + "vec3 center = vUniforms[effect+1].yzw; \n"
-      + "vec3 ps     = center-v.xyz; \n"
+      + "vec3 ps     = center-v; \n"
       + "vec3 aPS    = abs(ps); \n"
       + "vec3 maxps  = u_objD + abs(center); \n"
       + "float d     = degree_region(vUniforms[effect+2],ps); \n"
@@ -135,11 +131,11 @@ public class VertexEffectDeform extends VertexEffect
 
       + "float mvXvert = -B * ps.x * aForce.y * (1.0-quot.y) * denomV; \n"     // impact the vertical   component of the force vector has on horizontal movement
       + "float mvYhorz = -B * ps.y * aForce.x * (1.0-quot.x) * denomH; \n"     // impact the horizontal component of the force vector has on vertical   movement
-      + "float mvYvert =  force.y * (1.0-quot.x*Aw.x*denomV) * vertCorr.y; \n" // impact the vertical   component of the force vector has on vertical   movement
-      + "float mvXhorz = -force.x * (1.0-quot.y*Aw.y*denomH) * vertCorr.x; \n" // impact the horizontal component of the force vector has on horizontal movement
+      + "float mvYvert = force.y * (1.0-quot.x*Aw.x*denomV) * vertCorr.y; \n"  // impact the vertical   component of the force vector has on vertical   movement
+      + "float mvXhorz = force.x * (1.0-quot.y*Aw.y*denomH) * vertCorr.x; \n"  // impact the horizontal component of the force vector has on horizontal movement
 
-      + "v.x -= (mvXvert+mvXhorz); \n"
-      + "v.y -= (mvYvert+mvYhorz); \n"
+      + "v.x += (mvXvert+mvXhorz); \n"
+      + "v.y += (mvYvert+mvYhorz); \n"
 
       + "v.z += force.z*d*d*(3.0*d*d -8.0*d +6.0); \n"                         // thick bubble
       + "float b = -(12.0*force.z*d*(1.0-d)*(1.0-d)*(1.0-d))*one_over_denom; \n"
diff --git a/src/main/java/org/distorted/library/effect/VertexEffectDistort.java b/src/main/java/org/distorted/library/effect/VertexEffectDistort.java
index ed8e8ee..b240ae4 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectDistort.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectDistort.java
@@ -42,12 +42,7 @@ public class VertexEffectDistort extends VertexEffect
     {
     mCenter.get(uniforms,index+CENTER_OFFSET,currentDuration,step);
     mRegion.get(uniforms,index+REGION_OFFSET,currentDuration,step);
-    boolean ret = mVector.get(uniforms,index,currentDuration,step);
-
-    uniforms[index+1] =-uniforms[index+1];
-    uniforms[index+REGION_OFFSET+1] =-uniforms[index+REGION_OFFSET+1];  // region's y
-
-    return ret;
+    return mVector.get(uniforms,index,currentDuration,step);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -113,7 +108,7 @@ public class VertexEffectDistort extends VertexEffect
     addEffect(EffectName.DISTORT,
 
         "vec3 center = vUniforms[effect+1].yzw; \n"
-      + "vec3 ps = center-v.xyz; \n"
+      + "vec3 ps = center-v; \n"
       + "vec3 force = vUniforms[effect].xyz; \n"
       + "float d = degree(vUniforms[effect+2],center,ps); \n"
       + "float denom = dot(ps+(1.0-d)*force,ps); \n"
diff --git a/src/main/java/org/distorted/library/effect/VertexEffectPinch.java b/src/main/java/org/distorted/library/effect/VertexEffectPinch.java
index 9464e4d..e4dd903 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectPinch.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectPinch.java
@@ -53,7 +53,6 @@ public class VertexEffectPinch extends VertexEffect
     boolean ret = mPinch.get(uniforms,index,currentDuration,step);
 
     uniforms[index+1] = (float)(Math.PI*uniforms[index+1]/180);
-    uniforms[index+REGION_OFFSET+1] =-uniforms[index+REGION_OFFSET+1];  // region's y
 
     return ret;
     }
@@ -75,7 +74,7 @@ public class VertexEffectPinch extends VertexEffect
     addEffect(EffectName.PINCH,
 
         "vec3 center = vUniforms[effect+1].yzw; \n"
-      + "vec3 ps = center-v.xyz; \n"
+      + "vec3 ps = center-v; \n"
       + "float h = vUniforms[effect].x; \n"
       + "float t = degree(vUniforms[effect+2],center,ps) * (1.0-h)/max(1.0,h); \n"
       + "float angle = vUniforms[effect].y; \n"
diff --git a/src/main/java/org/distorted/library/effect/VertexEffectSink.java b/src/main/java/org/distorted/library/effect/VertexEffectSink.java
index f589073..1d14a8a 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectSink.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectSink.java
@@ -45,11 +45,7 @@ public class VertexEffectSink extends VertexEffect
     {
     mCenter.get(uniforms,index+CENTER_OFFSET,currentDuration,step);
     mRegion.get(uniforms,index+REGION_OFFSET,currentDuration,step);
-    boolean ret = mSink.get(uniforms,index,currentDuration,step);
-
-    uniforms[index+REGION_OFFSET+1] =-uniforms[index+REGION_OFFSET+1];  // region's y
-
-    return ret;
+    return mSink.get(uniforms,index,currentDuration,step);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/library/effect/VertexEffectSwirl.java b/src/main/java/org/distorted/library/effect/VertexEffectSwirl.java
index ab9edff..70a5d73 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectSwirl.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectSwirl.java
@@ -51,8 +51,7 @@ public class VertexEffectSwirl extends VertexEffect
     mRegion.get(uniforms,index+REGION_OFFSET,currentDuration,step);
     boolean ret = mSwirl.get(uniforms,index,currentDuration,step);
 
-    uniforms[index  ] = (float)(Math.PI*uniforms[index]/180);
-    uniforms[index+REGION_OFFSET+1] =-uniforms[index+REGION_OFFSET+1];  // region's y
+    uniforms[index] = (float)(Math.PI*uniforms[index]/180);
 
     return ret;
     }
diff --git a/src/main/java/org/distorted/library/effect/VertexEffectWave.java b/src/main/java/org/distorted/library/effect/VertexEffectWave.java
index 152d646..ff1825c 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectWave.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectWave.java
@@ -54,8 +54,6 @@ public class VertexEffectWave extends VertexEffect
     uniforms[index+3] = (float)(Math.PI*uniforms[index+3]/180);
     uniforms[index+4] = (float)(Math.PI*uniforms[index+4]/180);
 
-    uniforms[index+REGION_OFFSET+1] =-uniforms[index+REGION_OFFSET+1];  // region's y
-
     return ret;
     }
 
@@ -136,7 +134,7 @@ public class VertexEffectWave extends VertexEffect
       + "float amplitude = vUniforms[effect  ].x; \n"
       + "float length    = vUniforms[effect  ].y; \n"
 
-      + "vec3 ps = center - v.xyz; \n"
+      + "vec3 ps = center - v; \n"
       + "float deg = amplitude*degree_region(vUniforms[effect+2],ps); \n"
 
       + "if( deg != 0.0 && length != 0.0 ) \n"
diff --git a/src/main/java/org/distorted/library/main/DistortedScreen.java b/src/main/java/org/distorted/library/main/DistortedScreen.java
index e10729a..51c2ba6 100644
--- a/src/main/java/org/distorted/library/main/DistortedScreen.java
+++ b/src/main/java/org/distorted/library/main/DistortedScreen.java
@@ -54,7 +54,8 @@ public class DistortedScreen extends DistortedFramebuffer
   private long lastTime=0;
   private long[] durations;
   private int currDuration;
-  private static MatrixEffectMove mMoveEffect = new MatrixEffectMove( new Static3D(5,5,0) );
+  private static Static3D mMoveVector = new Static3D(5,-5,0);
+  private static MatrixEffectMove mMoveEffect = new MatrixEffectMove(mMoveVector);
   ///// END DEBUGGING //////////////////////////
 
   private int mCurRenderedFBO;    // During the first FBO_QUEUE_SIZE frames, we blit the very first
@@ -106,6 +107,8 @@ public class DistortedScreen extends DistortedFramebuffer
       fpsCanvas.drawText(fpsString, FPS_W/2, 0.75f*FPS_H, mPaint);
       fpsTexture.setTexture(fpsBitmap);
 
+      mMoveVector.set2(mHeight-FPS_H-5);
+
       lastTime = time;
       }
 
@@ -173,8 +176,8 @@ public class DistortedScreen extends DistortedFramebuffer
       durations = new long[NUM_FRAMES + 1];
       currDuration = 0;
 
-      for (int i = 0; i < NUM_FRAMES + 1; i++) durations[i] = 16;  // Assume FPS will be
-      durations[NUM_FRAMES] = NUM_FRAMES * 16;              // close to 1000/16 ~ 60
+      for (int i=0; i<NUM_FRAMES+1; i++) durations[i] = 16;  // Assume FPS will be
+      durations[NUM_FRAMES] = NUM_FRAMES * 16;               // close to 1000/16 ~ 60
       }
     }
   }
diff --git a/src/main/java/org/distorted/library/main/EffectQueueFragment.java b/src/main/java/org/distorted/library/main/EffectQueueFragment.java
index 27f1370..9cacb25 100644
--- a/src/main/java/org/distorted/library/main/EffectQueueFragment.java
+++ b/src/main/java/org/distorted/library/main/EffectQueueFragment.java
@@ -78,9 +78,9 @@ class EffectQueueFragment extends EffectQueue
           }
         }
 
-      mUniforms[NUM_UNIFORMS*i+5] = mUniforms[NUM_UNIFORMS*i+5]-halfX;
-      mUniforms[NUM_UNIFORMS*i+6] =-mUniforms[NUM_UNIFORMS*i+6]+halfY;
-      mUniforms[NUM_UNIFORMS*i+7] = mUniforms[NUM_UNIFORMS*i+7]-halfZ;
+      mUniforms[NUM_UNIFORMS*i+5] -= halfX;
+      mUniforms[NUM_UNIFORMS*i+6] -= halfY;
+      mUniforms[NUM_UNIFORMS*i+7] -= halfZ;
       }
 
     mTime = currTime;  
diff --git a/src/main/java/org/distorted/library/main/EffectQueueMatrix.java b/src/main/java/org/distorted/library/main/EffectQueueMatrix.java
index afd99c4..b772b43 100644
--- a/src/main/java/org/distorted/library/main/EffectQueueMatrix.java
+++ b/src/main/java/org/distorted/library/main/EffectQueueMatrix.java
@@ -154,13 +154,13 @@ class EffectQueueMatrix extends EffectQueue
   void send(DistortedOutputSurface projection, float halfX, float halfY, float halfZ, int variant)
     {
     Matrix.setIdentityM(mViewMatrix, 0);
-    Matrix.translateM(mViewMatrix, 0, -projection.mWidth/2, projection.mHeight/2, -projection.mDistance);
+    Matrix.translateM(mViewMatrix, 0, -projection.mWidth/2, -projection.mHeight/2, -projection.mDistance);
     float mipmap = projection.mMipmap;
     if( mipmap!=1 ) Matrix.scaleM(mViewMatrix, 0, mipmap, mipmap, mipmap);
 
     for(int i=0; i<mNumEffects; i++) ((MatrixEffect)mEffects[i]).apply(mViewMatrix,mUniforms,i);
 
-    Matrix.translateM(mViewMatrix, 0, halfX,-halfY,-halfZ);
+    Matrix.translateM(mViewMatrix, 0, halfX,halfY,halfZ);
     Matrix.multiplyMM(mMVPMatrix, 0, projection.mProjectionMatrix, 0, mViewMatrix, 0);
 
     GLES31.glUniform3f( mObjDH[variant] , halfX, halfY, halfZ);
diff --git a/src/main/java/org/distorted/library/main/EffectQueueVertex.java b/src/main/java/org/distorted/library/main/EffectQueueVertex.java
index a5cda6d..ad99c13 100644
--- a/src/main/java/org/distorted/library/main/EffectQueueVertex.java
+++ b/src/main/java/org/distorted/library/main/EffectQueueVertex.java
@@ -80,9 +80,9 @@ class EffectQueueVertex extends EffectQueue
           }
         }
 
-      mUniforms[NUM_UNIFORMS*i+5] = mUniforms[NUM_UNIFORMS*i+5]-halfX;
-      mUniforms[NUM_UNIFORMS*i+6] =-mUniforms[NUM_UNIFORMS*i+6]+halfY;
-      mUniforms[NUM_UNIFORMS*i+7] = mUniforms[NUM_UNIFORMS*i+7]-halfZ;
+      mUniforms[NUM_UNIFORMS*i+5] -= halfX;
+      mUniforms[NUM_UNIFORMS*i+6] -= halfY;
+      mUniforms[NUM_UNIFORMS*i+7] -= halfZ;
       }
 
     mTime = currTime;
