diff --git a/src/common/rendering/vulkan/accelstructs/vk_raytrace.cpp b/src/common/rendering/vulkan/accelstructs/vk_raytrace.cpp index 0a264f84a..3b2f7f04a 100644 --- a/src/common/rendering/vulkan/accelstructs/vk_raytrace.cpp +++ b/src/common/rendering/vulkan/accelstructs/vk_raytrace.cpp @@ -55,12 +55,9 @@ void VkRaytrace::SetLevelMesh(LevelMesh* mesh) if (!mesh) mesh = &NullMesh; - if (mesh != Mesh) - { - Reset(); - Mesh = mesh; - CreateVulkanObjects(); - } + Reset(); + Mesh = mesh; + CreateVulkanObjects(); } void VkRaytrace::Reset() diff --git a/src/common/rendering/vulkan/vk_renderdevice.cpp b/src/common/rendering/vulkan/vk_renderdevice.cpp index 7cb5b3543..defbe5cf6 100644 --- a/src/common/rendering/vulkan/vk_renderdevice.cpp +++ b/src/common/rendering/vulkan/vk_renderdevice.cpp @@ -535,7 +535,7 @@ void VulkanRenderDevice::SetLevelMesh(LevelMesh* mesh) { mRaytrace->SetLevelMesh(mesh); - if (lastMesh != mesh && mesh->GetSurfaceCount() > 0) + if (mesh->GetSurfaceCount() > 0) { lastMesh = mesh; diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 2528e0e76..b984aff8c 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -475,6 +475,8 @@ void P_SetupLevel(FLevelLocals *Level, int position, bool newGame) loader.LoadLevel(map, Level->MapName.GetChars(), position); delete map; + screen->SetLevelMesh(Level->levelMesh); + // if deathmatch, randomly spawn the active players if (deathmatch) { diff --git a/src/rendering/hwrenderer/hw_entrypoint.cpp b/src/rendering/hwrenderer/hw_entrypoint.cpp index 0e64e755f..ebd498900 100644 --- a/src/rendering/hwrenderer/hw_entrypoint.cpp +++ b/src/rendering/hwrenderer/hw_entrypoint.cpp @@ -123,8 +123,6 @@ sector_t* RenderViewpoint(FRenderViewpoint& mainvp, AActor* camera, IntRect* bou screen->mShadowMap->SetCollectLights(nullptr); } - screen->SetLevelMesh(camera->Level->levelMesh); - static HWDrawContext mainthread_drawctx; hw_ClearFakeFlat(&mainthread_drawctx);