uniform sampler2D iChannel0;
uniform sampler2D tex0;
uniform sampler2D tex1;
uniform vec2 iResolution;
uniform float iGlobalTime;
vec2 iMouse = vec2(sin(iGlobalTime)*1000.,sin(iGlobalTime*1.3563453)*1000.);

float r(vec2 c){return fract(sin(dot(c,vec2(12.9898,78.233)))*43758.5453);}
void mainImage(out vec4 fragColor, in vec2 fragCoord){
	vec2 uv = (fragCoord.xy / iResolution.xy)-vec2(.5);
    uv *= iResolution.x/iResolution.y;
    uv*=0.7+sin(iGlobalTime+uv)/2.;
    uv = uv+vec2(.5) + 0.0005*vec2(atan(uv.x,uv.y),length(uv));
    vec2 fuv = floor(uv*5.)/5.;
    vec2 fuvrnd = vec2(r(fuv),r(fuv*fuv))-vec2(.5);
    fragColor = texture2D(iChannel1,uv+fuvrnd*max(mod(iGlobalTime+floor(uv.y*12.)/12.,2.)-1.,0.)).gbrr;
}

void main() {
    vec4 fragColor = vec4( 0.);
    vec2 fragCoord = gl_FragCoord.xy;
    mainImage( fragColor, fragCoord);
    gl_FragColor = fragColor;
}