Shader to create an offset, inward-growing stroke?

Sorting points like that at every animation step is not sustainable/scalable. Hm. I still don’t understand why it is necessary. I am encountering the same problem with my spheres, when I try to set opacity on them instead of discarding fragments (eventually to achieve antialiasing). It is as if points forcibly write the clear color on top of other points.