13# include <Metal/Metal.h>
17class BVHMetal :
public BVH {
19 API_AVAILABLE(macos(11.0))
20 id<MTLAccelerationStructure> accel_struct = nil;
22 API_AVAILABLE(macos(11.0))
23 id<MTLAccelerationStructure> null_BLAS = nil;
25 API_AVAILABLE(macos(11.0))
26 vector<
id<MTLAccelerationStructure>> blas_array;
28 API_AVAILABLE(macos(11.0))
29 vector<
id<MTLAccelerationStructure>> unique_blas_array;
31 Device *device =
nullptr;
33 bool motion_blur =
false;
36 bool use_pcmi =
false;
38 bool build(Progress &
progress,
id<MTLDevice> device,
id<MTLCommandQueue> queue,
bool refit);
40 BVHMetal(const BVHParams &
params,
42 const vector<
Object *> &objects,
46 bool build_BLAS(Progress &
progress,
id<MTLDevice> device,
id<MTLCommandQueue> queue,
bool refit);
47 bool build_BLAS_mesh(Progress &
progress,
49 id<MTLCommandQueue> queue,
52 bool build_BLAS_hair(Progress &
progress,
54 id<MTLCommandQueue> queue,
57 bool build_BLAS_pointcloud(Progress &
progress,
59 id<MTLCommandQueue> queue,
62 bool build_TLAS(Progress &
progress,
id<MTLDevice> device,
id<MTLCommandQueue> queue,
bool refit);
64 API_AVAILABLE(macos(11.0))
65 void set_accel_struct(
id<MTLAccelerationStructure> new_accel_struct);
void refit(btStridingMeshInterface *triangles, const btVector3 &aabbMin, const btVector3 &aabbMax)
void build(btStridingMeshInterface *triangles, bool useQuantizedAabbCompression, const btVector3 &bvhAabbMin, const btVector3 &bvhAabbMax)
#define CCL_NAMESPACE_END