04857cc8ef
Previously the storage here was optimized to avoid indirections in BVH2 traversal. This helps improve performance a bit, but makes performance and memory usage of Embree and OptiX BVHs a bit worse also. It also adds code complexity in other parts of the code. Now decouple triangle and curve primitive storage from BVH2. * Reduced peak memory usage on all devices * Bit better performance for OptiX and Embree * Bit worse performance for CUDA * Simplified code: ** Intersection.prim/object now matches ShaderData.prim/object ** No more offset manipulation for mesh displacement before a BVH is built ** Remove primitive packing code and flags for Embree and OptiX ** Curve segments are now stored in a KernelCurve struct * Also happens to fix a bug in baking with incorrect prim/object Fixes T91968, T91770, T91902 Differential Revision: https://developer.blender.org/D12766 |
||
---|---|---|
.. | ||
bvh2.cpp | ||
bvh2.h | ||
bvh_binning.cpp | ||
bvh_binning.h | ||
bvh_build.cpp | ||
bvh_build.h | ||
bvh_embree.cpp | ||
bvh_embree.h | ||
bvh_multi.cpp | ||
bvh_multi.h | ||
bvh_node.cpp | ||
bvh_node.h | ||
bvh_optix.cpp | ||
bvh_optix.h | ||
bvh_params.h | ||
bvh_sort.cpp | ||
bvh_sort.h | ||
bvh_split.cpp | ||
bvh_split.h | ||
bvh_unaligned.cpp | ||
bvh_unaligned.h | ||
bvh.cpp | ||
bvh.h | ||
CMakeLists.txt |