diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-29 10:11:19 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-29 10:11:19 +1000 |
commit | 624c7aaaf192f2e87081a241123a8507a4718ba3 (patch) | |
tree | a54b09902da8d724f3ba740a215fd53d8a861fd9 /source/rendering/StarTilePainter.cpp | |
parent | 9d67cda97fc327ca3c53e044a897fbfb196104c4 (diff) |
Move lighting calculation to separate thread
Diffstat (limited to 'source/rendering/StarTilePainter.cpp')
-rw-r--r-- | source/rendering/StarTilePainter.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
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); |