A code sample showing how to implement a fast and accurate A-Buffer using OpenGL 4.0 core profile and the new NVIDIA extensions that allow random access read/write and atomic operations into global memory and textures on NVIDIA Fermi cards. In its simplest form, an A-buffer is a memory buffer that stores a list of fragments per pixel. This code demonstrates very fast order independent transparency in one single geometry pass. The technique supports arbitrary sized fragments with maximum number of fragments per pixel only limited by available video memory. It demonstrates the usage of EXT_shader_image_load_store, NV_shader_buffer_load, NV_shader_buffer_store and EXT_direct_state_access. Full source code and a Win32 executable are provided. Freeglut is used to initialize OpenGL 4.0 context with the core profile.
Jun 11, 2010 | Category: Developers •