const float Samples = 4.; const float Strength = 0.085; // 2.5% vec3 chromatic_aberration(in sampler2D tex, in vec2 uv) { vec3 col = vec3(0); uv -= .5; vec3 f = 1. - length(uv) * Strength*vec3(2.,1.,0.); for (float i = 0.; i < Samples; i++) { vec3 fs = mix(f, vec3(1), i/Samples); col += vec3( texture(tex, uv * fs.x+.5).r, texture(tex, uv * fs.y+.5).g, texture(tex, uv * fs.z+.5).b ); } return col / Samples; } void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 uv = fragCoord/iResolution.xy; fragColor = vec4(chromatic_aberration(iChannel0, uv),1.0); }