#version 300 es

precision highp float;

in vec4 point_color;
in float point_highlight;
in float total_radius;

out vec4 outColor;

void main() {
    float r = total_radius * length(2.*gl_PointCoord - vec2(1.));
    
    const float POINT_RADIUS = 4.;
    float border = smoothstep(POINT_RADIUS - 1., POINT_RADIUS, r);
    float disk = 1. - smoothstep(total_radius - 1., total_radius, r);
    vec4 color = mix(point_color, vec4(1.), border * point_highlight);
    outColor = vec4(vec3(1.), disk) * color;
}