Philipp Klaus Krause wrote:
> Roland found out how to do bigger aliased points on r200 hardware a long
> time ago. AFAIK the patch was never applied since people failed to see
> it's importance.
> 3D modellers use points to mark the currently selected vertices. A
> maximum point size of 1 means they are invisible with today's screen
> resolutions. This makes the r200 DRI driver useless for 3D modelling
> with those applications. Bigger point sizes are really necessary!
> Roland's patch supported only aliased points, but since the maximum
> point sizes for aliased and antialised points can be different that
> would never cause a software fallback. I know that the popular free
> wings3d modeller uses only aliased points and think that it's the same
> with other 3d modellers.
I can apply a patch if you think it's useful. I just thought that
antialiased is the norm for points rather than the exception, but if
it's not it could indeed be useful. I think though for instance
blender3d has now a workaround for cards which only support a point size
of 1.0. The patch has also the obvious drawback that it won't work on
r100 based cards, and people have been requesting large point sizes
btw there is still some chance I could get arb_point_parameters and
arb_point_sprites working (on r200). Interestingly, arb_point_sprites is
not announced by fglrx, nevertheless it actually works. Maybe it's not
quite spec-conformant or has interactions with ATI_fragment_program, but
at least the spriteblast demo worked fine - something I can't tell from
my version which generates texcoords too, but they are apparently wrong.
Same with point parameters, though I've gotten to a point which at least
does some non-random attenuation calculation - the problem is there are
still a dozen or so magic numbers in the vector state which I've just
extracted with glxtest but fail to understand :-(.
For anti-aliased point sizes, those must be kinda emulated. As far as I
can tell, fglrx does this with textured point sprites and using the
alpha blend stage to make the points round (fglrx fails to set it up
correctly when alpha blending is not enabled, and I see no way to make
this method work 100% depending on the user-supplied alpha test and
alpha blend func), and xig does it by emitting a bunch of tri-fans (and
gets it wrong too, when alpha blending is enabled you can see the
individual half-transparent tris, though that's probably an easy to fix