Skip to main content

A-buffer method

Short answer

The A-buffer extends the Z-buffer by storing a linked list of surface records for pixels with multiple contributions, each containing colour, opacity, depth, and area coverage. After all surfaces are processed, they are sorted by depth and blended front-to-back, supporting transparency and anti-aliasing.

Describe (explain) the A-buffer method of visible surface detection, i.e. how it determines the hidden surfaces.

The A-buffer (anti-aliased, area-averaged, accumulation buffer) method extends the Z-buffer so that several surfaces can be kept for each pixel. It allows transparent surfaces and anti-aliasing. It was developed for the REYES system.

Each A-buffer position has two fields:

  • Depth field: stores a real number.
  • Intensity field: stores surface intensity or a pointer.

Cases

  • If depth field ≥ 0: only one surface covers the pixel. The depth field holds the depth, and the intensity field holds the surface colour.
  • If depth field < 0: several surfaces contribute to the pixel. The intensity field then holds a pointer to a linked list of surface data.
Pixel (x,y):  depth < 0 | pointer
                          |
                          v
            [RGB, opacity, depth, % area coverage, surface id, next] -> [...] -> NULL

Each surface record in the list stores: RGB intensity components, opacity (transparency) parameter, depth, percent of area coverage, surface identifier, other rendering parameters, and a pointer to the next surface.

Determining the visible surfaces

  1. Process polygons one by one; for each pixel it covers, add its record to the pixel's list (or set the depth/intensity if it is the first and covers the whole pixel).
  2. Surfaces are scan-converted using subpixel masks, so partial coverage of a pixel is recorded.
  3. After all polygons are processed, for each pixel the surfaces are sorted by depth.
  4. Then the final colour is found by blending the intensities of the surfaces in the list, using their opacity and area coverage (front to back).

So hidden surfaces are those fully covered by nearer opaque surfaces, and the transparent or partly covering surfaces are blended. The method is slower and needs more memory than the Z-buffer.

✓ Answer checked by Claude Opus 5.5 (high effort)

All Computer Graphics chapter 7 questions →