Build task for parallel BVH construction. More...
Public Types | |
enum | { SERIAL_THRESHOLD = 32 , GRAIN_SIZE = 1000 , TRAVERSAL_COST = 1 , INTERSECTION_COST = 1 } |
Build-related parameters. More... | |
Public Member Functions | |
BVHBuildTask (BVH &bvh, uint32_t node_idx, uint32_t *start, uint32_t *end, uint32_t *temp) | |
task * | execute () |
Static Public Member Functions | |
static void | execute_serially (BVH &bvh, uint32_t node_idx, uint32_t *start, uint32_t *end, uint32_t *temp) |
Single-threaded build function. | |
Build task for parallel BVH construction.
This class uses the task scheduling system of Intel' Thread Building Blocks to parallelize the divide and conquer BVH build at all levels.
The used methodology is roughly that described in "Fast and Parallel Construction of SAH-based Bounding Volume Hierarchies" by Ingo Wald (Proc. IEEE/EG Symposium on Interactive Ray Tracing, 2007)
anonymous enum |
Build-related parameters.
|
inline |
Create a new build task
bvh | Reference to the underlying BVH |
node_idx | Index of the BVH node that should be built |
start | Start pointer into a list of triangle indices to be processed |
end | End pointer into a list of triangle indices to be processed |
temp | Pointer into a temporary memory region that can be used for construction purposes. The usable length is end-start unsigned integers. |