diff --git a/include/vkcv/BufferManager.hpp b/include/vkcv/BufferManager.hpp index 4b19a343a24817b07741d56a4481ffc5f6dd827c..272ba44bb622c476be2a2d2de5a101a24bc47fd3 100644 --- a/include/vkcv/BufferManager.hpp +++ b/include/vkcv/BufferManager.hpp @@ -14,7 +14,8 @@ namespace vkcv UNIFORM, STORAGE, STAGING, - RT_ACCELERATION + RT_ACCELERATION_VERTEX, + RT_ACCELERATION_INDEX }; enum class BufferMemoryType { diff --git a/src/vkcv/BufferManager.cpp b/src/vkcv/BufferManager.cpp index 0d2dc4fc93dc6c09ec4ff2ffa2fbe1d698ae7d86..6f0657059722d330f45eace75a9ea3d17b1624f1 100644 --- a/src/vkcv/BufferManager.cpp +++ b/src/vkcv/BufferManager.cpp @@ -48,10 +48,13 @@ namespace vkcv { case BufferType::INDEX: usageFlags = vk::BufferUsageFlagBits::eIndexBuffer; break; - case BufferType::RT_ACCELERATION: - usageFlags = vk::BufferUsageFlagBits::eAccelerationStructureStorageKHR | vk::BufferUsageFlagBits::eShaderDeviceAddress | vk::BufferUsageFlagBits::eStorageBuffer; + case BufferType::RT_ACCELERATION_VERTEX: + usageFlags = vk::BufferUsageFlagBits::eVertexBuffer | vk::BufferUsageFlagBits::eAccelerationStructureStorageKHR | vk::BufferUsageFlagBits::eShaderDeviceAddressKHR | vk::BufferUsageFlagBits::eStorageBuffer; break; - default: + case BufferType::RT_ACCELERATION_INDEX: + usageFlags = vk::BufferUsageFlagBits::eIndexBuffer | vk::BufferUsageFlagBits::eAccelerationStructureStorageKHR | vk::BufferUsageFlagBits::eShaderDeviceAddressKHR | vk::BufferUsageFlagBits::eStorageBuffer; + break; + default: vkcv_log(LogLevel::WARNING, "Unknown buffer type"); break; } @@ -89,7 +92,8 @@ namespace vkcv { if (type == BufferType::STAGING) { memoryUsage = vma::MemoryUsage::eCpuToGpu; } - + + // TODO ?vma::AllocatorCreateFlagBits::eKhrDedicatedAllocation? auto bufferAllocation = allocator.createBuffer( vk::BufferCreateInfo(createFlags, size, usageFlags), vma::AllocationCreateInfo(