1// https://www.shadertoy.com/view/lly3zd
2
3// iChannel0: Source, filter=linear, wrap=clamp
4// BBox: iChannel0
5
6#if 0
7void mainImage( out vec4 fragColor, in vec2 fragCoord )
8{
9        vec2 uv = fragCoord.xy / iResolution.xy;
10    uv.y -= 0.5;
11    uv.x -= 0.5;
12    vec2 uv2 = uv * 2.;
13
14    float doFlip = 0.0;
15    if (abs(uv2.x) > 1.0)
16    {
17        doFlip = mod(floor(uv2.x),2.0);
18    }
19    else if (uv2.x < 0.0) {
20        doFlip = 1.0;
21    }
22
23    float doFlipY = 0.0;
24    if (abs(uv2.y) > 1.0)
25    {
26        doFlipY = mod(floor(uv2.y),2.0);
27    }
28    else if (uv2.y < 0.0) {
29        doFlipY = 1.0;
30    }
31
32    uv2 = mod(uv2,1.0);
33    if (doFlip == 1.0)
34        uv2.x = 1.0 - uv2.x;
35    if (doFlipY == 1.0)
36        uv2.y = 1.0 - uv2.y;
37
38    fragColor = mix(texture(iChannel0, uv2),vec4(0.0,0.0,0.0,0.0), 0.);
39}
40#else
41// The same, but shorter:
42
43void mainImage(out vec4 o, vec2 i)
44{
45    o = texture(iChannel0, abs(i/iResolution.xy * 2. - 1.));
46}
47#endif
48