diff --git a/src/common/rendering/vulkan/vk_levelmesh.h b/src/common/rendering/vulkan/vk_levelmesh.h index 7ba7eb23c..873d4ce04 100644 --- a/src/common/rendering/vulkan/vk_levelmesh.h +++ b/src/common/rendering/vulkan/vk_levelmesh.h @@ -119,14 +119,6 @@ private: std::unique_ptr NodeBuffer; - TArray Vertices; - static const int MaxDynamicVertices = 100'000; - static const int MaxDynamicIndexes = 100'000; - static const int MaxDynamicSurfaces = 100'000; - static const int MaxDynamicUniforms = 100'000; - static const int MaxDynamicSurfaceIndexes = 25'000; - static const int MaxDynamicNodes = 10'000; - BLAS StaticBLAS; BLAS DynamicBLAS; diff --git a/src/common/rendering/vulkan/vk_lightmapper.cpp b/src/common/rendering/vulkan/vk_lightmapper.cpp index 699c5efe6..ed90fa130 100644 --- a/src/common/rendering/vulkan/vk_lightmapper.cpp +++ b/src/common/rendering/vulkan/vk_lightmapper.cpp @@ -9,8 +9,6 @@ #include "filesystem.h" #include "cmdlib.h" -#define USE_DRAWINDIRECT - static int lastSurfaceCount; static glcycle_t lightmapRaytraceLast; @@ -239,7 +237,6 @@ void VkLightmapper::Render() pc.LightStart = surface->LightList.Pos; pc.LightEnd = pc.LightStart + surface->LightList.Count; -#ifdef USE_DRAWINDIRECT VkDrawIndexedIndirectCommand cmd; cmd.indexCount = surface->MeshLocation.NumElements; cmd.instanceCount = 1; @@ -256,10 +253,6 @@ void VkLightmapper::Render() buffersFull = true; break; } -#else - cmdbuffer->pushConstants(raytrace.pipelineLayout.get(), VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT, 0, sizeof(LightmapRaytracePC), &pc); - cmdbuffer->drawIndexed(surface->numElements, 1, surface->startElementIndex, 0, 0); -#endif } if (buffersFull) @@ -275,9 +268,7 @@ void VkLightmapper::Render() selectedTile.Rendered = true; } -#ifdef USE_DRAWINDIRECT cmdbuffer->drawIndexedIndirect(drawindexed.CommandsBuffer->buffer, 0, drawindexed.Pos, sizeof(VkDrawIndexedIndirectCommand)); -#endif cmdbuffer->endRenderPass(); @@ -542,10 +533,6 @@ void VkLightmapper::CreateShaders() traceprefix += "#extension GL_EXT_ray_query : require\r\n"; traceprefix += "#define USE_RAYQUERY\r\n"; } -#ifdef USE_DRAWINDIRECT - prefix += "#define USE_DRAWINDIRECT\r\n"; - traceprefix += "#define USE_DRAWINDIRECT\r\n"; -#endif auto onIncludeLocal = [](std::string headerName, std::string includerName, size_t depth) { return OnInclude(headerName.c_str(), includerName.c_str(), depth, false); }; auto onIncludeSystem = [](std::string headerName, std::string includerName, size_t depth) { return OnInclude(headerName.c_str(), includerName.c_str(), depth, true); }; @@ -693,9 +680,7 @@ void VkLightmapper::CreateRaytracePipeline() .AddBinding(2, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1, VK_SHADER_STAGE_FRAGMENT_BIT) .AddBinding(3, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1, VK_SHADER_STAGE_FRAGMENT_BIT) .AddBinding(4, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1, VK_SHADER_STAGE_FRAGMENT_BIT) -#ifdef USE_DRAWINDIRECT .AddBinding(5, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1, VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT) -#endif .DebugName("raytrace.descriptorSetLayout0") .Create(fb->GetDevice()); @@ -722,9 +707,6 @@ void VkLightmapper::CreateRaytracePipeline() .AddSetLayout(raytrace.descriptorSetLayout0.get()) .AddSetLayout(raytrace.descriptorSetLayout1.get()) .AddSetLayout(fb->GetDescriptorSetManager()->GetBindlessLayout()) -#ifndef USE_DRAWINDIRECT - .AddPushConstantRange(VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT, 0, sizeof(LightmapRaytracePC)) -#endif .DebugName("raytrace.pipelineLayout") .Create(fb->GetDevice()); @@ -821,9 +803,7 @@ void VkLightmapper::UpdateAccelStructDescriptors() .AddBuffer(raytrace.descriptorSet0.get(), 2, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetLevelMesh()->GetSurfaceBuffer()) .AddBuffer(raytrace.descriptorSet0.get(), 3, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, lights.Buffer.get()) .AddBuffer(raytrace.descriptorSet0.get(), 4, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetLevelMesh()->GetPortalBuffer()) -#ifdef USE_DRAWINDIRECT .AddBuffer(raytrace.descriptorSet0.get(), 5, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, drawindexed.ConstantsBuffer.get(), 0, drawindexed.BufferSize * sizeof(LightmapRaytracePC)) -#endif .Execute(fb->GetDevice()); } diff --git a/wadsrc/static/shaders/lightmap/binding_lightmapper.glsl b/wadsrc/static/shaders/lightmap/binding_lightmapper.glsl index 591973a3c..a0e02ae50 100644 --- a/wadsrc/static/shaders/lightmap/binding_lightmapper.glsl +++ b/wadsrc/static/shaders/lightmap/binding_lightmapper.glsl @@ -43,8 +43,6 @@ layout(set = 0, binding = 2) buffer SurfaceBuffer { SurfaceInfo surfaces[]; }; layout(set = 0, binding = 3) buffer LightBuffer { LightInfo lights[]; }; layout(set = 0, binding = 4) buffer PortalBuffer { PortalInfo portals[]; }; -#if defined(USE_DRAWINDIRECT) - struct LightmapRaytracePC { uint LightStart; @@ -64,25 +62,3 @@ struct LightmapRaytracePC }; layout(std430, set = 0, binding = 5) buffer ConstantsBuffer { LightmapRaytracePC constants[]; }; - -#else - -layout(push_constant) uniform LightmapRaytracePC -{ - uint LightStart; - uint LightEnd; - int SurfaceIndex; - int PushPadding1; - vec3 WorldToLocal; - float TextureSize; - vec3 ProjLocalToU; - float PushPadding2; - vec3 ProjLocalToV; - float PushPadding3; - float TileX; - float TileY; - float TileWidth; - float TileHeight; -}; - -#endif diff --git a/wadsrc/static/shaders/lightmap/frag_raytrace.glsl b/wadsrc/static/shaders/lightmap/frag_raytrace.glsl index 1c9bd4e5b..172e59d74 100644 --- a/wadsrc/static/shaders/lightmap/frag_raytrace.glsl +++ b/wadsrc/static/shaders/lightmap/frag_raytrace.glsl @@ -8,22 +8,16 @@ #include #include -#if defined(USE_DRAWINDIRECT) - +layout(location = 0) centroid in vec3 worldpos; layout(location = 1) in flat int InstanceIndex; -#endif - -layout(location = 0) centroid in vec3 worldpos; layout(location = 0) out vec4 fragcolor; void main() { -#if defined(USE_DRAWINDIRECT) uint LightStart = constants[InstanceIndex].LightStart; uint LightEnd = constants[InstanceIndex].LightEnd; int SurfaceIndex = constants[InstanceIndex].SurfaceIndex; -#endif vec3 normal = surfaces[SurfaceIndex].Normal; vec3 origin = worldpos + normal * 0.01; diff --git a/wadsrc/static/shaders/lightmap/vert_raytrace.glsl b/wadsrc/static/shaders/lightmap/vert_raytrace.glsl index 4484786b0..1713fff85 100644 --- a/wadsrc/static/shaders/lightmap/vert_raytrace.glsl +++ b/wadsrc/static/shaders/lightmap/vert_raytrace.glsl @@ -4,13 +4,10 @@ layout(location = 0) in vec3 aPosition; layout(location = 0) out vec3 worldpos; -#if defined(USE_DRAWINDIRECT) layout(location = 1) out flat int InstanceIndex; -#endif void main() { -#if defined(USE_DRAWINDIRECT) vec3 WorldToLocal = constants[gl_InstanceIndex].WorldToLocal; float TextureSize = constants[gl_InstanceIndex].TextureSize; vec3 ProjLocalToU = constants[gl_InstanceIndex].ProjLocalToU; @@ -20,7 +17,6 @@ void main() float TileWidth = constants[gl_InstanceIndex].TileWidth; float TileHeight = constants[gl_InstanceIndex].TileHeight; InstanceIndex = gl_InstanceIndex; -#endif worldpos = aPosition;