Quantcast
Channel: Ray Tracey's blog
Viewing all articles
Browse latest Browse all 85

Accelerating path tracing by using the BVH as multiresolution geometry

$
0
0
Before continuing the tutorial series, let's have a look at a simple but effective way to speed up path tracing. The idea is quite simple: like an octree, a bounding volume hierarchy (BVH) can double as both a ray tracing acceleration structure and a way to represent the scene geometry at multiple levels of detail (multiresolution geometry representation). Specifically the axis-aligned bounding boxes of the BVH nodes at different depths in the tree serve as a more or less crude approximation of the geometry. 

Low detail geometry enables much faster ray intersections and can be useful when light effects don't require full geometric accuracy, for example in the case of motion blur, glossy (blurry) reflections, soft shadows, ambient occlusion and indirect illumination. Especially when geometry is not directly visible in the view frustum or in specular (mirror-like) reflections, using geometry proxies can provide a significant speedup (depending on the fault tolerance) at an almost imperceptible and negligible loss in quality.

- Skipping triangle intersection
- only ray/box intersection, better for thread divergence

The renderer determines the appropriate level of detail based on the distance from the camera (for primary rays) or on the distance from the ray origin for secondary rays. The following screenshots show the bounding boxes of the BVH nodes from depth 1 (depth 0 is the rootnode) up to depth 12:





The screenshot below shows only the bounding boxes of the leafnodes:


Normals are computed according to 

TODO link to github code, propose fixes to fill holes, present benchmark results (8x speedup), get more timtams 


Viewing all articles
Browse latest Browse all 85

Trending Articles