Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
53 lines
1.6 KiB
GLSL
53 lines
1.6 KiB
GLSL
in vec3 v_data;
|
|
|
|
layout (std140) uniform CircleEvaluatedPropsUBO {
|
|
highp vec4 u_color;
|
|
highp vec4 u_stroke_color;
|
|
mediump float u_radius;
|
|
lowp float u_blur;
|
|
lowp float u_opacity;
|
|
mediump float u_stroke_width;
|
|
lowp float u_stroke_opacity;
|
|
bool u_scale_with_map;
|
|
bool u_pitch_with_map;
|
|
lowp float props_pad1;
|
|
};
|
|
|
|
#pragma mapbox: define highp vec4 color
|
|
#pragma mapbox: define mediump float radius
|
|
#pragma mapbox: define lowp float blur
|
|
#pragma mapbox: define lowp float opacity
|
|
#pragma mapbox: define highp vec4 stroke_color
|
|
#pragma mapbox: define mediump float stroke_width
|
|
#pragma mapbox: define lowp float stroke_opacity
|
|
|
|
void main() {
|
|
#pragma mapbox: initialize highp vec4 color
|
|
#pragma mapbox: initialize mediump float radius
|
|
#pragma mapbox: initialize lowp float blur
|
|
#pragma mapbox: initialize lowp float opacity
|
|
#pragma mapbox: initialize highp vec4 stroke_color
|
|
#pragma mapbox: initialize mediump float stroke_width
|
|
#pragma mapbox: initialize lowp float stroke_opacity
|
|
|
|
vec2 extrude = v_data.xy;
|
|
float extrude_length = length(extrude);
|
|
|
|
lowp float antialiasblur = v_data.z;
|
|
float antialiased_blur = -max(blur, antialiasblur);
|
|
|
|
float opacity_t = smoothstep(0.0, antialiased_blur, extrude_length - 1.0);
|
|
|
|
float color_t = stroke_width < 0.01 ? 0.0 : smoothstep(
|
|
antialiased_blur,
|
|
0.0,
|
|
extrude_length - radius / (radius + stroke_width)
|
|
);
|
|
|
|
fragColor = opacity_t * mix(color * opacity, stroke_color * stroke_opacity, color_t);
|
|
|
|
#ifdef OVERDRAW_INSPECTOR
|
|
fragColor = vec4(1.0);
|
|
#endif
|
|
}
|