1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#ifdef GL_ES
precision highp float;
#endif
uniform vec2 u_resolution;
uniform float u_time;
uniform float u_speed;
uniform sampler2D u_tex0;
void main(void)
{
vec2 p = -1.0 + 2.0 * gl_FragCoord.xy / u_resolution.xy;
vec2 uv;
float time = u_time * u_speed;
float r = sqrt( dot(p,p) );
float a = atan(p.y,p.x) + 0.5*sin(0.5*r-0.5*time);
float s = 0.5 + 0.5*cos(7.0*a);
s = smoothstep(0.0,1.0,s);
s = smoothstep(0.0,1.0,s);
s = smoothstep(0.0,1.0,s);
s = smoothstep(0.0,1.0,s);
uv.x = time + 1.0/( r + .2*s);
uv.y = 3.0*a/3.1416;
float w = (0.5 + 0.5*s)*r*r;
vec3 col = texture2D(u_tex0,uv).xyz;
float ao = 0.5 + 0.5*cos(7.0*a);
ao = smoothstep(0.0,0.4,ao)-smoothstep(0.4,0.7,ao);
ao = 1.0-0.5*ao*r;
gl_FragColor = vec4(col*w*ao,1.0);
}
|