[comp.graphics] Pixar Reyes/A-buffer Summary

gg10@prism.gatech.EDU (Galloway, Greg) (09/06/89)

Below is my original question that was posted a couple of weeks ago,
and a list of the responses I got.  I was disappointed that so
few people seem interested in technical topics of this sort.
(I guess everyone is too busy ray-tracing spheres, oh well. :-)

Thanks to all who responded, especially Loren Carpenter.

I won't summarize, I'll let you digest thru this yourself.

Greg Galloway
Georgia Tech Research Institute
Georgia Inst of Technology
gg10@prism.gatech.edu


Long listing follows, press N to skip now.

Original question:
****************************************************************************
I need some help sorting out a slight conflict between two Siggraph
articles.

In [Carp84] Carpenter states that:

   "The A-buffer belongs to the class of hidden surface algorithms called
   `scanline'.  The REYES (Renders Everything You Ever Saw) sytem, of
   which the A-buffer is a part, is a scanline renderer, but scanline order
   is not required by the A-buffer."

In [Cook87] it states that:

   "The z buffer is important for two reasons. ..."

From this and some other references to z buffers throughout the Cook article
I get the impression that Reyes uses the z buffer technique and not scanline.

I'd like to implement a scanline rendering algorithm because of the ability
of the scanline algorithm to completely antialias a given line.  I am planning
on antialiasing nearly horizontal lines and some polygons which might drop 
out between scanlines by using Cook's stochastic sampling technique.

Does anyone out there have any insight into how either the Reyes or A-buffer
algorithms work?  Cook, himself, told me at Siggraph that A-buffer was not
a part of the Reyes system.  Anybody know any different?

References:

[Carp84]  "The A-buffer, an Antialiased Hidden Surface Method", by
          Loren Carpenter, Computer Graphics Project, Computer Division,
          Lucasfilm Ltd., Computer Graphics (Siggraph proceedings 1984).

[Cook87]  "The Reyes Image Rendering Architecture", Robert L. Cook, Loren
          Carpenter, Edwin Catmull, Pixar, Computer Graphics (Siggraph 87).


****************************************************************************
Responses:
****************************************************************************

The A-buffer extends the standard Z-buffer technique in the following ways:

	1) It supports transparency by allowing multiple surfaces per pixel

	2) It supports antialiasing by keeping a per-pixel list of all
	   visible fragments of surfaces at each pixel, which can then
	   be resolved into a single blended color.

While this is all possible using standard scanline techniques, the A-buffer
offered an efficient means of handling all this using bitmasks and boolean
operations on those masks to handle sub-pixel clipping.

The most successful use of the A-buffer that I have seen is when it is
integrated into a scanline rendering algorithm.

The REYES architecture goes much further by dividing surfaces into fragments 
that are so small that texture and hilight aliasing problems (which plague
other types of renderers) go away.  Also, further manipulation of the 
individual shaded fragments can give you special effects like Motion Blur, 
Depth of Field, Displacement Mapping, Stochastic Antialiasing, Blurry
Reflections, True Translucency -- basically, all the stuff that distributed
ray tracing offered.

However REYES really needs parametric surfaces (as opposed to polygons)
to be efficient -- which is a problem for some people (like us.)

Hope this is of some help.


Charlie Gibson -- Rhythm & Hues, Inc.
INTERNET: celia!charlie@usc.edu                    Consequences, shmonsequences,
          celia!charlie@tis.llnl.gov               as long as I'm rich....
UUCP:     ...{ames,hplabs}!lll-tis!celia!charlie   

****************************************************************************

Some information...

The use of the word "scanline" in the A-buffer article is meant to imply that
the A-buffer works best when the image is constructed in a "plane sweep"
manner, i.e. a scanline or column at a time.  That way the zillions of little
fragments can be resolved and thrown away as soon as possible, keeping
memory requirements manageable.

The A-buffer has very little in common with the old "scanline' algorithms
like Watkins or Romney or Bouknight where an image scanline is computed
by first intersecting a plane (defined by the eye and the scanline's
location in the image) through the model, then treating the 2D cross section
as a 1D hidden surface problem.

The A-buffer works by slicing the model (in screen space) BETWEEN the
scanlines, into strips exactly one scanline high, centered on the scanline.
Then the strips are chopped up into squares, centered on the pixels.  Each
pixel contains a list of the polygon fragments covering it.  There are a
lot of efficiencies that can be invoked here, like full squares culling
hidden full squares from the list, merging fragments from adjacent polygons
into full squares, using bit masks for visibility within a pixel, etc...

REYES has gone through 6 total rewrites in its history.  I did the first 4,
and the A-buffer was the core of #4.  Cook did #5 and replaced the A-buffer
with the stochastic sampling hider.  We did that because the A-buffer was
too hard to bend to incorporate motion blur.  Also, the antialiasing was
quite a bit better.  Rewrite #6 was done to make REYES compatible with
the RenderMan specification (and to get it to run on a network of Transputers).

The stochastic sampling hider uses a per-sample z-buffer modified to
render transparent objects.

Hope that helps.   Feel free to summarize & distribute to interested parties.

			Loren Carpenter
			...{ucbvax,sun}!pixar!loren

****************************************************************************

I wrote the visible surface algorithm classification section in the IEEE 
tutorial: Image Synthesis.

Reyes, as described in Cook87 (Charlie Gunn implemented the Chap version) is a
Z-buffer algorithm. In fact it is a very simple z-buffer algorithm almost
exactally the same as presented in Catmull's thesis, except for the stochastic
supersampling.

According to my definition of what a scan line algorithm is, (see the book) the
A-buffer algorithm is not a scan line algorithm. It is a modified and agumented
z-buffer algorithm. It is very similar to an algorithm (unpublished) by Darwin
Peachy called the fragment-buffer, and vaguely similar to many other
algorithms.

An earlier version of Reyes may have used the A-buffer. But it does not any
more. 

Real scan line algorithms are pretty rare these days. (Ken Joy wrote the
section in our book on scan line algorithms, check it for references) It is
true that you can do good antialiasing in one dimension with a scan line
algorithm, but the other direction is real hard to antialias. This tends to
make images with directional artifacts. If you want really good antialiasing
you have to 1) use an area subdivision, or scan plane algorithm with a good
filter, or 2) supersample like crazy with any point sampling algorithm.

Charles W. Grant

****************************************************************************

  I think that Rob meant "Z-buffer" as a more general concept,
of which "A-buffer" is a subclass.  If you carefully consider
why a Z-buffer hider (as opposed to a polygon span or Weiler-Atherton
clipping algorithm, for example) is important to Reyes, you will
see that A-buffers share these characteristics.

  The Reyes software originally used the A-buffer scheme, but when
"stochastic sampling" was invented, the hidden surface code
was changed to incorporate that.  This means that the code is
no longer a true A-buffer.  It has much in common with an A-buffer,
but cannot (for example) use the nice precomputed hit-test bitvectors
that make the A-buffer so fast.
-- 
UUCP:		{sun,ucbvax}!pixar!aaa		Tony Apodaca
ARPA,BITNET:	aaa%pixar.uucp@sun.com		Pixar, San Rafael, CA, USA

****************************************************************************

rjg@amber.WV.TEK.COM (Richard J. Greco;685-2407;61-049;;amber) (09/08/89)

Have the stochastic supersampling algorithms been published?  If yes,
could someone post the publications containing the papers.
Richard J. Greco
rjg@orca.WV.TEK.COM        {hplabs|uw-beaver|decvax}!tektronix!orca!rjg

"Nonsense!  You're only saying that because no one ever has."