diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-03-26 07:31:33 +1100 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-03-26 07:31:33 +1100 |
commit | c484fab32dcac655164f082805d1d55d1d058f2f (patch) | |
tree | 9eeabdaee723a88bbebdd77d41d1bb93ee3def83 /source/game/StarWorldClient.cpp | |
parent | 77d7f8eb81af21dd231f6384951fc2c14c149d5c (diff) |
experiment: auto-conversion of object spread lights to hybrid spread/point lights
Diffstat (limited to 'source/game/StarWorldClient.cpp')
-rw-r--r-- | source/game/StarWorldClient.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/source/game/StarWorldClient.cpp b/source/game/StarWorldClient.cpp index df69b94..535980b 100644 --- a/source/game/StarWorldClient.cpp +++ b/source/game/StarWorldClient.cpp @@ -1652,10 +1652,15 @@ void WorldClient::lightingCalc() { for (auto const& light : lights) { Vec2F position = m_geometry.nearestTo(Vec2F(m_lightingCalculator.calculationRegion().min()), light.position); - if (light.pointLight) - m_lightingCalculator.addPointLight(position, light.color, light.pointBeam, light.beamAngle, light.beamAmbience); - else { + if (light.type == LightType::Spread) m_lightingCalculator.addSpreadLight(position, light.color); + else { + if (light.type == LightType::PointAsSpread) { + // hybrid (used for auto-converted object lights) - 75% spread, 25% point (2nd is applied elsewhere) + m_lightingCalculator.addSpreadLight(position, light.color * 0.75f); + m_lightingCalculator.addPointLight(position, light.color, light.pointBeam, light.beamAngle, light.beamAmbience, true); + } else // fully additive point light + m_lightingCalculator.addPointLight(position, light.color, light.pointBeam, light.beamAngle, light.beamAmbience); } } |