// Name: Water // Author: diatribes // URL: https://www.shadertoy.com/view/tXjXDy #version 330 core precision highp float; out vec4 FragColor; in vec2 vUV; uniform vec2 iResolution; uniform float iTime; /* -2 by @FabriceNeyret2 thanks!! :D If it doesn't display correctly, change line 17 "r/r" to "vec3(1)" */ void mainImage( out vec4 o, vec2 u ) { float s=.002, i=0., n; // FIXED: Initialize i=0 vec3 r = vec3(iResolution.xy, iResolution.x/iResolution.y); vec3 p = vec3(0); u = (u-r.xy/2.)/r.y-.3; o = vec4(0); // FIXED: Initialize output to black for(; i < 32. && s > .001; i++) { // Clamp only extreme overflow values, let normal brightness through vec4 term = vec4(5,2,1,0)/max(length(u-.1), 0.001); o += min(term, vec4(100.0)); for (p += vec3(u*s,s), s = 1. + p.y, n =.01; n < 1.; n+=n) { s += abs(dot(sin(p.z+iTime+p / n), vec3(1))) * n*.1; } } o = tanh(o/5e2); } void main() { vec2 fragCoordPixels = vUV * iResolution; vec4 outColor; mainImage(outColor, fragCoordPixels); FragColor = outColor; }