[cairo] Mozilla on Cairo

David Reveman davidr at novell.com
Tue May 10 23:15:36 PDT 2005


On Wed, 2005-05-11 at 13:04 +1200, Robert O'Callahan wrote:
> On Tue, 2005-05-10 at 16:00 -0400, Carl Worth wrote:
> > On Fri, 22 Apr 2005 08:01:16 -0400, Owen Taylor wrote:
> > > >       Also, this page doesn't really show it, but we are running into
> > > > the problem of antialiased fills causing artifacts where two shapes
> > > > share a non-pixel-aligned edge. I really want to add a mode to cairo_t
> > > > that turns antialiasing off. What are the chances that that would be
> > > > accepted?
> > 
> > I've mentioned before that adding full-scene antialiasing one way or
> > another might be the right way to solve this problem in the most
> > general case.
> 
> But FSAA is a combination of "turn off pixel-coverage antialiasing" and
> "render to a larger buffer and scale down with pixel averaging". So the
> first step to supporting FSAA is to be able to turn off the coverage
> antialiasing. Then, when resources permit, we can add supersampling.
> 
> > But, if your scenes are strictly 2.5D, (that is, each object exists in
> > a plane at a constant Z value), then you might likely be able to
> > achieve seam-free rendering by using the CAIRO_OPERATOR_SATURATE
> > operator and rendering your objects in a similar order as is done for
> > OpenGL.
> 
> Hmm. Can you explain further, or give me a URL? (The cairo docs don't
> describe the operators...) But I *suspect* this isn't going to work
> because...
> 
> <div style="background:black; width:50px; height:7.5px;"></div>
> <div style="background:black; width:50px; height:7.5px;"></div>
> 
> Technically the second div is above the first, but the author's still
> going to expect continuous black. In this case we could relatively
> easily determine that they don't overlap so we should put them all in
> the same layer, but in general we do care about edges shared by shapes
> at different Z values.
> 
> Also, it looks like glitz doesn't accelerate CAIRO_OPERATOR_SATURATE.

Correct, OpenGL can't do SATURATE with pre-multiplied colors. I can make
it work with solid non-super-luminous colors just by unpre-multiplying,
I should probably do that... 

-David




More information about the cairo mailing list