53 LOG(DFATAL) <<
"Unsupported BVH layout was passed.";
63 if (supported_layouts & requested_layout_mask) {
64 return requested_layout;
70 BVHLayoutMask allowed_layouts_mask = (supported_layouts & (requested_layout_mask - 1));
72 if (allowed_layouts_mask == 0) {
73 allowed_layouts_mask = supported_layouts;
77 return (
BVHLayout)(1 << widest_allowed_layout_mask);
85 :
params(params_), geometry(geometry_), objects(objects_)
100 return new BVHEmbree(
params, geometry, objects);
106 return new BVHOptiX(
params, geometry, objects, device);
113 return bvh_metal_create(
params, geometry, objects, device);
120 return new BVHHIPRT(
params, geometry, objects, device);
138 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 BVH * create(const BVHParams ¶ms, const vector< Geometry * > &geometry, const vector< Object * > &objects, Device *device)
BVH(const BVHParams ¶ms, const vector< Geometry * > &geometry, const 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
CCL_NAMESPACE_BEGIN typedef KernelBVHLayout BVHLayout
__forceinline uint32_t __bsr(const uint32_t x)