[cairo] Survey of polygon rasterization techniques

Matteo Muratori muratmat at gmail.com
Tue Jul 31 12:01:39 PDT 2007

> Could you elaborate on this "should be faster than both" ? I'm interested
> to know what kind of improvement you made.
> I just had a quick look at src/gui/painting/qgrayraster.c in Qt 4.3 and
> I don't see much differences from a relatively old version of the
> FreeType anti-aliasing rasterizer. Maybe some details escape me ?
> Also, you may find interesting that the current FreeType rasterizer 
> sources
> use a scanline-bucket scheme now, instead of QSort, to sort the cells. 
> I've
> done this because in some relatively common cases, it provided a x1.25 
> speedup
> in rendering time.

After having some tests, I've seen than AGG (and i suppose Freetype too) 
has some serious bugs with non simple polygons (intersecting edges, 
partially overlapping edges and so on). It sounds very strange to me 
that such high quality rasterizers have this kind of bug, because it's 
particularly sensible for font rendering, and in general the overall 
error results quite high in those pixels where intersections occur.

AGG author confirmed me that it's an inevitable sacrifice for the 
freedom of even/odd and non-zero fill. Is it true also for Freetype 
Here's a simple example (a 10x10 picture):

p0: 1, 1
p1: 8, 1
p2: 1, 8
p3: 8, 8

And the results with AGG 2.5 (even-odd, but it's valid also for 
non-zero) are here:


As it can be seen, the central pixel is totally white (instead of a 50% 
covered pixel).

About the Inkscape rasterizer, it seems pretty correct, except for the 
use of supersampling schema to do antialias (so the quality isn't 
comparable to analytical coverage calculation-based rasterizers).

More information about the cairo mailing list