summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Parks <davep@lindenlab.com>2022-05-18 23:51:06 -0500
committerDave Parks <davep@lindenlab.com>2022-05-18 23:51:06 -0500
commit02fb1bd6103cad5538fc170e015f4329f3545542 (patch)
tree56fa652846482c973ece3fc75252cc1dc1bfec4f
parent63878a60eb8ab6884ed3aeec63a28e5089636092 (diff)
Make reflection probe ambiance controllable by a saved setting
-rw-r--r--indra/newview/app_settings/settings.xml11
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl7
-rw-r--r--indra/newview/llreflectionmapmanager.cpp5
3 files changed, 21 insertions, 2 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index aa2f1e9192..874d685ef4 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -10280,6 +10280,17 @@
<key>Value</key>
<real>64</real>
</map>
+ <key>RenderReflectionProbeAmbiance</key>
+ <map>
+ <key>Comment</key>
+ <string>Amount reflection probes contribute to ambient light.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>0</real>
+ </map>
<key>RenderReflectionProbeTextureHackID</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
index d188233a8d..d6b173b89d 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
@@ -69,6 +69,9 @@ layout (std140, binding = 1) uniform ReflectionProbes
// number of reflection probes present in refSphere
int refmapCount;
+
+ // intensity of ambient light from reflection probes
+ float reflectionAmbiance;
};
uniform float blur_size;
@@ -451,7 +454,7 @@ vec3 sampleAmbient(vec3 pos, vec3 dir, float lod)
col *= 0.333333;
- return col*0.8; // fudge darker
+ return col*reflectionAmbiance;
}
@@ -507,7 +510,7 @@ void main()
//vec3 amb_vec = env_mat * norm.xyz;
- vec3 ambenv = sampleAmbient(pos.xyz, norm.xyz, reflection_lods);
+ vec3 ambenv = sampleAmbient(pos.xyz, norm.xyz, reflection_lods-1);
amblit = max(ambenv, amblit);
color.rgb = amblit*ambocc;
diff --git a/indra/newview/llreflectionmapmanager.cpp b/indra/newview/llreflectionmapmanager.cpp
index f4fdc3993f..8aacbba6be 100644
--- a/indra/newview/llreflectionmapmanager.cpp
+++ b/indra/newview/llreflectionmapmanager.cpp
@@ -32,6 +32,7 @@
#include "llviewerregion.h"
#include "pipeline.h"
#include "llviewershadermgr.h"
+#include "llviewercontrol.h"
extern BOOL gCubeSnapshot;
extern BOOL gTeleportDisplay;
@@ -514,6 +515,7 @@ void LLReflectionMapManager::setUniforms()
GLint refIndex[LL_REFLECTION_PROBE_COUNT][4];
GLint refNeighbor[4096];
GLint refmapCount;
+ GLfloat reflectionAmbiance;
};
mReflectionMaps.resize(LL_REFLECTION_PROBE_COUNT);
@@ -521,6 +523,9 @@ void LLReflectionMapManager::setUniforms()
ReflectionProbeData rpd;
+ static LLCachedControl<F32> ambiance(gSavedSettings, "RenderReflectionProbeAmbiance", 0.f);
+ rpd.reflectionAmbiance = ambiance;
+
// load modelview matrix into matrix 4a
LLMatrix4a modelview;
modelview.loadu(gGLModelView);