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

summaryrefslogtreecommitdiff
path: root/source/base
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2024-03-29 02:23:36 +1100
committerKae <80987908+Novaenia@users.noreply.github.com>2024-03-29 02:23:36 +1100
commit53d4183ac349021b0eb3cd96639bc2bdc6aab90c (patch)
treeeeae3a2a61e055d06370781c20877c45babbd4eb /source/base
parent3c75c5d46057855c3965cc8e5feaac19c069b570 (diff)
Add a default brightness limit
Diffstat (limited to 'source/base')
-rw-r--r--source/base/StarCellularLighting.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/source/base/StarCellularLighting.cpp b/source/base/StarCellularLighting.cpp
index 3e5cf9a..cefd751 100644
--- a/source/base/StarCellularLighting.cpp
+++ b/source/base/StarCellularLighting.cpp
@@ -154,16 +154,23 @@ void CellularLightingCalculator::calculate(Lightmap& output) {
output = Lightmap(arrayMax[0] - arrayMin[0], arrayMax[1] - arrayMin[1]);
+ float brightnessLimit = m_config.getFloat("brightnessLimit", 1.5f);
+
if (m_monochrome) {
for (size_t x = arrayMin[0]; x < arrayMax[0]; ++x) {
for (size_t y = arrayMin[1]; y < arrayMax[1]; ++y) {
- output.set(x - arrayMin[0], y - arrayMin[1], m_lightArray.right().getLight(x, y));
+ auto light = min(m_lightArray.right().getLight(x, y), brightnessLimit);
+ output.set(x - arrayMin[0], y - arrayMin[1], light);
}
}
} else {
for (size_t x = arrayMin[0]; x < arrayMax[0]; ++x) {
for (size_t y = arrayMin[1]; y < arrayMax[1]; ++y) {
- output.set(x - arrayMin[0], y - arrayMin[1], m_lightArray.left().getLight(x, y));
+ auto light = m_lightArray.left().getLight(x, y);
+ float intensity = ColoredLightTraits::maxIntensity(light);
+ if (intensity > brightnessLimit)
+ light *= brightnessLimit / intensity;
+ output.set(x - arrayMin[0], y - arrayMin[1], light);
}
}
}