Game Development Reference
Figure 1.5. Three different-sized models are compared (frames per second) using
SLBVH and regular stack-based BVH traversal: Stanford Bunny (depth = 18), Crytek
Sponza (depth = 21), and Welsh Dragon (depth = 23).
Two options might yield better results: building a two-level SLBVH or using the
surface area heuristic (SAH) as a partition scheme. The first one would produce
a “deeper” tree and primitives would disperse on more nodes. The second one
would increase tree quality and should be less complex to introduce in the current
The SLBVH suffers with heterogeneous models such as the Conference Room
and Crytek Sponza. Hundreds of small triangles are stored in leaf nodes, which
impacts enormously on traversal times. One interesting option would be using
the DirectX tessellator in order to partition large triangles into small ones. The
number of primitives would increase, but as shown with large models, the traversal
performance allows real-time frame rates.
The SLBVH is a stackless structure with less memory overhead than the ropes
scheme for the stackless kd-trees [Popov et al. 07]. For example, the Stanford
of depth 18 uses only 8 MB of memory, which is enough to store this model due
to its small size. This is just one third of the SKD-Tree size. The Conference
Room and the Crytek Sponza models have similar characteristics. In the SKD-
Tree, the Conference Room occupies 85 MB, while the SLBVH just needs 64 MB.
Just as on the Bunny Model, SLBVH shows a better utilization of memory on a
stackless approach. However, the SLBVH has a bigger memory footprint than a
regular BVH. We are currently working on ways to lower this footprint for the