Multi-Fragment Effects on the GPU using the k-Buffer

Louis Bavoil, Steven P. Callahan, Aaron Lefohn, Joao L. D. Comba, Claudio T. Silva

Images

Abstract

Many interactive rendering algorithms require operations on multiple fragments (i.e., ray intersections) at the same pixel location; however, current Graphics Processing Units (GPUs) capture only a single fragment per pixel. Example effects include transparency, translucency, constructive solid geometry, depth-of-field, direct volume rendering, and isosurface visualization. With current GPUs, programmers implement these effects using multiple passes over the scene geometry, often substantially limiting performance.
This paper introduces a generalization of the Z-buffer, called the k-buffer, that makes it possible to efficiently implement such algorithms with only a single geometry pass, yet requires only a small, fixed amount of additional memory. The k-buffer uses framebuffer memory as a read-modify-write (RMW) pool of k entries whose use is programmatically defined by a small k-buffer program. We present two proposals for adding k-buffer support to future GPUs and demonstrate numerous multiple-fragment, single-pass graphics algorithms running on both a software-simulated k-buffer and a k-buffer implemented with current GPUs. The goal of this work is to demonstrate the large number of graphics algorithms that the k-buffer enables and that the efficiency is superior to current multipass approaches.

Paper

"Multi-Fragment Effects on the GPU using the k-Buffer", L. Bavoil, S.P. Callahan, A. Lefohn, J.L.D. Comba, C.T. Silva, Symposium on Interactive 3D Graphics, Proceedings of the 2007 symposium on Interactive 3D graphics and games, pp. 97-104, 2007 (pdf) (bibtex) (slides)

Source Code

kbuffer-demo-src.tgz
kbuffer-demo-data.tgz