Accumulation Buffer

Accumulation Buffer

Der Akkumulationspuffer (englisch Accumulation Buffer) ist in der Computergrafik ein Speicherbereich für Bilder, die dort nacheinander aufaddiert werden und von denen anschließend der Durchschnitt gebildet wird. Dadurch lassen sich bestimmte Grafikeffekte erreichen. Der Akkumulationspuffer wird entweder in Software implementiert oder von der Grafikhardware zusätzlich zum Framebuffer zur Verfügung gestellt.

Inhaltsverzeichnis

Anwendungen

Mit dem Akkumulationspuffer lassen sich unter anderem folgende Effekte erreichen, indem der Durchschnitt mehrerer Bilder mit unterschiedlichen Einstellungen berechnet wird:

Beispiel: Antialiasing

Die Idee hinter Antialiasing mittels Akkumulationspuffer ist, den Treppeneffekt durch eine höhere Abtastrate zu verhindern. Es handelt sich also um eine softwaregestützte Variante des Supersamplings. Im Einzelnen sind hierzu die folgenden Schritte erforderlich:

  1. Der Akkumulationspuffer wird auf eine schwarze Fläche zurückgesetzt.
  2. Um eine n-fache Auflösung zu simulieren, werden 2n Bilder benötigt, die sich minimal, das heißt um den Bruchteil eines Pixels unterscheiden. Minimal unterschiedliche Bilder werden erzeugt, indem die Kamera leicht verschoben wird. Nachdem jeweils eines der 2n Bilder berechnet (gerendert) wurde, addiert man dessen Farbwerte zu denen im Akkumulationspuffer.
  3. Sobald man alle 2n Bilder aufaddiert hat, dividiert man alle Pixelwerte im Akkumulationspuffer durch 2n. Danach steht im Akkumulationspuffer ein Bild, das den Mittelwert aus den 2n verschobenen Einzelbildern darstellt.
  4. Der Inhalt des Akkumulationspuffers wird eventuell in den ursprünglichen Speicherbereich kopiert und angezeigt.

Geschichte

Der Akkumulationspuffer wurde Ende der 1980er Jahre von Silicon Graphics für ihre damaligen Grafik-Workstations entwickelt. Die erste Programmierschnittstelle, die einen Akkumulationspuffer unterstützte, war daher das herstellereigene IRIS GL. Das 1992 veröffentlichte OpenGL 1.0 enthielt ebenfalls eine Unterstützung des Konzepts.

In der Folge setzte sich für Standard-Grafikhardware anderer Hersteller ein hardwareunterstützter Akkumulationspuffer zunächst nicht durch. Dies lag an dem erheblichen zusätzlichen Aufwand zur Hardwareunterstützung von Framebuffern mit mehr als 8 Bit Farbtiefe pro Farbkanal, die für eine sinnvolle Nutzung des Akkumulationspuffer nötig sind und von der OpenGL-Spezifikation erfordert werden. Dieser Aufwand für einen relativ begrenzten Nutzen schien in den Augen der meisten Grafikhardwarehersteller nicht gerechtfertigt. So war der Akkumulationspuffer meist nur durch den Gerätetreiber in Software realisiert und darum in Anwendungen extrem langsam.

Dies änderte sich erst ab 2002 mit Grafikkarten neuerer Generation, die intern Gleitkommazahlen für die Farbkanäle von Texturen und nicht-sichtbarer Framebuffer verwenden konnten. Die erste Grafikkarte dieser Art war die ATI Radeon 9700. Dadurch kann der Treiber einer Grafikkarte den Akkumulationspuffer intern durch die Hardware emulieren. Damit ist die Verwendung mit aktuellen Grafikkarten in hoher Geschwindigkeit möglich.

Zur Unterstützung von Antialiasing hat der Akkumulationspuffer allerdings mittlerweile seine Bedeutung verloren, weil die Grafikhardware für diesen Effekt spezielle Verfahren vorgesehen hat.

Literatur


Wikimedia Foundation.

Игры ⚽ Поможем написать курсовую

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Anti-aliasing — In digital signal processing, anti aliasing is the technique of minimizing the distortion artifacts known as aliasing when representing a high resolution signal at a lower resolution. Anti aliasing is used in digital photography, computer… …   Wikipedia

  • Mask (computing) — Signal masking redirects here. For other uses, see Masking (disambiguation). In computer science, a mask is data that is used for bitwise operations. Using a mask, multiple bits in a byte, nibble, word (etc.) can be set either on, off or inverted …   Wikipedia

  • Spatial anti-aliasing — In digital signal processing, spatial anti aliasing is the technique of minimizing the distortion artifacts known as aliasing when representing a high resolution image at a lower resolution. Anti aliasing is used in digital photography, computer… …   Wikipedia

  • Framebuffer Object — The frame buffer object architecture (FBO) is an extension to OpenGL for doing flexible off screen rendering, including rendering to a texture. By capturing images that would normally be drawn to the screen, it can be used to implement a large… …   Wikipedia

  • Akkumulationspuffer — Der Akkumulationspuffer (englisch accumulation buffer) ist in der Computergrafik ein Speicherbereich für Bilder, die dort nacheinander aufaddiert werden und von denen anschließend der Durchschnitt gebildet wird. Dadurch lassen sich bestimmte… …   Deutsch Wikipedia

  • InfiniteReality — refers to a 3D graphics hardware architecture and a family of graphics systems that implemented the aforementioned hardware architecture that was developed and manufactured by Silicon Graphics from 1996 to 2005. The InfiniteReality was positioned …   Wikipedia

  • Bitmaske — In der Informatik bezeichnet eine Bitmaske eine mehrstellige Binärzahl, mit der Informationen aus einer anderen Binärzahl gelesen oder gespeichert werden können. Inhaltsverzeichnis 1 Methoden 1.1 Bit auslesen 1.2 0 Bit setzen …   Deutsch Wikipedia

  • Bitmaskierung — In der Informatik bezeichnet eine Bitmaske eine mehrstellige Binärzahl, mit der Informationen aus einer anderen Binärzahl gelesen oder gespeichert werden können. Inhaltsverzeichnis 1 Methoden 1.1 Bit auslesen 1.2 0 Bit setzen 1.3 1 Bit setzen …   Deutsch Wikipedia

  • 3dfx VSA-100 — The 3dfx VSA 100 (Voodoo Scalable Architecture) was a GPU designed for the Voodoo 5 series of expansion cards. It was announced at Comdex in late 1999.As implied by the acronym, the primary advantage of the VSA 100 was its extreme scalability.… …   Wikipedia

  • OpenGL ES — Original author(s) Khronos Group Developer(s) Khronos Group …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”