precision mediump float; uniform sampler2D uTexture; uniform vec3 uTime; uniform vec2 uMouse; varying vec2 vUv0; varying vec2 vUv1; varying vec2 vUv2; vec2 offset(vec2 uv, float time) { return uv + vec2( (-uMouse.x*0.2 + time) * pow( ((1.0 - uv.y) + 1.0) * .5, 8.0 ) * 0.1, 0.0 ); } void main() { float a = texture2D(uTexture, offset(vUv0, uTime.x)).x + texture2D(uTexture, offset(vUv1, uTime.y)).y + texture2D(uTexture, offset(vUv2, uTime.z)).z; gl_FragColor = vec4( 236.0 / 255.0, 247.0 / 255.0, 241.0 / 255.0, a ); }