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 extended_limits =
false;
40 bool build(
Progress &progress,
id<MTLDevice> device,
id<MTLCommandQueue> queue,
bool refit);
42 BVHMetal(const BVHParams &
params,
44 const vector<
Object *> &objects,
48 bool build_BLAS(
Progress &progress,
id<MTLDevice> device,
id<MTLCommandQueue> queue,
bool refit);
49 bool build_BLAS_mesh(
Progress &progress,
51 id<MTLCommandQueue> queue,
54 bool build_BLAS_hair(
Progress &progress,
56 id<MTLCommandQueue> queue,
59 bool build_BLAS_pointcloud(
Progress &progress,
61 id<MTLCommandQueue> queue,
64 bool build_TLAS(
Progress &progress,
id<MTLDevice> device,
id<MTLCommandQueue> queue,
bool refit);
66 API_AVAILABLE(macos(11.0))
67 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