summaryrefslogtreecommitdiff
path: root/indra/llinventory
diff options
context:
space:
mode:
authorGraham Linden <graham@lindenlab.com>2019-05-13 15:33:48 -0700
committerGraham Linden <graham@lindenlab.com>2019-05-13 15:33:48 -0700
commitb143aa96fcd6d16558464c98bcfd9984f7d29750 (patch)
tree72645408a6a4f8f179a1c668f530d3844d6558dd /indra/llinventory
parent4e9111bbd49e9c5f84be5dc82949dd0ec1f6a03b (diff)
SL-10856
Modify calc of sunlight to avoid clipping in gamma correct on values outside 0-1 range. Modify shaders to put back ambient clamp tuned to be close to ambient contrib in low/mid lighting.
Diffstat (limited to 'indra/llinventory')
-rw-r--r--indra/llinventory/llsettingssky.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/indra/llinventory/llsettingssky.cpp b/indra/llinventory/llsettingssky.cpp
index cfca2d0d78..211af6a7ae 100644
--- a/indra/llinventory/llsettingssky.cpp
+++ b/indra/llinventory/llsettingssky.cpp
@@ -32,6 +32,10 @@
#include "llfasttimer.h"
#include "v3colorutil.h"
+#if LL_WINDOWS
+#pragma optimize("", off)
+#endif
+
//=========================================================================
namespace
{
@@ -1276,8 +1280,10 @@ void LLSettingsSky::calculateLightSettings() const
LLColor3 tmpAmbient = ambient + (smear(1.f) - ambient) * cloud_shadow;
//brightness of surface both sunlight and ambient
- mSunDiffuse = gammaCorrect(componentMult(sunlight, light_transmittance));
- mSunAmbient = gammaCorrect(componentMult(tmpAmbient, light_transmittance));
+ // reduce range to 0 - 1 before gamma correct to prevent clipping
+ // then restore to full 0 - 3 range before storage
+ mSunDiffuse = gammaCorrect(componentMult(sunlight * 0.33333f, light_transmittance)) * 3.0f;
+ mSunAmbient = gammaCorrect(componentMult(tmpAmbient * 0.33333f, light_transmittance)) * 3.0f;
F32 moon_brightness = getIsMoonUp() ? getMoonBrightness() : 0.001f;