3 uniform sampler2D tex0; // liquid map
4 uniform vec4 liquidColorMul;
5 uniform float iGlobalTime;
8 const float speed = 0.1;
9 const float frequency = 8.0;
11 vec2 shift (in vec2 p) {
12 vec2 d = vec2(iGlobalTime*speed);
13 vec2 f = frequency*(p+d);
14 return cos(vec2(cos(f.x-f.y)*cos(f.y), sin(f.x+f.y)*sin(f.y)));
19 vec2 texCoord = gl_TexCoord[0].xy;
20 vec4 clr = texture2D(tex0, texCoord);
21 if (clr.a == 0.0) discard;
24 vec2 q = shift(r+1.0);
25 float amplitude = 2.0/textureSize(tex0, 0).x;
26 vec2 s = r+amplitude*(p-q);
27 clr = texture2D(tex0, s);
28 // if distortion moved out of liquid area, dup texel instead
29 if (clr.a == 0.0) clr = texture2D(tex0, texCoord);
30 if (liquidColorMul.a != 0.0) clr *= liquidColorMul;