diff options
Diffstat (limited to 'assets/shaders/ReliefTunnel.frag.glsl')
-rw-r--r-- | assets/shaders/ReliefTunnel.frag.glsl | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/assets/shaders/ReliefTunnel.frag.glsl b/assets/shaders/ReliefTunnel.frag.glsl new file mode 100644 index 00000000..cee707db --- /dev/null +++ b/assets/shaders/ReliefTunnel.frag.glsl | |||
@@ -0,0 +1,35 @@ | |||
1 | #ifdef GL_ES | ||
2 | precision highp float; | ||
3 | #endif | ||
4 | |||
5 | uniform vec2 u_resolution; | ||
6 | uniform float u_time; | ||
7 | uniform sampler2D u_tex0; | ||
8 | |||
9 | void main(void) | ||
10 | { | ||
11 | vec2 p = -1.0 + 2.0 * gl_FragCoord.xy / u_resolution.xy; | ||
12 | vec2 uv; | ||
13 | |||
14 | float r = sqrt( dot(p,p) ); | ||
15 | float a = atan(p.y,p.x) + 0.5*sin(0.5*r-0.5*u_time); | ||
16 | |||
17 | float s = 0.5 + 0.5*cos(7.0*a); | ||
18 | s = smoothstep(0.0,1.0,s); | ||
19 | s = smoothstep(0.0,1.0,s); | ||
20 | s = smoothstep(0.0,1.0,s); | ||
21 | s = smoothstep(0.0,1.0,s); | ||
22 | |||
23 | uv.x = u_time + 1.0/( r + .2*s); | ||
24 | uv.y = 3.0*a/3.1416; | ||
25 | |||
26 | float w = (0.5 + 0.5*s)*r*r; | ||
27 | |||
28 | vec3 col = texture2D(u_tex0,uv).xyz; | ||
29 | |||
30 | float ao = 0.5 + 0.5*cos(7.0*a); | ||
31 | ao = smoothstep(0.0,0.4,ao)-smoothstep(0.4,0.7,ao); | ||
32 | ao = 1.0-0.5*ao*r; | ||
33 | |||
34 | gl_FragColor = vec4(col*w*ao,1.0); | ||
35 | } | ||