Accumulation buffer

from Wikipedia, the free encyclopedia

The accumulation buffer (English accumulation buffer ) is in the computer graphics , a storage area for images, which are added one after the other there and from which subsequently are averaged. This allows certain graphic effects to be achieved. The accumulation buffer is either implemented in software or provided by the graphics hardware in addition to the framebuffer .

Applications

The following effects can be achieved with the accumulation buffer by calculating the average of several images with different settings:

  • Depth of field by changing the focus of the virtual camera;
  • Antialiasing by moving the camera slightly;
  • Motion blur due to different points in time and thus positions of the objects;
  • soft shadows due to different interpretations of the position of the light source.

Example: antialiasing

The idea behind antialiasing using an accumulation buffer is to prevent the staircase effect by using a higher sampling rate . It is therefore a software-supported variant of supersampling . The following steps are required:

  1. The accumulation buffer is reset to a black area.
  2. In order to simulate a -fold resolution, images are required that differ minimally, i.e. by a fraction of a pixel. Minimally different images are created by moving the camera slightly. After one of the images has been calculated ( rendered ), its color values ​​are added to those in the accumulation buffer.
  3. As soon as you have added all the images, you divide all the pixel values in the accumulation buffer by . Then there is an image in the accumulation buffer that represents the mean value of the shifted individual images.
  4. The contents of the accumulation buffer are finally copied to the original memory area and displayed.

history

The accumulation buffer was developed by Silicon Graphics for their graphics workstations at the end of the 1980s . The first programming interface to support an accumulation buffer was therefore the proprietary IRIS GL . OpenGL 1.0, published in 1992, also included support for the concept.

As a result, a hardware-supported accumulation buffer initially did not establish itself for standard graphics hardware from other manufacturers. This was due to the considerable additional effort involved in hardware support for frame buffers with a color depth of more than 8 bits per color channel, which are necessary for sensible use of the accumulation buffer and which are required by the OpenGL specification. This expense for a relatively limited benefit did not seem justified in the eyes of most graphics hardware manufacturers. The accumulation buffer was usually only implemented in software by the device driver and was therefore extremely slow in applications.

This only changed in 2002 with the newer generation of graphics cards, which could use floating point numbers internally for the color channels of textures and invisible frame buffers. The first graphics card of this type was the ATI Radeon 9700. This enables the driver of a graphics card to emulate the accumulation buffer internally through the hardware . This means that it can be used with current graphics cards at high speed.

In the meantime, however, the accumulation buffer has lost its importance to support anti-aliasing because the graphics hardware has provided special procedures for this effect.

literature