gl_PointSize = scr_h / distance(-(gl_ModelViewMatrix * gl_Vertex), gl_Vertex);
This works but doesn't stop the sprites from getting bigger, what happens is that the sprite gets smaller with distance but only starting at a certain point before that the are growing forming a sort of "bulge" in the middle of a row of sprites. Any idea where this scaling upward is coming from, is there something that I can disable? I certainly didn't enable anything except this:
glEnable(GL_POINT_SPRITE);
glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE);
glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);