#line 0 precision lowp float; varying lowp vec2 pos; uniform sampler2D f_color; uniform sampler2D f_depth; uniform vec2 screenSize; uniform vec2 randomInter; uniform float randomInterF; vec2 barrelDistortion(vec2 coord, float amt){ vec2 cc = coord - 0.5; float dist = dot(cc, cc); return coord + cc * dist * amt; } #define amount 0.1 #define abberation 0.015 float noise(vec2 seed){ float r = sin(dot(seed, vec2(12.10482130, 4.32894663)) * 763.345734); float r1 = fract(r * (1.0 + randomInter.x*34735.49057645)); float r2 = fract(r * (1.0 + randomInter.y*74764.63566345)); return (r1*r1*r1)*(randomInterF) + (r2*r2*r2)*(1.0 - randomInterF); } void main(){ vec2 yeer = screenSize * 0.3; vec2 pos2 = pos * 0.93 + 0.035; vec3 color = vec3(0.0); color += vec3(0.8, 0.0, 0.0) * texture2D(f_color, barrelDistortion(pos2, (amount + abberation + abberation))).rgb; color += vec3(0.0, 1.0, 0.1) * texture2D(f_color, barrelDistortion(pos2, (amount + abberation))).rgb; color += vec3(0.2, 0.0, 0.9) * texture2D(f_color, barrelDistortion(pos2, (amount))).rgb; color *= 0.8; color += 0.2 * texture2D(f_color, barrelDistortion(pos2, (amount * 1.5))).rgb; float r = noise(floor(pos * yeer) / yeer); gl_FragColor = vec4(color.rgb + ((0.08 + color.rgb) * (r * 0.07 / (0.06+color.r+color.g*4.0+color.b))), 1.0); }