From 03183c332876d15dc38bc2099c80a4f4e97a9d0c Mon Sep 17 00:00:00 2001 From: Michael Jones Date: Tue, 1 Jul 2025 14:25:09 +0200 Subject: [PATCH] Fix #135194: Deleting the last object in a scene leaves it visible in the viewport with MetalRT TLAS wasn't being refreshed when empty. This PR removes a spurious early-exit during BVH build that was preventing the TLAS from being recreated when it was empty. Pull Request: https://projects.blender.org/blender/blender/pulls/141215 --- intern/cycles/device/metal/bvh.mm | 4 ---- intern/cycles/device/metal/queue.mm | 10 ++++++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/intern/cycles/device/metal/bvh.mm b/intern/cycles/device/metal/bvh.mm index e9cf9da91e7..97c1575658a 100644 --- a/intern/cycles/device/metal/bvh.mm +++ b/intern/cycles/device/metal/bvh.mm @@ -1048,10 +1048,6 @@ bool BVHMetal::build_TLAS(Progress &progress, } } - if (num_instances == 0) { - return false; - } - const bool use_instance_motion = motion_blur && num_motion_instances; const bool use_fast_trace_bvh = (params.bvh_type == BVH_TYPE_STATIC) || !support_refit_blas(); diff --git a/intern/cycles/device/metal/queue.mm b/intern/cycles/device/metal/queue.mm index 0df6dc30aea..2bd020602ce 100644 --- a/intern/cycles/device/metal/queue.mm +++ b/intern/cycles/device/metal/queue.mm @@ -509,11 +509,13 @@ bool MetalDeviceQueue::enqueue(DeviceKernel kernel, if (id accel_struct = metal_device_->accel_struct) { /* Mark all Accelerations resources as used */ [mtlComputeCommandEncoder useResource:accel_struct usage:MTLResourceUsageRead]; - [mtlComputeCommandEncoder useResource:metal_device_->blas_buffer - usage:MTLResourceUsageRead]; + if (metal_device_->blas_buffer) { + [mtlComputeCommandEncoder useResource:metal_device_->blas_buffer + usage:MTLResourceUsageRead]; + } [mtlComputeCommandEncoder useResources:metal_device_->unique_blas_array.data() - count:metal_device_->unique_blas_array.size() - usage:MTLResourceUsageRead]; + count:metal_device_->unique_blas_array.size() + usage:MTLResourceUsageRead]; } } }