Fury Canvas

Fragment Shader

#version 300 es precision highp float; in vec2 vTextureCoordinates; in vec2 vPos; uniform float uTime; uniform vec2 uMousePos; uniform int uMouseDown; uniform sampler2D uTexture; out vec4 fragColor; void main() { float v1 = (sin(vTextureCoordinates.s + uTime) + 1.0) / 2.0; float v2 = (cos(vTextureCoordinates.t + uTime) + 1.0) / 2.0; float d = distance(uMousePos, vPos); vec2 tt = vec2(vTextureCoordinates.s + sin(uTime / 10.0), vTextureCoordinates.t + cos(uTime / 10.0)); vec4 c1 = texture(uTexture, tt) * 1.1; float avg = (c1.r + c1.g + c1.b) / 3.0; float r = c1.r + v1 * pow(avg, 4.0) - pow(d, pow(avg, 2.0) + float(uMouseDown) * avg); float g = c1.g + v2 * pow(avg, 4.0) - pow(d, pow(avg, 2.0) + float(uMouseDown) * avg); float b = c1.g - pow(d,pow(avg, 2.0) + float(uMouseDown) * avg); fragColor = vec4(r, g, b, 1.0); }