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