'Discard fragments of vertice drawn with gl_PointSize of 100, depending on distance to center

In a strict GLES 3.0 environment I draw vertices as GL_POINTS and set their gl_PointSize to 100, this renders me nice 100x100 px points. But they are flat shaded:

enter image description here

Instead I want to render them as (perfect) circles in my shader.

enter image description here

For GL_TRIANGLE_STRIP I did this by calculating the distance between the flat shaded quad center and the interpolated (between vertices) point position to then discard the fragment when bigger than the wanted radius.

Works fine for GL_TRIANGLE_STRIP. Doesn't work for GL_POINTS because there is only one vertex. I would need 2 vertices to interpolate in between. What I would need is the fragment's position instead, so I could discard the fragment depending on its distance to the points center position.

Any idea how I could do this with GL_POINTS? Switching to GL_TRIANGLE_STRIP or other primitives is not possible. Geometry shaders are also not available.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source