fingerprints
/
algo.glsl
34 строки · 832.0 Байт
1vec2 hash2( vec2 p )
2{
3p = vec2( dot(p,vec2(63.31,127.63)), dot(p,vec2(395.467,213.799)) );
4return -1.0 + 2.0*fract(sin(p)*43141.59265);
5}
6
7void main(void)
8{
9float invzoom = 64.;
10vec2 uv = invzoom*((gl_FragCoord.xy-0.5*resolution.xy)/resolution.x);
11float bounds = smoothstep(9.,10.,length(uv*vec2(0.74,0.55)));
12
13float a=0.;
14vec2 h = vec2(floor(7.*time), 0.);
15for(int i=0; i<50; i++){
16float s=sign(h.x);
17h = hash2(h)*vec2(15.,20.);
18a += s*atan(uv.x-h.x, uv.y-h.y);
19}
20
21uv += 20.*abs(hash2(h));
22
23a+=atan(uv.y, uv.x);
24
25float w = 0.8;
26float p=(1.-bounds)*w;
27float s = min(0.3,p);
28float l = length(uv)+0.319*a;
29
30float m = mod(l,2.);
31float v = (1.-smoothstep(2.-s,2.,m))*smoothstep(p,p+s,m);
32
33glFragColor = vec4(v,v,v,1.);
34}
35