diff --git a/src/common/rendering/vulkan/accelstructs/vk_raytrace.cpp b/src/common/rendering/vulkan/accelstructs/vk_raytrace.cpp index 7b5b14b5b..6a13c7af5 100644 --- a/src/common/rendering/vulkan/accelstructs/vk_raytrace.cpp +++ b/src/common/rendering/vulkan/accelstructs/vk_raytrace.cpp @@ -103,7 +103,6 @@ void VkRaytrace::CreateBuffers() std::vector vertices; vertices.reserve(Mesh->MeshVertices.Size()); for (int i = 0, count = Mesh->MeshVertices.Size(); i < count; ++i) - //vertices.push_back({ { Mesh->MeshVertices[i], 1.0f } }); vertices.push_back({ { Mesh->MeshVertices[i], 1.0f }, Mesh->MeshVertexUVs[i], float(i), i + 10000.0f}); CollisionNodeBufferHeader nodesHeader; @@ -133,6 +132,10 @@ void VkRaytrace::CreateBuffers() auto mat = FMaterial::ValidateTexture(TexMan.GetGameTexture(surface->texture), 0); info.TextureIndex = fb->GetBindlessTextureIndex(mat, CLAMP_NONE, 0); } + else + { + info.TextureIndex = -1; + } surfaceInfo.Push(info); } @@ -197,11 +200,6 @@ void VkRaytrace::CreateBuffers() PipelineBarrier() .AddMemory(VK_ACCESS_TRANSFER_WRITE_BIT, useRayQuery ? VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR : VK_ACCESS_SHADER_READ_BIT) .Execute(fb->GetCommands()->GetTransferCommands(), VK_PIPELINE_STAGE_TRANSFER_BIT, useRayQuery ? VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR : VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT); - - /*if (useRayQuery) - PipelineBarrier() - .AddMemory(VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_SHADER_READ_BIT) - .Execute(fb->GetCommands()->GetTransferCommands(), VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);*/ } void VkRaytrace::CreateBottomLevelAccelerationStructure() diff --git a/wadsrc/static/shaders/lightmap/frag_raytrace.glsl b/wadsrc/static/shaders/lightmap/frag_raytrace.glsl index 1f74a437b..3c40414b2 100644 --- a/wadsrc/static/shaders/lightmap/frag_raytrace.glsl +++ b/wadsrc/static/shaders/lightmap/frag_raytrace.glsl @@ -524,6 +524,11 @@ int TraceFirstHitTriangleT(vec3 origin, float tmin, vec3 dir, float tmax, out fl int index = primitiveID * 3; vec2 uv = vertices[elements[index + 0]].uv * primitiveWeights.x + vertices[elements[index + 1]].uv * primitiveWeights.y + vertices[elements[index + 2]].uv * primitiveWeights.z; + if (surface.TextureIndex < 0) + { + break; + } + if (texture(textures[surface.TextureIndex], uv).w > 0.9) { break;