diff --git a/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp b/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp index 06ab624a67..2539f85723 100644 --- a/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp +++ b/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp @@ -46,18 +46,17 @@ VkLightmap::~VkLightmap() lights.Buffer->Unmap(); } -void VkLightmap::Raytrace(LevelMesh* level, const TArray& surfaces) +void VkLightmap::SetLevelMesh(LevelMesh* level) { - bool newLevel = (mesh != level); mesh = level; - if (newLevel) - { - UpdateAccelStructDescriptors(); + UpdateAccelStructDescriptors(); - lightmapRaytrace.Reset(); - lightmapRaytraceLast.Reset(); - } + lightmapRaytrace.Reset(); + lightmapRaytraceLast.Reset(); +} +void VkLightmap::Raytrace(const TArray& surfaces) +{ if (surfaces.Size()) { lightmapRaytrace.active = true; diff --git a/src/common/rendering/vulkan/accelstructs/vk_lightmap.h b/src/common/rendering/vulkan/accelstructs/vk_lightmap.h index b8493172c7..b1002cd2c7 100644 --- a/src/common/rendering/vulkan/accelstructs/vk_lightmap.h +++ b/src/common/rendering/vulkan/accelstructs/vk_lightmap.h @@ -90,8 +90,8 @@ public: VkLightmap(VulkanRenderDevice* fb); ~VkLightmap(); - void Raytrace(LevelMesh* level, const TArray& surfaces); - + void Raytrace(const TArray& surfaces); + void SetLevelMesh(LevelMesh* level); private: void UpdateAccelStructDescriptors(); diff --git a/src/common/rendering/vulkan/vk_renderdevice.cpp b/src/common/rendering/vulkan/vk_renderdevice.cpp index 9f2a0b3c18..64abf97c55 100644 --- a/src/common/rendering/vulkan/vk_renderdevice.cpp +++ b/src/common/rendering/vulkan/vk_renderdevice.cpp @@ -475,6 +475,7 @@ void VulkanRenderDevice::BeginFrame() { levelMesh->UpdateLightLists(); GetTextureManager()->CreateLightmap(levelMesh->LMTextureSize, levelMesh->LMTextureCount); + GetLightmap()->SetLevelMesh(levelMesh); #if 0 // full lightmap generation TArray surfaces; @@ -484,9 +485,7 @@ void VulkanRenderDevice::BeginFrame() surfaces[i] = mesh->GetSurface(i); } - GetLightmap()->Raytrace(mesh, surfaces); -#else - GetLightmap()->Raytrace(levelMesh, {}); + GetLightmap()->Raytrace(surfaces); #endif } } @@ -564,12 +563,9 @@ void VulkanRenderDevice::SetLevelMesh(LevelMesh* mesh) void VulkanRenderDevice::UpdateLightmaps(const TArray& surfaces) { - if (surfaces.Size() > 0) + if (surfaces.Size() > 0 && levelMesh) { - if (levelMesh) - { - GetLightmap()->Raytrace(levelMesh, surfaces); - } + GetLightmap()->Raytrace(surfaces); } }