#version 330 core
out vec4 FragColor;
uniform vec3 iResolution;
uniform float iTime;
uniform float uAlpha;
uniform sampler2D iChannel0;

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    vec2 p = (2.0*fragCoord-iResolution.xy) / iResolution.y;

    vec2 cst = vec2(cos(iTime), sin(iTime));
    mat2 tra = mat2(cst.x,-cst.y,cst.y,cst.x)*(1.0 + 0.5*cst.x);

    vec3 col = texture( iChannel0, 0.5 + 0.5*tra*p ).xyz;
    fragColor = vec4( col, 1.0 );
}

void main(){ mainImage(FragColor, gl_FragCoord.xy); FragColor.a *= uAlpha; }
