commit 9d5bb851b0ebe3efa28874aaa6843a04a224ed16
Author: Leszek Koltunski <leszek@distorted.org>
Date:   Wed Jan 25 00:56:40 2017 +0000

    minor.

diff --git a/src/main/java/org/distorted/library/EffectQueuePostprocess.java b/src/main/java/org/distorted/library/EffectQueuePostprocess.java
index c90bde2..d30e97e 100644
--- a/src/main/java/org/distorted/library/EffectQueuePostprocess.java
+++ b/src/main/java/org/distorted/library/EffectQueuePostprocess.java
@@ -45,8 +45,8 @@ class EffectQueuePostprocess extends EffectQueue
   {
   private static final int MAX_BLUR = 50;
 
-  private static final int POSITION_DATA_SIZE= 2; // Post Program: size of the position data in elements
-  private static final int TEX_DATA_SIZE     = 2; // Post Program: size of the texture coordinate data in elements.
+  private static final int POS_DATA_SIZE= 2; // Post Program: size of the position data in elements
+  private static final int TEX_DATA_SIZE= 2; // Post Program: size of the texture coordinate data in elements.
 
   private static final int NUM_UNIFORMS = 4;
   private static final int NUM_CACHE    = 0;
@@ -63,11 +63,11 @@ class EffectQueuePostprocess extends EffectQueue
     float[] textureNor= {  0.0f,  0.0f,   0.0f, 1.0f,  1.0f, 0.0f,  1.0f, 1.0f };
     float[] textureInv= {  0.0f,  0.0f,   1.0f, 0.0f,  0.0f, 1.0f,  1.0f, 1.0f };
 
-    mQuadPositions = ByteBuffer.allocateDirect(POSITION_DATA_SIZE*dataLength*bytes_per_float).order(ByteOrder.nativeOrder()).asFloatBuffer();
+    mQuadPositions = ByteBuffer.allocateDirect(POS_DATA_SIZE*dataLength*bytes_per_float).order(ByteOrder.nativeOrder()).asFloatBuffer();
     mQuadPositions.put(position).position(0);
-    mQuadTextureNor  = ByteBuffer.allocateDirect(TEX_DATA_SIZE     *dataLength*bytes_per_float).order(ByteOrder.nativeOrder()).asFloatBuffer();
+    mQuadTextureNor= ByteBuffer.allocateDirect(TEX_DATA_SIZE*dataLength*bytes_per_float).order(ByteOrder.nativeOrder()).asFloatBuffer();
     mQuadTextureNor.put(textureNor).position(0);
-    mQuadTextureInv  = ByteBuffer.allocateDirect(TEX_DATA_SIZE     *dataLength*bytes_per_float).order(ByteOrder.nativeOrder()).asFloatBuffer();
+    mQuadTextureInv= ByteBuffer.allocateDirect(TEX_DATA_SIZE*dataLength*bytes_per_float).order(ByteOrder.nativeOrder()).asFloatBuffer();
     mQuadTextureInv.put(textureInv).position(0);
     }
 
@@ -154,24 +154,36 @@ class EffectQueuePostprocess extends EffectQueue
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-// w,h - width and height of the input texture. MVP - Model-View-Projection matrix to apply to the
-// texture; df - output FBO.
 
