Accumulation Buffer

Comentario Original:

No era el backbuffer el frame anterior y el frontbuffer con el que trabaja este frame la gpu? Entonces el lienzo es el bufer frontal y coge del trasero lo necesario para motion blur por ejemplo

Es al revés, lo comente en su día con su documentación correspondiente.

Pero ya que has mencionado el Motion Blur toca hablar hoy de un búfer adicional, utilizado para ciertos efectos visuales como el mismo Motion Blur, el llamado Accumulation Buffer. La fuente es el siguiente libro,

Captura de pantalla 2015-10-06 a las 15.37.06

En la pagina 244 para ser más exactos.
Captura de pantalla 2015-10-06 a las 15.32.07

Traducción:

Ademas de los búfers de color, patrón/stencil y profundidad. OpenGL soporta lo que es llamado el búfer de acumulación. Este búfer permite renderizar en el búfer de color y entonces en vez de mostrar los resultados en una ventana, copiar los contenidos del búfer de color al búfer de acumulación. Diversas operaciones de copia te permiten mezclar repetidamente de formas distintas, el contenido del búfer de color con los contenidos acumulados en el búfer de acumulación (de ahí su nombre). Cuando has terminado de acumular una imagen, puedes copiarla entonces de nuevo al búfer de color y mostrar los resultados con un intercambio de búfers.

La descripción esta hecha desde la perspectiva de un solo búfer de color, no distingue entre búfer frontal y búfer trasero. Y si habéis sido los suficientemente inteligentes os habréis dado cuenta que el búfer de acumulación es una muestra adicional. ¿Os acordáis como en la anterior entrada he comentado como la GPU de 3DS soporta hasta 2 muestras? Pues la segunda muestra en el caso del renderizado en 3D Estéreo se utiliza la segunda muestra, el hecho de copiar el búfer de imagen y poder manipularlo se llama “Renderizar a Textura” porque lo que se hace es coger el búfer de imagen/color y en vez de enviarlo a pantalla se copia en otro búfer para manipularlo como si fuese una textura.

En los sistemas con pipeline programable el Accumulation Buffer evoluciono a los FBOs en OpenGL 2.0 en adelante (Frame Buffer Objects) y en los MRT de Direct3D 9.x en adelante (Múltiple Render Targets), a nivel práctico son los mismo que el Accumulation Buffer pero con la diferencia de que en vez de tener uno sola muestra adicional podemos tener varias distintas funcionando al mismo tiempo, lo que permite operaciones más complejas.

Anuncios