Top VkAccelerationStructureKHR update doesnt reduce Instances

I try to integrate dynamic spawn and despawn of Instances in my RayTracing Engine.

When I try to update my Top VkAccelerationStructureKHR to reduce the number of spawned VkAccelerationStructureInstanceKHR from maxInstanceCount to maxInstanceCount-1 the last Instance stays visible.

I am using a Nvidia RTX 2060 Super.
There are no Validation Errors.
Here is my update Function:

void updateVkTopAccelerationStructure(RobX_VkTopAccelerationStructure& acceleration, RobX_VkInstanceBuffer& instanceBuffer, uint32_t numberInstances)
    {
        VkDeviceOrHostAddressConstKHR instanceAddress{};
        instanceAddress.deviceAddress = instanceBuffer.deviceAddress;

        VkAccelerationStructureGeometryKHR geometry{};
        geometry.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR;
        geometry.flags = VK_GEOMETRY_OPAQUE_BIT_KHR;
        geometry.geometryType = VK_GEOMETRY_TYPE_INSTANCES_KHR;
        geometry.geometry.instances.sType = 
        VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR;
        geometry.geometry.instances.data = instanceAddress;
        geometry.geometry.instances.arrayOfPointers = VK_FALSE;

        VkAccelerationStructureBuildGeometryInfoKHR buildInfo{};
        buildInfo.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR;
        buildInfo.type = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR;
        buildInfo.flags = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR |
                        VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR;
        buildInfo.mode = VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR;
        buildInfo.srcAccelerationStructure = acceleration.vkAccelerationStructureKHR;
        buildInfo.dstAccelerationStructure = acceleration.vkAccelerationStructureKHR;
        buildInfo.geometryCount = 1;
        buildInfo.pGeometries = &geometry;
        buildInfo.scratchData.deviceAddress = acceleration.vkScratchBuffer.deviceAddress;

        VkAccelerationStructureBuildRangeInfoKHR rangeInfo{};
        rangeInfo.primitiveCount = numberInstances;
        rangeInfo.primitiveOffset = 0;
        rangeInfo.firstVertex = 0;
        rangeInfo.transformOffset = 0;

        const VkAccelerationStructureBuildRangeInfoKHR* rangeInfoArr[1] = {&rangeInfo};    

        beginVkCommand(vkTopAccelerationStructureUpdateCommandBuffer);

        vkCmdBuildAccelerationStructuresKHR
        (vkTopAccelerationStructureUpdateCommandBuffer,
        1,
        &buildInfo,
        rangeInfoArr);

        endVkCommand(vkTopAccelerationStructureUpdateCommandBuffer);

        submitVkCommand
        (VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
        vkImageIndexSemaphore,
        vkTopAccelerationStructureUpdateCommandBuffer,
        vkTopAccelerationStructureUpdateSemaphore,
        nullptr);
    }

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.