From 19e9ac1db3a16f027beca4749c8187c5e47f135f Mon Sep 17 00:00:00 2001 From: RaveYard <29225776+MrRaveYard@users.noreply.github.com> Date: Sat, 9 Sep 2023 14:38:09 +0200 Subject: [PATCH] Add cvar lm_scale for multiplying resolution of the lightmap --- src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp | 2 +- src/rendering/hwrenderer/doom_levelmesh.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp b/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp index 4e059fc82..681df71cf 100644 --- a/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp +++ b/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp @@ -21,7 +21,7 @@ ADD_STAT(lightmapper) CVAR(Int, lm_background_updates, 8, CVAR_NOSAVE); CVAR(Int, lm_max_updates, 128, CVAR_NOSAVE); - +CVAR(Float, lm_scale, 1.0, CVAR_NOSAVE); VkLightmap::VkLightmap(VulkanRenderDevice* fb) : fb(fb) { diff --git a/src/rendering/hwrenderer/doom_levelmesh.cpp b/src/rendering/hwrenderer/doom_levelmesh.cpp index 598c5e376..cd9dd011c 100644 --- a/src/rendering/hwrenderer/doom_levelmesh.cpp +++ b/src/rendering/hwrenderer/doom_levelmesh.cpp @@ -35,6 +35,8 @@ CCMD(invalidatelightmap) Printf("Marked %d out of %d surfaces for update.\n", count, level.levelMesh->Surfaces.Size()); } +EXTERN_CVAR(Float, lm_scale); + DoomLevelMesh::DoomLevelMesh(FLevelLocals &doomMap) { SunColor = doomMap.SunColor; // TODO keep only one copy? @@ -1100,6 +1102,8 @@ void DoomLevelMesh::BuildSurfaceParams(int lightMapTextureWidth, int lightMapTex surface.sampleDimension = LightmapSampleDistance; } + surface.sampleDimension = uint16_t(max(int(roundf(float(surface.sampleDimension) / max(1.0f / 4, float(lm_scale)))), 1)); + { // Round to nearest power of two uint32_t n = uint16_t(surface.sampleDimension);