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(