2D antialiased graphics using OpenGL

Peter Nilsson c99pnn@cs.umu.se
Tue, 09 Dec 2003 19:55:26 +0100


This is great information. Tackling the anti-aliasing "problem" is the 
next big step we have planned for libglc (OpenGL backend for Cairo). I 
would like to point out that neither I nor David (also working on 
libglc) are especially experienced OpenGL developers.  It seems there 
are a lot of competent OpenGL folx around here and all help or tips are 
much appreciated.

The bits can be fetched from the Cairo CVS: `cvs -d 
:pserver:anoncvs@cvs.cairographics.org:/cvs/cairo co libglc` or from 
www.cs.umu.se/~c99pnn/thesis

--
Peter Nilsson (c99pnn at cs.umu.se)

Allen Akin wrote:

>On Tue, Dec 09, 2003 at 05:14:58PM +0100, Martijn Sipkema wrote:
>| When doing 2D graphics using OpenGL one needs to draw front to
>| back using GL_SRC_ALPHA_SATURATE. ...
>
>That's one way to do it.
>
>All the antialiased drawing techniques are approximations.  Each has its
>advantages and disadvantages.  Off the top of my head, here are some of
>the techniques and tradeoffs:
>
>	Drawing front-to-back using GL_SRC_ALPHA_SATURATE.  Normally
>	used for drawing geometric primitives with pixel coverage
>	information ("smooth" points and lines and polygons in GL
>	terminology).  Advantages:  Good-quality results for silhouette
>	edges and shared edges.  Disadvantages:  Requires primitives to
>	be sorted; intersecting primitives cause artifacts; hardware
>	support is uneven.
>
>	Multipass using accumulation buffering.  Normally used for
>	full-scene antialiasing.  Advantages:  Works for essentially all
>	primitives in essentially all interrelationships and rendering
>	models; can incorporate other effects such as blurring moving
>	primitives; can yield very high quality results; permits fast
>	rough rendering with incremental improvement in interactive
>	applications.  Disadvantages:  Requires substantial extra
>	memory; is rarely hardware-accelerated in midrange and low-end
>	graphics cards; even with hardware acceleration is relatively
>	slow.
>
>	Multipass using blending.  Similar in concept to accumulation
>	buffered antialiasing.  Advantages:  Can be applied to full
>	scene or to any portion of a scene; generally faster and
>	requires less memory than accumulation buffering; accelerated
>	even on low-end cards; otherwise advantages are similar to
>	accumulation buffering.  Disadvantages:  Requires a simpler
>	rendering model ("painting" or "erasing" work well, but some
>	blending functions don't); getting the filtering parameters
>	right requires care; can be slow if very high quality results
>	are needed and geometry being drawn is complex and
>	geometry-processing rate is low.
>
>	Full-scene antialiasing using software supersampling.  (Drawing
>	to a high-resolution offscreen buffer, then filtering and
>	copying to the final target drawable.)  Advantages:  Works for
>	essentially all primitives, all interrelationships, all
>	rendering models; fast; well-supported.  Disadvantages: Requires
>	a lot of memory, yields only modest-quality results.
>
>	Full-scene antialiasing using hardware assist (typically
>	multisampling, sometimes supersampling).  Advantages:  Very
>	fast; works for all primitives, interrelationships, and
>	rendering models; well-supported in current hardware.
>	Disadvantages:  Some extra memory required (typically less than
>	for software supersampling or accumulation buffering); yields
>	decent-quality results but some people may not find them
>	acceptable for small text.  (Very high-quality results are
>	achieved on high-end systems, but not relevant in this
>	discussion.)
>
>I've skipped a few rarely-used methods, I've probably forgotten a few
>more, and certainly these short summaries are oversimplifying the
>tradeoffs.  It's best to think of them as just suggestions for further
>investigation.
>
>At the moment I'm interested in multipass using blending.  It seems to
>be the most flexible option with low memory requirements and good
>hardware support.  It handles intersections and near-approaches
>correctly, which compositing-based systems often can't, so it looks good
>for scenes with combined text and graphics.  It does place limitations
>on the rendering model, though, and I have no idea whether the toolkit
>and apps folks have thought about whether those would be acceptable.
>
>On the other hand, it's clear that the hardware vendors are putting most
>of their effort into multisampling.
>
>None of the methods described above take advantage of programmability at
>the vertex or fragment levels, so you can expect new variations to be
>developed.
>
>Allen
>
>_______________________________________________
>Xserver mailing list
>Xserver@pdx.freedesktop.org
>http://pdx.freedesktop.org/cgi-bin/mailman/listinfo/xserver
>
>  
>