X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=blur_effect.frag;h=7e5a42430f986aaa4c92a2e80708d11db5de7960;hp=8c0a01d6216c35bdb59836fbe6a8d831dc2e2fee;hb=0a3c9320e21fc211f0c61a4bda1c6932920c6883;hpb=a0ced951a3ad27223d71caae71eeeb5c62c6ce77 diff --git a/blur_effect.frag b/blur_effect.frag index 8c0a01d..7e5a424 100644 --- a/blur_effect.frag +++ b/blur_effect.frag @@ -1,24 +1,14 @@ // A simple unidirectional blur. -uniform vec2 PREFIX(pixel_offset); -uniform float PREFIX(weight)[15]; +#define NUM_TAPS 16 + +uniform vec4 PREFIX(samples)[NUM_TAPS + 1]; vec4 FUNCNAME(vec2 tc) { - vec4 x = LAST_INPUT(tc); - return - vec4(PREFIX(weight)[ 0]) * LAST_INPUT(tc - 7.0 * PREFIX(pixel_offset)) + - vec4(PREFIX(weight)[ 1]) * LAST_INPUT(tc - 6.0 * PREFIX(pixel_offset)) + - vec4(PREFIX(weight)[ 2]) * LAST_INPUT(tc - 5.0 * PREFIX(pixel_offset)) + - vec4(PREFIX(weight)[ 3]) * LAST_INPUT(tc - 4.0 * PREFIX(pixel_offset)) + - vec4(PREFIX(weight)[ 4]) * LAST_INPUT(tc - 3.0 * PREFIX(pixel_offset)) + - vec4(PREFIX(weight)[ 5]) * LAST_INPUT(tc - 2.0 * PREFIX(pixel_offset)) + - vec4(PREFIX(weight)[ 6]) * LAST_INPUT(tc - PREFIX(pixel_offset)) + - vec4(PREFIX(weight)[ 7]) * LAST_INPUT(tc) + - vec4(PREFIX(weight)[ 8]) * LAST_INPUT(tc + PREFIX(pixel_offset)) + - vec4(PREFIX(weight)[ 9]) * LAST_INPUT(tc + 2.0 * PREFIX(pixel_offset)) + - vec4(PREFIX(weight)[10]) * LAST_INPUT(tc + 3.0 * PREFIX(pixel_offset)) + - vec4(PREFIX(weight)[11]) * LAST_INPUT(tc + 4.0 * PREFIX(pixel_offset)) + - vec4(PREFIX(weight)[12]) * LAST_INPUT(tc + 5.0 * PREFIX(pixel_offset)) + - vec4(PREFIX(weight)[13]) * LAST_INPUT(tc + 6.0 * PREFIX(pixel_offset)) + - vec4(PREFIX(weight)[14]) * LAST_INPUT(tc + 7.0 * PREFIX(pixel_offset)); + vec4 sum = vec4(PREFIX(samples)[0].z) * LAST_INPUT(tc); + for (int i = 1; i < NUM_TAPS + 1; ++i) { + vec4 sample = PREFIX(samples)[i]; + sum += vec4(sample.z) * (LAST_INPUT(tc - sample.xy) + LAST_INPUT(tc + sample.xy)); + } + return sum; }