diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2025-03-09 08:26:51 +1100 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2025-03-09 08:26:51 +1100 |
commit | 0fe21a8bb81c151d7f7427e788ca8cc576fe2778 (patch) | |
tree | b9febe5e2868398c57a74823dc6ecc89a7e91ce4 /source/game/StarWorldClient.cpp | |
parent | d90cd2363a0b1d9186732719c658e942f78e7c8e (diff) |
speculative fix for lightmap flicker
can't tell what's going on here - is lighting calculation being ran when the point lights aren't populated? weird
Diffstat (limited to 'source/game/StarWorldClient.cpp')
-rw-r--r-- | source/game/StarWorldClient.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/source/game/StarWorldClient.cpp b/source/game/StarWorldClient.cpp index efc2eb7..82c09ae 100644 --- a/source/game/StarWorldClient.cpp +++ b/source/game/StarWorldClient.cpp @@ -90,6 +90,7 @@ WorldClient::WorldClient(PlayerPtr mainPlayer, LuaRootPtr luaRoot) { m_altMusicActive = false; m_stopLightingThread = false; + m_pendingLightReady = false; clearWorld(); } @@ -461,6 +462,7 @@ void WorldClient::render(WorldRenderData& renderData, unsigned bufferTiles) { m_pendingLights = std::move(renderLightSources); m_pendingParticleLights = std::move(m_particles->lightSources()); m_pendingLightRange = window.padded(1); + m_pendingLightReady = true; } //Kae: Padded by one to fix light spread issues at the edges of the frame. if (m_asyncLighting) @@ -1667,7 +1669,9 @@ void WorldClient::lightingTileGather() { void WorldClient::lightingCalc() { MutexLocker prepLocker(m_lightMapPrepMutex); - + if (!m_pendingLightReady.load()) + return; + m_pendingLightReady = false; RectI lightRange = m_pendingLightRange; List<LightSource> lights = std::move(m_pendingLights); List<std::pair<Vec2F, Vec3F>> particleLights = std::move(m_pendingParticleLights); |