commit c2c08950de7bb4cc14a79b4a8ade540b17129c9f
Author: leszek <leszek@koltunski.pl>
Date:   Thu Mar 2 00:04:07 2017 +0000

    simplify blitPriv()

diff --git a/src/main/java/org/distorted/library/DistortedEffects.java b/src/main/java/org/distorted/library/DistortedEffects.java
index ac3adfe..54fc04f 100644
--- a/src/main/java/org/distorted/library/DistortedEffects.java
+++ b/src/main/java/org/distorted/library/DistortedEffects.java
@@ -72,8 +72,7 @@ public class DistortedEffects
   /// BLIT PROGRAM ///
   private static DistortedProgram mBlitProgram;
   private static int mBlitTextureH;
-  private static int mBlitObjDH;
-  private static int mBlitMVPMatrixH;
+  private static int mBlitDepthH;
   private static final FloatBuffer mQuadPositions;
 
   static
@@ -166,8 +165,7 @@ public class DistortedEffects
 
     int blitProgramH = mBlitProgram.getProgramHandle();
     mBlitTextureH  = GLES30.glGetUniformLocation( blitProgramH, "u_Texture");
-    mBlitObjDH     = GLES30.glGetUniformLocation( blitProgramH, "u_objD");
-    mBlitMVPMatrixH= GLES30.glGetUniformLocation( blitProgramH, "u_MVPMatrix");
+    mBlitDepthH    = GLES30.glGetUniformLocation( blitProgramH, "u_Depth");
 
     // DEBUG ONLY //////////////////////////////////////
     final InputStream debugVertexStream   = resources.openRawResource(R.raw.test_vertex_shader);
@@ -349,17 +347,11 @@ public class DistortedEffects
    
   static void blitPriv(DistortedOutputSurface projection)
     {
-    GLES30.glViewport(0, 0, projection.mWidth, projection.mHeight);
-
     mBlitProgram.useProgram();
 
-    Matrix.setIdentityM(mTmpMatrix, 0);
-    Matrix.translateM(mTmpMatrix, 0, 0, 0, -projection.mDistance);
-    Matrix.multiplyMM(mMVPMatrix, 0, projection.mProjectionMatrix, 0, mTmpMatrix, 0);
-
+    GLES30.glViewport(0, 0, projection.mWidth, projection.mHeight);
     GLES30.glUniform1i(mBlitTextureH, 0);
-    GLES30.glUniform2f( mBlitObjDH , projection.mWidth/2, projection.mHeight/2);
-    GLES30.glUniformMatrix4fv(mBlitMVPMatrixH, 1, false, mMVPMatrix, 0);
+    GLES30.glUniform1f( mBlitDepthH , 1.0f-projection.mNear);
     GLES30.glVertexAttribPointer(mBlitProgram.mAttribute[0], 2, GLES30.GL_FLOAT, false, 0, mQuadPositions);
     GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, 4);
     }
diff --git a/src/main/java/org/distorted/library/DistortedOutputSurface.java b/src/main/java/org/distorted/library/DistortedOutputSurface.java
index 6fee3f2..4a81d63 100644
--- a/src/main/java/org/distorted/library/DistortedOutputSurface.java
+++ b/src/main/java/org/distorted/library/DistortedOutputSurface.java
@@ -32,9 +32,9 @@ abstract class DistortedOutputSurface extends DistortedSurface implements Distor
   private ArrayList<DistortedNode> mChildren;
   private int mNumChildren;   // ==mChildren.length(), but we only create mChildren if the first one gets added
 
-  private float mNear, mFOV;
+  private float mFOV;
   int mWidth,mHeight,mDepth;
-  float mDistance;
+  float mDistance, mNear;
   float[] mProjectionMatrix;
 
   int mDepthCreated;
