1 | varying 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 |
|
11 | void 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 | }
|