commit 464e53fab56372081cb72edfe46587f2daebb9bc
Author: Leszek Koltunski <leszek@distorted.org>
Date:   Fri Jan 27 21:42:28 2017 +0000

    Beginnings of the 'Multiblur' app.

diff --git a/src/main/java/org/distorted/library/EffectQueuePostprocess.java b/src/main/java/org/distorted/library/EffectQueuePostprocess.java
index abc63d4..664bbb4 100644
--- a/src/main/java/org/distorted/library/EffectQueuePostprocess.java
+++ b/src/main/java/org/distorted/library/EffectQueuePostprocess.java
@@ -93,7 +93,7 @@ class EffectQueuePostprocess extends EffectQueue
   // Support blurs consisting of the present pixel and up to MAX_BLUR pixels in each direction
   private static final int MAX_BLUR = 50;
 
-  // The (linearly-sampled) Gaussian Blur kernels are of the size k0=1, k1=2, k2=2, k3=3, k4=3, k5=4, k6=4,...
+  // The (fixed-function-sampled) Gaussian Blur kernels are of the size k0=1, k1=2, k2=2, k3=3, k4=3, k5=4, k6=4,...
   // i.e. k(i)=floor((i+3)/2).  (the 'i' in k(i) means 'blur taking into account the present pixel and 'i' pixels
   // in all 4 directions)
   // We need room for MAX_BLUR of them, and sum(i=0...N, floor((i+3)/2)) = N + floor(N*N/4)
@@ -178,6 +178,8 @@ class EffectQueuePostprocess extends EffectQueue
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
+// This implements the 'Better separable implementation using GPU fixed function sampling' from
+// https://software.intel.com/en-us/blogs/2014/07/15/an-investigation-of-fast-real-time-gpu-based-image-blur-algorithms
 
   private void computeGaussianKernel(int radius)
     {
@@ -202,9 +204,7 @@ class EffectQueuePostprocess extends EffectQueue
 
       for(int i=0; i<=radius; i++) mWeights[i] /= sum;
 
-      // squash the weights and offsets for linear sampling
       int numloops = radius/2;
-
       weightsCache[offset] = mWeights[0];
       offsetsCache[offset] = 0.0f;
 
@@ -221,9 +221,6 @@ class EffectQueuePostprocess extends EffectQueue
         offsetsCache[index]=mOffsets[radius];
         weightsCache[index]=mWeights[radius];
         }
-
-
-      android.util.Log.e("post", "computed kernel size "+radius+" put it into cache="+offset);
       }
     }
 