@@ -71,14 +71,14 @@ abstract class DistortedOutputSurface extends DistortedSurface implements Distor
       if( mFOV>0.0f )  // perspective projection
         {
         float a = 2.0f*(float)Math.tan(mFOV*Math.PI/360);
-        float q = (float)mWidth/mHeight;
+        float q = mWidth*mNear;
         float c = mHeight*mNear;
 
-        float left   = -q*c/2;
-        float right  = +q*c/2;
-        float bottom =   -c/2;
-        float top    =   +c/2;
-        float near   =    c/a;
+        float left   = -q/2;
+        float right  = +q/2;
+        float bottom = -c/2;
+        float top    = +c/2;
+        float near   =  c/a;
 
         mDistance    = mHeight/a;
         float far    = 2*mDistance-near;
diff --git a/src/main/java/org/distorted/library/EffectQueueFragment.java b/src/main/java/org/distorted/library/EffectQueueFragment.java
index 9d3363f..c91d522 100644
--- a/src/main/java/org/distorted/library/EffectQueueFragment.java
+++ b/src/main/java/org/distorted/library/EffectQueueFragment.java
@@ -132,13 +132,6 @@ class EffectQueueFragment extends EffectQueue
       }  
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  synchronized static void sendZero()
-    {
-    GLES30.glUniform1i( mNumEffectsH, 0);
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // alpha, brightness, contrast, saturation
 
diff --git a/src/main/java/org/distorted/library/EffectQueueMatrix.java b/src/main/java/org/distorted/library/EffectQueueMatrix.java
index c32758e..203d6b5 100644
--- a/src/main/java/org/distorted/library/EffectQueueMatrix.java
+++ b/src/main/java/org/distorted/library/EffectQueueMatrix.java
@@ -294,21 +294,6 @@ class EffectQueueMatrix extends EffectQueue
     GLES30.glUniformMatrix4fv(mMVPMatrixH, 1, false, mMVPMatrix , 0);
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// here construct the ModelView Matrix, but without any effects
-
-  synchronized static void sendZero(DistortedOutputSurface projection, float halfX, float halfY, float halfZ)
-    {
-    Matrix.setIdentityM(mTmpMatrix, 0);
-    Matrix.translateM(mTmpMatrix, 0, halfX-projection.mWidth/2, projection.mHeight/2-halfY, -projection.mDistance);
-    Matrix.multiplyMM(mMVPMatrix, 0, projection.mProjectionMatrix, 0, mTmpMatrix, 0);
-    
-    GLES30.glUniform3f( mObjDH , halfX, halfY, halfZ);
-    GLES30.glUniform1f( mDepthH, projection.mDepth);
-    GLES30.glUniformMatrix4fv(mMVMatrixH , 1, false, mTmpMatrix, 0);
-    GLES30.glUniformMatrix4fv(mMVPMatrixH, 1, false, mMVPMatrix, 0);
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // move, scale
 
diff --git a/src/main/java/org/distorted/library/EffectQueueVertex.java b/src/main/java/org/distorted/library/EffectQueueVertex.java
index 98a74d6..e25acfd 100644
--- a/src/main/java/org/distorted/library/EffectQueueVertex.java
+++ b/src/main/java/org/distorted/library/EffectQueueVertex.java
@@ -151,13 +151,6 @@ class EffectQueueVertex extends EffectQueue
       }
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  synchronized static void sendZero()
-    {
-    GLES30.glUniform1i( mNumEffectsH, 0);
-    }
-  
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // Do various post-processing on already computed effects.
 // 1) here unlike in the fragment queue, we don't have to multiply the points by ModelView matrix because that gets done in the shader.
diff --git a/src/main/res/raw/blit_vertex_shader.glsl b/src/main/res/raw/blit_vertex_shader.glsl
index a232bb4..e15b688 100644
--- a/src/main/res/raw/blit_vertex_shader.glsl
+++ b/src/main/res/raw/blit_vertex_shader.glsl
@@ -19,8 +19,7 @@
 
 precision lowp float;
 
-uniform vec2 u_objD;          // half of object width x half of object height
-uniform mat4 u_MVPMatrix;     // the combined model/view/projection matrix.
+uniform float u_Depth;        // distance from the near plane to render plane, in clip coords
 attribute vec2 a_Position;    // Per-vertex position.
 varying vec2 v_TexCoordinate; //
 
@@ -29,6 +28,5 @@ varying vec2 v_TexCoordinate; //
 void main()
   {
   v_TexCoordinate = a_Position + 0.5;
-  //gl_Position     = vec4(2.0*a_Position,0.0,1.0);
-  gl_Position     = u_MVPMatrix*vec4(2.0*u_objD*a_Position,0.0,1.0);
-  }                               
+  gl_Position     = vec4(2.0*a_Position,u_Depth,1.0);
+  }
