From be81f74954f69606ee52c9b9f3994036f5c8025f Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Sun, 1 Oct 2023 13:08:57 +0200 Subject: [PATCH] Turn on backface culling --- src/common/rendering/vulkan/accelstructs/vk_raytrace.cpp | 8 ++++---- wadsrc/static/shaders/lightmap/polyfill_rayquery.glsl | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/common/rendering/vulkan/accelstructs/vk_raytrace.cpp b/src/common/rendering/vulkan/accelstructs/vk_raytrace.cpp index d851aaa18..94a0b8956 100644 --- a/src/common/rendering/vulkan/accelstructs/vk_raytrace.cpp +++ b/src/common/rendering/vulkan/accelstructs/vk_raytrace.cpp @@ -490,14 +490,14 @@ void VkRaytrace::CreateTopLevelAS() instances[0].transform.matrix[1][1] = 1.0f; instances[0].transform.matrix[2][2] = 1.0f; instances[0].mask = 0xff; - instances[0].flags = VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR; + instances[0].flags = 0; instances[0].accelerationStructureReference = StaticBLAS.AccelStruct->GetDeviceAddress(); instances[1].transform.matrix[0][0] = 1.0f; instances[1].transform.matrix[1][1] = 1.0f; instances[1].transform.matrix[2][2] = 1.0f; instances[1].mask = 0xff; - instances[1].flags = VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR; + instances[1].flags = 0; instances[1].accelerationStructureReference = DynamicBLAS.AccelStruct->GetDeviceAddress(); TopLevelAS.TransferBuffer = BufferBuilder() @@ -595,14 +595,14 @@ void VkRaytrace::UpdateTopLevelAS() instances[0].transform.matrix[1][1] = 1.0f; instances[0].transform.matrix[2][2] = 1.0f; instances[0].mask = 0xff; - instances[0].flags = VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR; + instances[0].flags = 0; instances[0].accelerationStructureReference = StaticBLAS.AccelStruct->GetDeviceAddress(); instances[1].transform.matrix[0][0] = 1.0f; instances[1].transform.matrix[1][1] = 1.0f; instances[1].transform.matrix[2][2] = 1.0f; instances[1].mask = 0xff; - instances[1].flags = VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR; + instances[1].flags = 0; instances[1].accelerationStructureReference = DynamicBLAS.AccelStruct->GetDeviceAddress(); auto data = (uint8_t*)TopLevelAS.TransferBuffer->Map(0, sizeof(VkAccelerationStructureInstanceKHR) * 2); diff --git a/wadsrc/static/shaders/lightmap/polyfill_rayquery.glsl b/wadsrc/static/shaders/lightmap/polyfill_rayquery.glsl index f99b696ca..0a793a32b 100644 --- a/wadsrc/static/shaders/lightmap/polyfill_rayquery.glsl +++ b/wadsrc/static/shaders/lightmap/polyfill_rayquery.glsl @@ -4,7 +4,7 @@ int TraceFirstHitTriangleNoPortal(vec3 origin, float tmin, vec3 dir, float tmax, out float t, out vec3 primitiveWeights) { rayQueryEXT rayQuery; - rayQueryInitializeEXT(rayQuery, acc, gl_RayFlagsTerminateOnFirstHitEXT, 0xFF, origin, tmin, dir, tmax); + rayQueryInitializeEXT(rayQuery, acc, gl_RayFlagsTerminateOnFirstHitEXT | gl_RayFlagsCullBackFacingTrianglesEXT, 0xFF, origin, tmin, dir, tmax); while(rayQueryProceedEXT(rayQuery)) { @@ -34,7 +34,7 @@ int TraceFirstHitTriangleNoPortal(vec3 origin, float tmin, vec3 dir, float tmax, bool TraceAnyHit(vec3 origin, float tmin, vec3 dir, float tmax) { rayQueryEXT rayQuery; - rayQueryInitializeEXT(rayQuery, acc, gl_RayFlagsTerminateOnFirstHitEXT, 0xFF, origin, tmin, dir, tmax); + rayQueryInitializeEXT(rayQuery, acc, gl_RayFlagsTerminateOnFirstHitEXT | gl_RayFlagsCullBackFacingTrianglesEXT, 0xFF, origin, tmin, dir, tmax); while(rayQueryProceedEXT(rayQuery)) { } return rayQueryGetIntersectionTypeEXT(rayQuery, true) != gl_RayQueryCommittedIntersectionNoneEXT; }