diff --git a/src/vkcv/Context.cpp b/src/vkcv/Context.cpp
index 2e30fb961d0b0931e4ff8796dd92b2cbd0b5f734..6543c50ee8ffe7edb4a3a7a40e1e61f494b68044 100644
--- a/src/vkcv/Context.cpp
+++ b/src/vkcv/Context.cpp
@@ -326,7 +326,31 @@ namespace vkcv
 		if (storage16bit) {
 			deviceShaderFloat16Int8Features.setPNext(&device16BitStorageFeatures);
 		}
-		
+
+		// add raytracing features, if available
+		const bool usingRTX = isPresentInCharPtrVector(deviceExtensions, VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME);
+		if (usingRTX) {
+		    vk::PhysicalDeviceFeatures2 raytracingFeatures2;    // INFO: vulkan says we can only use one PhysicalDeviceFeatures2 struct -> replace deviceFeatures2 by raytracingFeatures2
+		    vk::PhysicalDeviceVulkan12Features raytracingFeatures12;
+		    vk::PhysicalDeviceVulkan11Features raytracingFeatures11;
+		    vk::PhysicalDeviceAccelerationStructureFeaturesKHR raytracingAccelerationFeatures;
+		    vk::PhysicalDeviceRayTracingPipelineFeaturesKHR raytracingPipelineFeatures;
+
+		    raytracingFeatures2.setPNext(&raytracingFeatures12);
+		    raytracingFeatures12.setPNext(&raytracingFeatures11);
+		    raytracingFeatures11.setPNext(&raytracingAccelerationFeatures);
+		    raytracingAccelerationFeatures.setPNext(&raytracingPipelineFeatures);
+
+		    physicalDevice.getFeatures2(&raytracingFeatures2);  // query supported features
+
+		    // add raytracing features to deviceFeatures2
+		    deviceFeatures2.setFeatures(raytracingFeatures2.features);  // TODO: Ist das so korrekt? Haette sonst an dem letzten pNext Eintrag (leider ein void*) die anderen Features angekettet
+		    deviceFeatures2.features.fragmentStoresAndAtomics = true;   // TODO: Wir koennten hier auch die .features Zeilen von oben runternehmen zu nach den Klammern
+		    deviceFeatures2.features.geometryShader = true;
+		    deviceFeatures2.features.depthClamp = true;
+		    deviceFeatures2.features.shaderInt16 = true;
+		}
+
 		deviceCreateInfo.setPNext(&deviceFeatures2);
 
 		// Ablauf