Game Development Reference
Figure 1.1. Comparison of the same scene using (a) Whitted-style ray tracing and (b)
Monte Carlo for global illumination. Notice how other effects such as caustics, soft
shadows, depth of field, and antialiasing are present when using Monte Carlo.
The current implementation is not fully optimized for global illumination. It
produces a high-quality render in 15-30 minutes on large scenes such as the Welsh
Dragon and Thai Statue. However, this approach can be used as a starting point
for optimized algorithms, as demonstrated in [Ernest and Woop 11], to yield
The SLBVH is a stackless and pointerless binary heap that uses a middle split
approach based on the Morton code of primitives [Lauterbach et al. 09]. While
traversing, the next node to be visited is computed using arithmetic operations.
One 32-bit integer is used to store the trail of each ray, which allows restarting
the traversal from the last node hit instead of the root [Laine 10]. Also, using
the split axis and the direction of the ray, the trail can be used to decide whether
the left or right child must be visited first.
The resulting tree is a heap . In a heap, the left child of node n is located
at 2 n and the right child is at 2 n + 1. The tree representation assumes that
the depth of the tree D will be constant, thus the number of nodes will also
remain fixed (regardless of the scene complexity). In this approach, a heap with
depth D requires an array of 2 D
1 elements. The scene could have either 1 or
1,000,000 primitives, yet the number of nodes remains the same. This introduces