1varying vec2 v_TexCoord;
2varying vec2 v_Position;
3uniform sampler2D u_Tex0;
4uniform float u_Time;
5
6// CONFIG
7float speed = 10.0;
8float height = 11.5;
9float angle = 45.0; // degrees
10float intensity = 0.8;
11// CONFIG END
12
13vec2 rotate(vec2 v, float a) {
14 float s = sin(a);
15 float c = cos(a);
16 mat2 m = mat2(c, -s, s, c);
17 return m * v;
18}
19
20void main()
21{
22 gl_FragColor = texture2D(u_Tex0, v_TexCoord);
23
24 vec2 p = rotate(v_Position, (angle / 180.0) * 3.14);
25 float frame = mod(p.y, height);
26 float timeFrame = mod(u_Time * speed, height);
27 float dist = min(abs(frame - timeFrame), min(abs(frame - timeFrame - height), abs(frame - timeFrame + height)));
28 gl_FragColor.xyz *= intensity / sqrt(max(1.0, dist));
29
30 if(gl_FragColor.a < 0.01) discard;
31}
32