Real-time KD-tree construction on graphics hardware

We present an algorithm for constructing kd-trees on GPUs. This algorithm achieves real-time performance by exploiting the GPU's streaming architecture at all stages of kd-tree construction. Unlike previous parallel kd-tree algorithms, our method builds tree nodes completely in BFS (breadth-first search) order. We also develop a special strategy for large nodes at upper tree levels so as to further exploit the fine-grained parallelism of GPUs. For these nodes, we parallelize the computation over all geometric primitives instead of nodes at each level. Finally, in order to maintain kd-tree quality, we introduce novel schemes for fast evaluation of node split costs. As far as we know, ours is the first real-time kd-tree algorithm on the GPU. The kd-trees built by our algorithm are of comparable quality as those constructed by off-line CPU algorithms. In terms of speed, our algorithm is significantly faster than well-optimized single-core CPU algorithms and competitive with multi-core CPU algorithms. Our algorithm provides a general way for handling dynamic scenes on the GPU. We demonstrate the potential of our algorithm in applications involving dynamic scenes, including GPU ray tracing, interactive photon mapping, and point cloud modeling.

[1]  Kari Pulli,et al.  Real-time enveloping with rotational regression , 2007, ACM Trans. Graph..

[2]  Keenan Crane,et al.  Fast GPU ray tracing of dynamic meshes using geometry images , 2006, Graphics Interface.

[3]  Philipp Slusallek,et al.  Balancing Considered Harmful - Faster Photon Mapping using the Voxel Volume Heuristic , 2004, Comput. Graph. Forum.

[4]  Markus H. Gross,et al.  Shape modeling with point-sampled geometry , 2003, ACM Trans. Graph..

[5]  Nina Byers Report From The Chair , 2005 .

[6]  Tim Foley,et al.  KD-tree acceleration structures for a GPU raytracer , 2005, HWWS '05.

[7]  S. Popov,et al.  Experiences with Streaming Construction of SAH KD-Trees , 2006, 2006 IEEE Symposium on Interactive Ray Tracing.

[8]  Marc Alexa,et al.  Point-based computer graphics , 2004, SIGGRAPH '04.

[9]  I. Wald,et al.  On fast Construction of SAH-based Bounding Volume Hierarchies , 2007, 2007 IEEE Symposium on Interactive Ray Tracing.

[10]  Kellogg S. Booth,et al.  Report from the chair , 1986 .

[11]  Leonidas J. Guibas,et al.  Adaptively sampled particle fluids , 2007, SIGGRAPH 2007.

[12]  Pat Hanrahan,et al.  Photon mapping on programmable graphics hardware , 2003, HWWS '03.

[13]  Anthony Skjellum,et al.  Using MPI - portable parallel programming with the message-parsing interface , 1994 .

[14]  Pat Hanrahan,et al.  Ray tracing on programmable graphics hardware , 2002, SIGGRAPH Courses.

[15]  Kun Zhou,et al.  Direct manipulation of subdivision surfaces on GPUs , 2007, SIGGRAPH 2007.

[16]  John C. Hart,et al.  The ray engine , 2002, HWWS '02.

[17]  Yao Zhang,et al.  Scan primitives for GPU computing , 2007, GH '07.

[18]  Greg Humphreys,et al.  Physically Based Rendering: From Theory to Implementation , 2004 .

[19]  W.R. Mark,et al.  Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic , 2006, 2006 IEEE Symposium on Interactive Ray Tracing.

[20]  John Salmon,et al.  Automatic Creation of Object Hierarchies for Ray Tracing , 1987, IEEE Computer Graphics and Applications.

[21]  HanrahanPat,et al.  Ray tracing on programmable graphics hardware , 2002 .

[22]  Jörg Peters,et al.  A realtime GPU subdivision kernel , 2005, SIGGRAPH 2005.

[23]  Kellogg S. Booth,et al.  Heuristics for ray tracing using space subdivision , 1990, The Visual Computer.

[24]  I. Wald,et al.  On building fast kd-Trees for Ray Tracing, and on doing that in O(N log N) , 2006, 2006 IEEE Symposium on Interactive Ray Tracing.

[25]  Dinesh Manocha,et al.  Ray Tracing Dynamic Scenes using Selective Restructuring , 2007, Rendering Techniques.

[26]  H. Jensen Realistic Image Synthesis Using Photon Mapping , 2001 .

[27]  Ingo Wald,et al.  Ray tracing deformable scenes using dynamic bounding volume hierarchies , 2007, TOGS.

[28]  William Gropp,et al.  Skjellum using mpi: portable parallel programming with the message-passing interface , 1994 .

[29]  Ingo Waldyz,et al.  Balancing Considered Harmful — Faster Photon Mapping using the Voxel Volume Heuristic — , 2004 .

[30]  Tony DeRose,et al.  Surface reconstruction from unorganized points , 1992, SIGGRAPH.

[31]  Matthias Zwicker,et al.  Surface splatting , 2001, SIGGRAPH.

[32]  Alexander Reshetov,et al.  Multi-level ray tracing algorithm , 2005, ACM Trans. Graph..

[33]  Pat Hanrahan,et al.  Interactive k-d tree GPU raytracing , 2007, SI3D.

[34]  Philipp Slusallek,et al.  Realtime Caustics using Distributed Photon Mapping , 2004, Rendering Techniques.

[35]  Hans-Peter Seidel,et al.  Stackless KD‐Tree Traversal for High Performance GPU Ray Tracing , 2007, Comput. Graph. Forum.

[36]  Michael Ian Shamos,et al.  Computational geometry: an introduction , 1985 .

[37]  Aaron Knoll,et al.  Ray tracing animated scenes using coherent grid traversal , 2006, SIGGRAPH 2006.

[38]  Matthias Zwicker,et al.  Pointshop 3D: an interactive system for point-based surface editing , 2002, SIGGRAPH.

[39]  Maxim Shevtsov,et al.  Highly Parallel Fast KD‐tree Construction for Interactive Ray Tracing of Dynamic Scenes , 2007, Comput. Graph. Forum.