-  synchronized void render(float w, float h, float[] mvp, DistortedFramebuffer df)
+  private int computeKernel(int radius, float height)
     {
-    mBlurProgram.useProgram();
-
-    int radius = (int)mUniforms[0];
     if( radius>=MAX_BLUR ) radius = MAX_BLUR-1;
 
     for(int i=0; i<=radius; i++)
       {
+      // Box Blur size 'radius'
       mWeights[i] = 1.0f / (2.0f*radius+1.0f);
-      mOffsets[i] = i/h;
+      mOffsets[i] = i*height;
+
+      // Gaussian Blur size 'radius'
+
+
       }
 
+    return radius;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// w,h - width and height of the input texture. MVP - Model-View-Projection matrix to apply to the
+// texture; df - output FBO.
+
+  synchronized void render(float w, float h, float[] mvp, DistortedFramebuffer df)
+    {
+    mBlurProgram.useProgram();
+
+    int radius = computeKernel( (int)mUniforms[0], 1/h );
+
     GLES30.glUniform1fv( mWeightsH, radius+1, mWeights,0);
-    GLES30.glUniform1fv( mOffsetsH ,radius+1, mOffsets,0);
     GLES30.glUniform1i( mRadiusH, radius);
     GLES30.glUniform2f( mObjDH , w, h );
 
@@ -184,10 +196,10 @@ class EffectQueuePostprocess extends EffectQueue
     Matrix.multiplyMM(mMVPMatrix, 0, mBufferFBO.mProjectionMatrix, 0, mTmpMatrix, 0);
 
     // horizontal blur
-
+    GLES30.glUniform1fv( mOffsetsH ,radius+1, mOffsets,0);
     GLES30.glUniformMatrix4fv(mMVPMatrixH, 1, false, mMVPMatrix , 0);
-    GLES30.glVertexAttribPointer(mBlurProgram.mAttribute[0], POSITION_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadPositions);
-    GLES30.glVertexAttribPointer(mBlurProgram.mAttribute[1], TEX_DATA_SIZE     , GLES30.GL_FLOAT, false, 0, mQuadTextureInv);
+    GLES30.glVertexAttribPointer(mBlurProgram.mAttribute[0], POS_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadPositions);
+    GLES30.glVertexAttribPointer(mBlurProgram.mAttribute[1], TEX_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadTextureInv);
     GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, 4);
 
     mBufferFBO.setAsInput();
@@ -200,8 +212,8 @@ class EffectQueuePostprocess extends EffectQueue
     // vertical blur
     GLES30.glUniform1fv( mOffsetsH ,radius+1, mOffsets,0);
     GLES30.glUniformMatrix4fv(mMVPMatrixH, 1, false, mvp , 0);
-    GLES30.glVertexAttribPointer(mBlurProgram.mAttribute[0], POSITION_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadPositions);
-    GLES30.glVertexAttribPointer(mBlurProgram.mAttribute[1], TEX_DATA_SIZE     , GLES30.GL_FLOAT, false, 0, mQuadTextureInv);
+    GLES30.glVertexAttribPointer(mBlurProgram.mAttribute[0], POS_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadPositions);
+    GLES30.glVertexAttribPointer(mBlurProgram.mAttribute[1], TEX_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadTextureInv);
     GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, 4);
     }
 
diff --git a/src/main/res/raw/blur_fragment_shader.glsl b/src/main/res/raw/blur_fragment_shader.glsl
index f7d933b..1d00448 100644
--- a/src/main/res/raw/blur_fragment_shader.glsl
+++ b/src/main/res/raw/blur_fragment_shader.glsl
@@ -31,10 +31,10 @@ void main()
   {
   vec4 pixel= texture2D(u_Texture,v_TexCoordinate) * u_Weights[0];
 
-  for (int x = 1; x <= u_Radius; x+=1)
+  for (int i=1; i<=u_Radius; i+=1)
     {
-    pixel += ( texture2D(u_Texture,vec2(v_TexCoordinate.x+u_Offsets[x],v_TexCoordinate.y)) +
-               texture2D(u_Texture,vec2(v_TexCoordinate.x-u_Offsets[x],v_TexCoordinate.y)) ) * u_Weights[x];
+    pixel += ( texture2D(u_Texture,vec2(v_TexCoordinate.x+u_Offsets[i],v_TexCoordinate.y)) +
+               texture2D(u_Texture,vec2(v_TexCoordinate.x-u_Offsets[i],v_TexCoordinate.y)) ) * u_Weights[i];
     }
 
   gl_FragColor = pixel;
