Efficient and Quality Contouring Algorithms on the GPU
View/ Open
Date
2010Author
Schmitz, L.
Scheidegger, L. F.
Osmari, D. K.
Dietrich, C. A.
Comba, J. L. D.
Metadata
Show full item recordAbstract
Interactive isosurface extraction has recently become possible through successful efforts to map algorithms such as Marching Cubes (MC) and Marching Tetrahedra (MT) to modern Graphics Processing Unit (GPU) architectures. Other isosurfacing algorithms, however, are not so easily portable to GPUs, either because they involve more complex operations or because they are not based on discrete case tables, as is the case with most marching techniques. In this paper, we revisit the Dual Contouring (MC) and Macet isosurface extraction algorithms and propose, respectively: (i) a novel, efficient and parallelizable version of Dual Contouring and (ii) a set of GPU modules which extend the original Marching Cubes algorithm. Similar to marching methods, our novel technique is based on a case table, which allows for a very efficient GPU implementation. In addition, we enumerate and evaluate several alternatives to implement efficient contouring algorithms on the GPU, and present trade-offs among all approaches. Finally, we validate the efficiency and quality of the tessellations produced in all these alternatives.
BibTeX
@article {10.1111:j.1467-8659.2010.01825.x,
journal = {Computer Graphics Forum},
title = {{Efficient and Quality Contouring Algorithms on the GPU}},
author = {Schmitz, L. and Scheidegger, L. F. and Osmari, D. K. and Dietrich, C. A. and Comba, J. L. D.},
year = {2010},
publisher = {The Eurographics Association and Blackwell Publishing Ltd},
ISSN = {1467-8659},
DOI = {10.1111/j.1467-8659.2010.01825.x}
}
journal = {Computer Graphics Forum},
title = {{Efficient and Quality Contouring Algorithms on the GPU}},
author = {Schmitz, L. and Scheidegger, L. F. and Osmari, D. K. and Dietrich, C. A. and Comba, J. L. D.},
year = {2010},
publisher = {The Eurographics Association and Blackwell Publishing Ltd},
ISSN = {1467-8659},
DOI = {10.1111/j.1467-8659.2010.01825.x}
}