ngx-open-map-wrapper/node_modules/maplibre-gl/src/shaders/collision_circle.vertex.glsl

31 lines
918 B
GLSL

in vec2 a_pos;
in float a_radius;
in vec2 a_flags;
uniform vec2 u_viewport_size;
out float v_radius;
out vec2 v_extrude;
out float v_collision;
void main() {
float radius = a_radius;
float collision = a_flags.x;
float vertexIdx = a_flags.y;
vec2 quadVertexOffset = vec2(
mix(-1.0, 1.0, float(vertexIdx >= 2.0)),
mix(-1.0, 1.0, float(vertexIdx >= 1.0 && vertexIdx <= 2.0)));
vec2 quadVertexExtent = quadVertexOffset * radius;
// Apply small padding for the anti-aliasing effect to fit the quad
// Note that v_radius and v_extrude are in screen coordinates already
float padding_factor = 1.2;
v_radius = radius;
v_extrude = quadVertexExtent * padding_factor;
v_collision = collision;
gl_Position = vec4((a_pos / u_viewport_size * 2.0 - 1.0) * vec2(1.0, -1.0), 0.0, 1.0) + vec4(quadVertexExtent * padding_factor / u_viewport_size * 2.0, 0.0, 0.0);
}