Realtime Ray Tracing and Interactive Global Illumination - Scientific ...
Realtime Ray Tracing and Interactive Global Illumination - Scientific ...
Realtime Ray Tracing and Interactive Global Illumination - Scientific ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
32 Chapter 3: A Brief Survey of <strong>Ray</strong> <strong>Tracing</strong> Acceleration Methods<br />
Different Traversal Algorithms: Though a different traversal algorithm<br />
should still traverse exactly the same voxels (<strong>and</strong> thus intersect the same<br />
primitives), the traversal algorithm often consumes a significant fraction of<br />
compute time 12 . As such, a different traversal algorithm can significantly<br />
affect performance.<br />
Today, there exist several different traversal algorithms for each of the different<br />
kind of acceleration structure, each of which have different advantages<br />
<strong>and</strong> disadvantages.<br />
While most of these alternative traversal algorithms do not actually change<br />
the underlying data structure, some methods require to slightly modify the<br />
data structure itself, e.g. by adding neighbour links [Samet89, Havran98] for<br />
faster “horizontal” traversal from one voxel to its neighbour.<br />
Variants of Building the Hierarchy: Apart from the traversal algorithm,<br />
the eventual performance of an acceleration structure is significantly affected<br />
by the algorithm for constructing the data structure. As the traversal algorithm<br />
itself usually does not change either the number nor order of voxels<br />
(<strong>and</strong> thus primitives) encountered by the ray, the number of traversal steps<br />
<strong>and</strong> primitive intersections is mostly determined by the way that the acceleration<br />
data structure has been built (i.e. by the number, size, <strong>and</strong> organization<br />
of the voxels).<br />
Even for uniform subdivision (whose structure is determined entirely by<br />
the grid resolution, there usually is a tradeoff between reducing the number of<br />
primitive intersections <strong>and</strong> performing too many traversal steps. In practice<br />
the optimal grid resolution is hard to determine, <strong>and</strong> can only be guessed<br />
approximately using some heuristics. For hierarchical data structures, finding<br />
“the best” organization is even more complex 13 .<br />
Though there are several groundbreaking papers on the optimal construction<br />
of ray tracing hierarchies (e.g. by Goldsmith <strong>and</strong> Salmon [Goldsmith87],<br />
Subramanian [Subramanian90b, Subramanian90a, Cassen95], or MacDonald<br />
<strong>and</strong> Booth [MacDonald89, MacDonald90]; also see [Havran01] for an<br />
overview), the importance of using these techniques is often underestimated<br />
in practice. Even the RTRT/OpenRT system at its original publication only<br />
considered a naive kd-tree construction algorithm. Havind added a Surface<br />
Area Heuristic [Havran01] for building the kd-tree afterwards since then has<br />
roughly doubled performance (see Section 7.3).<br />
12 In practice (i.e. for realistically complex scenes <strong>and</strong> relatively simple primitives),<br />
traversal is usually several times as costly as the ray-primitive intersections.<br />
13 For hierarchical subdivision, the decision whether to continue subdivion or not, as well<br />
as the exact position of the split have to be performed anew in each construction step.