From 624c7aaaf192f2e87081a241123a8507a4718ba3 Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Thu, 29 Jun 2023 10:11:19 +1000 Subject: Move lighting calculation to separate thread --- source/rendering/StarTilePainter.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'source/rendering/StarTilePainter.cpp') diff --git a/source/rendering/StarTilePainter.cpp b/source/rendering/StarTilePainter.cpp index 68e1110..fc115e5 100644 --- a/source/rendering/StarTilePainter.cpp +++ b/source/rendering/StarTilePainter.cpp @@ -38,7 +38,8 @@ void TilePainter::adjustLighting(WorldRenderData& renderData) const { RectI lightRange = RectI::withSize(renderData.lightMinPosition, Vec2I(renderData.lightMap.size())); forEachRenderTile(renderData, lightRange, [&](Vec2I const& pos, RenderTile const& tile) { // Only adjust lighting for full tiles - if (liquidDrawLevel(byteToFloat(tile.liquidLevel)) < 1.0f) + float drawLevel = liquidDrawLevel(byteToFloat(tile.liquidLevel)); + if (drawLevel == 0.0f) return; auto lightIndex = Vec2U(pos - renderData.lightMinPosition); @@ -46,7 +47,7 @@ void TilePainter::adjustLighting(WorldRenderData& renderData) const { auto const& liquid = m_liquids[tile.liquidId]; Vec3F tileLight = Vec3F(lightValue); - float darknessLevel = (1 - tileLight.sum() / (3.0f * 255.0f)); + float darknessLevel = (1 - tileLight.sum() / (3.0f * 255.0f)) * drawLevel; lightValue = Vec3B(tileLight.piecewiseMultiply(Vec3F::filled(1 - darknessLevel) + liquid.bottomLightMix * darknessLevel)); renderData.lightMap.set(lightIndex, lightValue); -- cgit v1.2.3