#version 150 uniform sampler2D t0, ts; uniform vec2 dt; uniform float factor = 1.; uniform int steps = 8; void main(void) { vec2 cdt = dt / steps; vec2 ct = qgl_FragTexture.xy; vec3 speed = texelFetch(ts, ivec2(gl_FragCoord.xy), 0).rgb * 256 * factor; int hsteps = steps / 2; ct -= speed.xy * cdt * hsteps; vec3 scol = vec3(0);//texture(t0, ct).rgb; float sum = 0.; for (int i = 0; i < steps; ++i) { ct += speed.xy * cdt; float mul = 1. - abs(i - hsteps) * 2. / steps; scol += texture(t0, ct).rgb * mul; sum += mul; } scol /= sum; qgl_FragData[0].rgb = scol; }