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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

30 Chapter 3: A Brief Survey of <strong>Ray</strong> <strong>Tracing</strong> Acceleration Methods<br />

primitives that are “close” to a given ray, <strong>and</strong> to skip primitives that are far<br />

away. During “traversal” of this acceleration structure, only those potential<br />

c<strong>and</strong>idates thus have to be intersected, <strong>and</strong> the total number of intersection<br />

tests can be significantly reduced.<br />

Over the last 20 years, many different kinds of acceleration structures<br />

have been developed, like e.g. uniform, non-uniform, recursive <strong>and</strong> hierarchical<br />

grids [Amanatides87, Klimaszewski97, Cohen94, Gigante88, Fujimoto86,<br />

Hsiung92, Jevans89], Octrees [Glassner84, Cohen94, Whang95, Samet89],<br />

Bounding Volume Hierarchies [Rubin80, Kay86, Haines91a, Smits98], BSP<br />

trees (or kd-trees) [Sung92, Subramanian90a, Havran01, Bittner99], <strong>and</strong> even<br />

higher-dimensional, directional techniques such as ray classification [Arvo87,<br />

Simiakakis95].<br />

As already noted by Kay [Kay86] in 1986, in principle these techniques<br />

mainly differ in whether they hierarchically organize the scene primitives (as<br />

done by Bounding Volume Hierarchies), or whether they subdivide object<br />

space (or ray space) into a set of unique voxels (as done by BSPs, kd-trees,<br />

or Grids).<br />

3.3.2.1 Bounding Volume Hierarchies<br />

In the first class (Bounding Volume Hierarchies) each primitive is stored<br />

only once in the hierarchy. This usually leads to a predictable memory consumption,<br />

<strong>and</strong> guarantees that each primitive is intersected only exactly once<br />

during traversal of the hierarchy (which is usually not the case for spatial<br />

subdivision techniques, see below). On the other h<strong>and</strong>, different parts of the<br />

hierarchy may overlap the same regions in space. This often leads to inefficient<br />

traversal such as intersecting the primitives in the wrong order 10 or<br />

traversing the same space multiple times).<br />

3.3.2.2 Spatial Subdivision (Grids, Octrees, BSPs, etc.)<br />

In contrast to BVHs, spatial subdivision techniques subdivide three-dimensional<br />

space into a finite, non-overlapping set of volume elements (voxels), in<br />

which each voxel keeps a list of references to all the primitives overlapping<br />

that respective voxel.<br />

Traversing a ray through the spatial acceleration structure then sequentially<br />

iterates through all the voxels encountered by a ray, thereby intersecting<br />

10 The correct order can be guaranteed by organizing the not-yet-traversed parts of the<br />

hierarchy in a priority queue <strong>and</strong> always traversing the closest one. This however incurs<br />

additional cost in each traversal step. Also, please keep in mind that the correct order is<br />

not important at all for shadow rays.

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

Saved successfully!

Ooh no, something went wrong!