-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path11.frag
41 lines (32 loc) · 897 Bytes
/
11.frag
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
39
40
41
precision mediump float;
uniform vec2 resolution;
float PI = 3.14159265;
float rectSDF(vec2 st, vec2 size){
return max(abs(st).x * size.x, abs(st).y * size.y);
}
float crossSDF(vec2 st, float s){
vec2 size = vec2(.25, s);
return min(rectSDF(st, size.xy),
rectSDF(st, size.yx));
}
float stroke(float x, float s, float w){
float d = step(s, x+w*.5) -
step(s, x-w*.5);
return clamp(d, 0., 1.);
}
float fill(float x, float size){
return 1.-step(size, x);
}
void main(){
vec3 color = vec3(0.);
vec2 uv = (gl_FragCoord.xy * 2.0 - resolution) / resolution.y;
float rect = rectSDF(uv, vec2(1.));
float cross = crossSDF(uv, 1.);
color += fill(rect, .4);
color *= step(.5, fract(cross*40.));
color *= step(1., cross*7.);
color += stroke(rect, 0.5, .03);
color += stroke(rect, 0.55, .01);
color += fill(cross, .1);
gl_FragColor = vec4(color, 1.);
}