800k+ polygons rendered at more than 400 FPS with transparency
Icare3D has publshed a small OpenGL 4.0 demo (with code source and executable) that shows an implementation of the A-buffer algorithm.
You can download the demo HERE.
This demo works on GTX 400 series only.
What is an A-buffer? In its simplest form, an A-buffer is a memory buffer that stores a list of fragments per pixel. A Z-buffer stores only the nearest fragment for each pixel while an A-buffer can store several fragments for each pixel.
Thanks to some sorting algorithms (like the bitonic sort or the bubble sort), the fragments can be blended in the right way to implement order independent transparency (or OIT) like in the demo.
The demo exploits a new NVIDIA extensions that allows random access read/write and atomic operations into global memory and textures, to implement a fast A-buffer
Ooops! some limitations of this A-buffer implementation ?
Some References
Thanks for this article !
I just corrected the bug shown in the last image 😉 It appeared only within the “alpha-blending with alpha correction” mode and was a problem when the the first fragment is a backface.
I updated the zip file on the website, you can download the new one.
You’re welcome Cyril!
Glad to see you have found the bug 😉
Implementing transparency algorithm Stencil Routed A-Buffer in DX 10:
http://www.geeks3d.com/forums/index.php/topic,1308.0.html
Pingback: [3D Programming] Fast A-Buffer With Reduced Memory Footprint Using OpenGL 4.0 - 3D Tech News, Pixel Hacking, Data Visualization and 3D Programming - Geeks3D.com
Pingback: Fast A-Buffer Algorithm Using OpenGL 4.0: GeeXLab « Gputoaster's Blog