61 LOG_DFATAL <<
"Unsupported BVH layout was passed.";
71 if (supported_layouts & requested_layout_mask) {
72 return requested_layout;
78 BVHLayoutMask allowed_layouts_mask = (supported_layouts & (requested_layout_mask - 1));
80 if (allowed_layouts_mask == 0) {
81 allowed_layouts_mask = supported_layouts;
84 const BVHLayoutMask widest_allowed_layout_mask =
__bsr((uint32_t)allowed_layouts_mask);
85 return (
BVHLayout)(1 << widest_allowed_layout_mask);
102 switch (
params.bvh_layout) {
146 LOG_DFATAL <<
"Requested unsupported BVH layout.";
CCL_NAMESPACE_BEGIN const char * bvh_layout_name(BVHLayout layout)
static BVHLayout best_bvh_layout(BVHLayout requested_layout, BVHLayoutMask supported_layouts)
static unique_ptr< BVH > create(const BVHParams ¶ms, const vector< Geometry * > &geometry, const vector< Object * > &objects, Device *device)
vector< Geometry * > geometry
BVH(const BVHParams ¶ms, const vector< Geometry * > &geometry, const vector< Object * > &objects)
vector< Object * > objects
#define CCL_NAMESPACE_END
@ BVH_LAYOUT_MULTI_HIPRT_EMBREE
@ BVH_LAYOUT_MULTI_EMBREEGPU
@ BVH_LAYOUT_MULTI_METAL_EMBREE
@ BVH_LAYOUT_MULTI_EMBREEGPU_EMBREE
@ BVH_LAYOUT_MULTI_OPTIX_EMBREE
KernelBVHLayout BVHLayout
__forceinline uint32_t __bsr(const uint32_t x)