28.06.2014 Views

Realtime Ray Tracing and Interactive Global Illumination - Scientific ...

Realtime Ray Tracing and Interactive Global Illumination - Scientific ...

Realtime Ray Tracing and Interactive Global Illumination - Scientific ...

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!