diff --git a/intern/cycles/device/metal/bvh.mm b/intern/cycles/device/metal/bvh.mm index 3506d9ab579..d9c96740898 100644 --- a/intern/cycles/device/metal/bvh.mm +++ b/intern/cycles/device/metal/bvh.mm @@ -500,7 +500,8 @@ bool BVHMetal::build_BLAS_hair(Progress &progress, geomDescCrv.radiusBuffers = [NSArray arrayWithObjects:radius_ptrs.data() count:radius_ptrs.size()]; - geomDescCrv.controlPointCount = cpData.size(); + /* controlPointCount should specify the *per-step* control point count. */ + geomDescCrv.controlPointCount = cpData.size() / num_motion_steps; geomDescCrv.controlPointStride = sizeof(float3); geomDescCrv.controlPointFormat = MTLAttributeFormatFloat3; geomDescCrv.radiusStride = sizeof(float);