Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/base/StarCellularLightArray.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/base/StarCellularLightArray.cpp')
-rw-r--r--source/base/StarCellularLightArray.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/source/base/StarCellularLightArray.cpp b/source/base/StarCellularLightArray.cpp
index 49e0917..c20cd5c 100644
--- a/source/base/StarCellularLightArray.cpp
+++ b/source/base/StarCellularLightArray.cpp
@@ -64,12 +64,12 @@ void CellularLightArray<ScalarLightTraits>::calculatePointLighting(size_t xmin,
attenuation += min(blockAttenuation, circularizedPerBlockObstacleAttenuation) * m_pointObstacleBoost;
if (attenuation < 1.0f) {
- auto newLight = ScalarLightTraits::subtract(light.value, attenuation);
- if (ScalarLightTraits::maxIntensity(newLight) > 0.0001f) {
- if (light.asSpread)
- setLight(x, y, lvalue + newLight * 0.15f);
- else
- setLight(x, y, lvalue + newLight);
+ if (m_pointAdditive) {
+ auto newLight = ScalarLightTraits::subtract(light.value, attenuation);
+ if (ScalarLightTraits::maxIntensity(newLight) > 0.0001f)
+ setLight(x, y, lvalue + (light.asSpread ? newLight * 0.15f : newLight));
+ } else {
+ setLight(x, y, ScalarLightTraits::max(ScalarLightTraits::subtract(light.value, attenuation), lvalue));
}
}
}
@@ -137,12 +137,12 @@ void CellularLightArray<ColoredLightTraits>::calculatePointLighting(size_t xmin,
attenuation += min(blockAttenuation, circularizedPerBlockObstacleAttenuation) * m_pointObstacleBoost;
if (attenuation < 1.0f) {
- auto newLight = ColoredLightTraits::subtract(light.value, attenuation);
- if (ColoredLightTraits::maxIntensity(newLight) > 0.0001f) {
- if (light.asSpread)
- setLight(x, y, lvalue + newLight * 0.15f);
- else
- setLight(x, y, lvalue + newLight);
+ if (m_pointAdditive) {
+ auto newLight = ColoredLightTraits::subtract(light.value, attenuation);
+ if (ColoredLightTraits::maxIntensity(newLight) > 0.0001f)
+ setLight(x, y, lvalue + (light.asSpread ? newLight * 0.15f : newLight));
+ } else {
+ setLight(x, y, ColoredLightTraits::max(ColoredLightTraits::subtract(light.value, attenuation), lvalue));
}
}
}