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;
33 bool motion_blur =
false;
35 bool build(
Progress &progress,
id<MTLDevice> device,
id<MTLCommandQueue> queue,
bool refit);
43 bool build_BLAS(
Progress &progress,
id<MTLDevice> device,
id<MTLCommandQueue> queue,
bool refit);
44 bool build_BLAS_mesh(
Progress &progress,
46 id<MTLCommandQueue> queue,
49 bool build_BLAS_hair(
Progress &progress,
51 id<MTLCommandQueue> queue,
54 bool build_BLAS_pointcloud(
Progress &progress,
56 id<MTLCommandQueue> queue,
59 bool build_TLAS(
Progress &progress,
id<MTLDevice> device,
id<MTLCommandQueue> queue,
bool refit);
61 API_AVAILABLE(macos(11.0))
62 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