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