diff --git a/projects/rtx/src/main.cpp b/projects/rtx/src/main.cpp
index 527eba8c3a1e020e14d92f5d305e2ddced936333..fbfa6c766b915792ae62af43721144f6d1f1167d 100644
--- a/projects/rtx/src/main.cpp
+++ b/projects/rtx/src/main.cpp
@@ -29,14 +29,45 @@ int main(int argc, const char** argv) {
 	
 	cameraManager.getCamera(camIndex1).setNearFar(0.1f, 30.0f);
 
+	// prepare raytracing extensions. IMPORTANT: configure compiler to build in 64 bit mode
+	std::vector<const char*> raytracingInstanceExtensions = {
+        "VK_KHR_get_physical_device_properties2"
+	};
+    std::vector<const char*> raytracingDeviceExtensions = {
+        // vulkan raytracing extensions (according to https://www.khronos.org/blog/ray-tracing-in-vulkan)
+        "VK_KHR_maintenance3",
+        "VK_EXT_descriptor_indexing",
+        "VK_KHR_buffer_device_address",
+        "VK_KHR_deferred_host_operations",
+        "VK_KHR_acceleration_structure",
+        "VK_KHR_spirv_1_4",
+        "VK_KHR_ray_tracing_pipeline",
+        "VK_KHR_ray_query",
+        "VK_KHR_pipeline_library",
+
+        // turing raytracing extensions (rtx) (according to https://developer.nvidia.com/vulkan-turing)
+        "VK_KHR_get_memory_requirements2",
+        "VK_NV_ray_tracing"
+    };
+
+    std::vector<const char*> instanceExtensions = {};
+    instanceExtensions.insert(instanceExtensions.end(), raytracingInstanceExtensions.begin(), raytracingInstanceExtensions.end());
+
+    std::vector<const char*> deviceExtensions = {
+        "VK_KHR_swapchain"
+    };
+    deviceExtensions.insert(deviceExtensions.end(), raytracingDeviceExtensions.begin(), raytracingDeviceExtensions.end());
+
 	vkcv::Core core = vkcv::Core::create(
 		window,
 		applicationName,
 		VK_MAKE_VERSION(0, 0, 1),
 		{ vk::QueueFlagBits::eGraphics ,vk::QueueFlagBits::eCompute , vk::QueueFlagBits::eTransfer },
-		{},
-		{ "VK_KHR_swapchain" }
+        instanceExtensions,
+		deviceExtensions
 	);
+
+	vk::RayTracingPipelineCreateInfoNV rtnv;
 	
 	vkcv::scene::Scene scene = vkcv::scene::Scene::load(core, std::filesystem::path(
 			argc > 1 ? argv[1] : "resources/Sponza/Sponza.gltf"