uniform vec2 resolution; uniform sampler2D image; uniform float time; float r (vec2 c){ return fract(43.*sin(c.x+7.*c.y)); } float n (vec2 p){ vec2 i = floor(p), w = p-i, j = vec2(1.,0.); w = w*w*(3.-w-w); return mix(mix(r(i), r(i+j), w.x), mix(r(i+j.yx), r(i+1.), w.x), w.y); } float a (vec2 p){ float m = 0., f = 2.; for ( int i=0; i<9; i++ ){ m += n(f*p)/f; f+=f; } return m; } void main(){ float t = fract(.1*time); gl_FragColor = texture2D(image, gl_FragCoord.xy/resolution) * smoothstep(t, t+.1, a(4.5*gl_FragCoord.xy / resolution.x)); }