ledbanner-shaders/fluid.glsl
2018-05-19 17:23:49 +02:00

33 lines
696 B
GLSL

uniform float time;
uniform vec2 resolution;
uniform vec2 mouse;
#define MAX_ITER 3
void main(void) {
vec2 v_texCoord = gl_FragCoord.xy / min(resolution.x, resolution.y) / 2.0;
vec2 p = v_texCoord * 8.0 - vec2(20.0);
vec2 i = p;
float c = 1.0;
float inten = .05;
for (int n = 0; n < MAX_ITER; n++) {
float t = time * (1.0 - (3.0 / float(n+1)));
i = p + vec2(cos(t - i.x) + sin(t + i.y),
sin(t - i.y) + cos(t + i.x));
c += 1.0/length(vec2(p.x / (sin(i.x+t)/inten),
p.y / (cos(i.y+t)/inten)));
}
c /= float(MAX_ITER);
c = 1.5 - sqrt(c);
vec4 texColor = vec4(0.001, 0.1, 0.1, 1.);
texColor.rgb *= (1.0 / (1.0 - (c + 0.05)));
gl_FragColor = texColor;
}