]> git.sesse.net Git - movit/blobdiff - blur_effect.frag
Emulate glReadPixels of GL_ALPHA.
[movit] / blur_effect.frag
index c6e4cf5465e7cbf62178edd8e231d8c962b8c1d2..8853854229038c067b0ab8f677008a24d67e64b7 100644 (file)
@@ -1,14 +1,24 @@
-// A simple unidirectional blur.
+// A simple un.directional blur.
+// DIRECTION_VERTICAL will be #defined to 1 if we are doing a vertical blur,
+// 0 otherwise.
 
 #define NUM_TAPS 16
 
-uniform vec4 PREFIX(samples)[NUM_TAPS + 1];
+uniform vec2 PREFIX(samples)[NUM_TAPS + 1];
 
 vec4 FUNCNAME(vec2 tc) {
-       vec4 sum = vec4(PREFIX(samples)[0].z) * INPUT(tc);
+       vec4 sum = vec4(PREFIX(samples)[0].y) * INPUT(tc);
        for (int i = 1; i < NUM_TAPS + 1; ++i) {
-               vec4 sample = PREFIX(samples)[i];
-               sum += vec4(sample.z) * (INPUT(tc - sample.xy) + INPUT(tc + sample.xy));
+               vec2 sample = PREFIX(samples)[i];
+               vec2 sample1_tc = tc, sample2_tc = tc;
+#if DIRECTION_VERTICAL
+               sample1_tc.y -= sample.x;
+               sample2_tc.y += sample.x;
+#else
+               sample1_tc.x -= sample.x;
+               sample2_tc.x += sample.x;
+#endif
+               sum += vec4(sample.y) * (INPUT(sample1_tc) + INPUT(sample2_tc));
        }
        return sum;
 }