@@ -9,24 +9,29 @@ varying vec2 v_coords;
99uniform vec3 color;
1010uniform float radius;
1111
12- float rounded_box(vec2 center, vec2 size, float radius) {
13- return length (max (abs (center) - size + radius, 0.0 )) - radius;
12+ float rounded_box(in vec2 p, in vec2 b, in vec4 r)
13+ {
14+ r.xy = (p.x > 0.0 ) ? r.xy : r.zw;
15+ r.x = (p.y > 0.0 ) ? r.x : r.y;
16+ vec2 q = abs (p) - b + r.x;
17+ return min (max (q.x, q.y), 0.0 ) + length (max (q, 0.0 )) - r.x;
1418}
1519
1620void main() {
1721 vec2 center = size / 2.0 ;
1822 vec2 location = v_coords * size;
1923 vec4 mix_color;
24+ vec4 corners = vec4 (radius);
2025
21- float distance = rounded_box(location - center, size / 2.0 , radius );
26+ float distance = rounded_box(location - center, size / 2.0 , corners );
2227 float smoothedAlpha = 1.0 - smoothstep (0.0 , 1.0 , distance );
23-
28+
2429 mix_color = mix (vec4 (0.0 , 0.0 , 0.0 , 0.0 ), vec4 (color, alpha), smoothedAlpha);
25-
26- #if defined(DEBUG_FLAGS)
30+
31+ #if defined(DEBUG_FLAGS)
2732 if (tint == 1.0 )
2833 mix_color = vec4 (0.0 , 0.3 , 0.0 , 0.2 ) + mix_color * 0.8 ;
29- #endif
34+ #endif
3035
3136 gl_FragColor = mix_color;
32- }
37+ }
0 commit comments