I’m currently facing challenges getting Vulkan raytracing/pathtracing to work in Unreal Engine 5.5.1 on Ubuntu 22.04. My GPU is an Nvidia GeForce GTX 1070 (Pascal).
I encountered similar issues with DX12/DXR (DirectX Raytracing) on Windows using Unreal Engine 5.4.4. After some research on this topic i found the the reason
I discovered that raytracing support for Pascal GPUs in UE4 relied on emulation. Unfortunately, it seems Epic Games has removed support for Pascal GPUs by limiting access to the variable DXR_ALLOW_EMULATED_RAYTRACING=1, which requires editing the source code and rebuilding the engine as a workaround , the solution (detailed here: GTX-RTEMU-543-bin-patch/README.md at GTX-RTEMU-543-bin-patch · jimshalo10/GTX-RTEMU-543-bin-patch · GitHub).
I’m starting to think this might be the same situation with Vulkan. Has anyone experienced this issue or found a solution? Any insights would be greatly appreciated!
// Use the API version stored in the profile
ApiVersion = GetVulkanApiVersionForFeatureLevel(GMaxRHIFeatureLevel, false);
#if VULKAN_RHI_RAYTRACING
// Run a profile check to see if this device can support our raytacing requirements since it might change the required API version of the instance
if (FVulkanPlatform::SupportsProfileChecks() && GVulkanRayTracingCVar.GetValueOnAnyThread())
{
static IConsoleVariable* RequireSM6CVar = IConsoleManager::Get().FindConsoleVariable(TEXT("r.RayTracing.RequireSM6"));
const bool bRequireSM6 = RequireSM6CVar && RequireSM6CVar->GetBool();
const bool bRayTracingAllowedOnCurrentShaderPlatform = (bRequireSM6 == false) || (GMaxRHIShaderPlatform == SP_VULKAN_SM6 || IsVulkanMobileSM5Platform(GMaxRHIShaderPlatform));
if (CheckVulkanProfile(GMaxRHIFeatureLevel, true) && bRayTracingAllowedOnCurrentShaderPlatform)
{
// Raytracing is supported, update the required API version
ApiVersion = GetVulkanApiVersionForFeatureLevel(GMaxRHIFeatureLevel, true);
}
else
{
// Raytracing is not supported, disable it completely instead of only loading parts of it
GVulkanRayTracingCVar->Set(0, ECVF_SetByCode);
if (!bRayTracingAllowedOnCurrentShaderPlatform)
{
UE_LOG(LogVulkanRHI, Display, TEXT("Vulkan RayTracing disabled because SM6 shader platform is required (r.RayTracing.RequireSM6=1)."));
}
else
{
UE_LOG(LogVulkanRHI, Display, TEXT("Vulkan RayTracing disabled because of failed profile check."));
}
}
}
#endif // VULKAN_RHI_RAYTRACING