UNPKG

1.29 kBPlain TextView Raw
1varying vec3 v_data;
2
3#pragma mapbox: define highp vec4 color
4#pragma mapbox: define mediump float radius
5#pragma mapbox: define lowp float blur
6#pragma mapbox: define lowp float opacity
7#pragma mapbox: define highp vec4 stroke_color
8#pragma mapbox: define mediump float stroke_width
9#pragma mapbox: define lowp float stroke_opacity
10
11void main() {
12 #pragma mapbox: initialize highp vec4 color
13 #pragma mapbox: initialize mediump float radius
14 #pragma mapbox: initialize lowp float blur
15 #pragma mapbox: initialize lowp float opacity
16 #pragma mapbox: initialize highp vec4 stroke_color
17 #pragma mapbox: initialize mediump float stroke_width
18 #pragma mapbox: initialize lowp float stroke_opacity
19
20 vec2 extrude = v_data.xy;
21 float extrude_length = length(extrude);
22
23 lowp float antialiasblur = v_data.z;
24 float antialiased_blur = -max(blur, antialiasblur);
25
26 float opacity_t = smoothstep(0.0, antialiased_blur, extrude_length - 1.0);
27
28 float color_t = stroke_width < 0.01 ? 0.0 : smoothstep(
29 antialiased_blur,
30 0.0,
31 extrude_length - radius / (radius + stroke_width)
32 );
33
34 gl_FragColor = opacity_t * mix(color * opacity, stroke_color * stroke_opacity, color_t);
35
36#ifdef OVERDRAW_INSPECTOR
37 gl_FragColor = vec4(1.0);
38#endif
39}