summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRunitaiLinden <davep@lindenlab.com>2023-04-11 15:09:58 -0500
committerGitHub <noreply@github.com>2023-04-11 15:09:58 -0500
commit2b2154f0217758b27b544d066024d922ba234d51 (patch)
treefafed45d3e9cc21b04e2babf6bf19d1a476fc88a
parent474739226433a74cdca05a949586139a9c9c0bbd (diff)
SL-19564 Rebalance exposure and sky. Hack legacy diffuse map saturation and brightness to allow ACES Hill all the time.
-rw-r--r--indra/llprimitive/lltextureentry.cpp2
-rw-r--r--indra/llrender/llglslshader.cpp3
-rw-r--r--indra/newview/app_settings/settings.xml19
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/exposureF.glsl7
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl2
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl2
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl22
-rw-r--r--indra/newview/app_settings/shaders/class1/environment/srgbF.glsl29
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl2
-rw-r--r--indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl4
-rw-r--r--indra/newview/app_settings/shaders/class2/windlight/atmosphericsFuncs.glsl8
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl2
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl3
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl3
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl13
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl2
-rw-r--r--indra/newview/llenvironment.cpp3
-rw-r--r--indra/newview/llenvironment.h1
-rw-r--r--indra/newview/llsculptidsize.cpp2
-rw-r--r--indra/newview/lltoolcomp.cpp2
-rw-r--r--indra/newview/llviewercontrol.cpp1
-rw-r--r--indra/newview/llviewermedia.cpp8
-rw-r--r--indra/newview/llviewermenu.cpp10
-rw-r--r--indra/newview/llviewershadermgr.cpp15
-rw-r--r--indra/newview/pipeline.cpp12
-rw-r--r--indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml36
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml32
27 files changed, 128 insertions, 117 deletions
diff --git a/indra/llprimitive/lltextureentry.cpp b/indra/llprimitive/lltextureentry.cpp
index 17b1f4cf5c..71caff1686 100644
--- a/indra/llprimitive/lltextureentry.cpp
+++ b/indra/llprimitive/lltextureentry.cpp
@@ -536,7 +536,7 @@ void LLTextureEntry::setGLTFMaterial(LLGLTFMaterial* material, bool local_origin
// whether or not mGLTFMaterial is null, any existing override should have been cleared
// before calling setGLTFMaterial
// NOTE: if you're hitting this assert, try to make sure calling code is using LLViewerObject::setRenderMaterialID
- llassert(!local_origin || getGLTFMaterialOverride() == nullptr || getGLTFMaterialOverride()->isClearedForBaseMaterial());
+ //llassert(!local_origin || getGLTFMaterialOverride() == nullptr || getGLTFMaterialOverride()->isClearedForBaseMaterial());
if (mGLTFMaterial)
{
diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index 61a17e5f52..d27528296f 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -1099,7 +1099,8 @@ S32 LLGLSLShader::bindTexture(S32 uniform, LLRenderTarget* texture, bool depth,
if (uniform > -1)
{
- gGL.getTexUnit(uniform)->bindManual(texture->getUsage(), texture->getTexture(0));
+ bool has_mips = mode == LLTexUnit::TFO_TRILINEAR || mode == LLTexUnit::TFO_ANISOTROPIC;
+ gGL.getTexUnit(uniform)->bindManual(texture->getUsage(), texture->getTexture(0), has_mips);
gGL.getTexUnit(uniform)->setTextureFilteringOption(mode);
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 7d15214ccb..3d8cbc9527 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -10358,17 +10358,6 @@
<key>Value</key>
<integer>128</integer>
</map>
- <key>RenderTonemapper</key>
- <map>
- <key>Comment</key>
- <string>Which tone mapping function to use (0 - Linear, 1 - ACES Narkowicz, 2 - ACES Hill)</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>U32</string>
- <key>Value</key>
- <real>2</real>
- </map>
<key>RenderExposure</key>
<map>
<key>Comment</key>
@@ -10456,7 +10445,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>3.0</real>
+ <real>1.25</real>
</map>
<key>RenderReflectionProbeMaxLocalLightAmbiance</key>
<map>
@@ -10478,7 +10467,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>0.125</real>
+ <real>0.6</real>
</map>
<key>RenderDynamicExposureMax</key>
<map>
@@ -10489,7 +10478,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>1.3</real>
+ <real>1.5</real>
</map>
<key>RenderDynamicExposureCoefficient</key>
<map>
@@ -10500,7 +10489,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>0.175</real>
+ <real>0.3</real>
</map>
<key>RenderShaderLODThreshold</key>
<map>
diff --git a/indra/newview/app_settings/shaders/class1/deferred/exposureF.glsl b/indra/newview/app_settings/shaders/class1/deferred/exposureF.glsl
index 7ed8e4c8ce..81f1e9aed0 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/exposureF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/exposureF.glsl
@@ -48,8 +48,11 @@ void main()
vec2 tc = vec2(0.5,0.5);
float L = textureLod(emissiveRect, tc, 8).r;
-
- float s = clamp(dynamic_exposure_params.x/L, dynamic_exposure_params.y, dynamic_exposure_params.z);
+ float max_L = dynamic_exposure_params.x;
+ L = clamp(L, 0.0, max_L);
+ L /= max_L;
+ L = pow(L, 2.0);
+ float s = mix(dynamic_exposure_params.z, dynamic_exposure_params.y, L);
float prev = texture(exposureMap, vec2(0.5,0.5)).r;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
index b5eae3a1d5..11532135dd 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
@@ -42,6 +42,7 @@ vec4 applyWaterFogView(vec3 pos, vec4 color);
#endif
vec3 srgb_to_linear(vec3 cs);
+vec3 legacy_adjust(vec3 c);
vec3 linear_to_srgb(vec3 cl);
vec3 fullbrightAtmosTransport(vec3 light);
@@ -87,6 +88,7 @@ void main()
#endif
#ifndef IS_HUD
+ color.rgb = legacy_adjust(color.rgb);
color.rgb = srgb_to_linear(color.rgb);
color.rgb = fullbrightAtmosTransport(color.rgb);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
index e63e666778..e0eb91480e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
@@ -44,9 +44,9 @@ float lum(vec3 col)
void main()
{
vec2 tc = vary_fragcoord*0.6+0.2;
+ tc.y -= 0.1;
vec3 c = texture(diffuseRect, tc).rgb + texture(emissiveRect, tc).rgb;
float L = lum(c);
-
frag_color = vec4(L);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl
index ae6bdbba95..de766d6bc7 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl
@@ -105,29 +105,21 @@ vec3 toneMapACES_Hill(vec3 color)
uniform float exposure;
uniform float gamma;
+vec3 legacy_adjust_post(vec3 c);
+
vec3 toneMap(vec3 color, float gs)
{
float exp_scale = texture(exposureMap, vec2(0.5,0.5)).r;
color *= exposure * exp_scale * gs;
-#ifdef TONEMAP_ACES_NARKOWICZ
- color = toneMapACES_Narkowicz(color);
-#endif
-
-#ifdef TONEMAP_ACES_HILL
color = toneMapACES_Hill(color);
-#endif
-#ifdef TONEMAP_ACES_HILL_EXPOSURE_BOOST
- // boost exposure as discussed in https://github.com/mrdoob/three.js/pull/19621
- // this factor is based on the exposure correction of Krzysztof Narkowicz in his
- // implemetation of ACES tone mapping
- color *= 1.0/0.6;
- color = toneMapACES_Hill(color);
-#endif
+ color = linear_to_srgb(color);
- return linear_to_srgb(color);
+ color = legacy_adjust_post(color);
+
+ return color;
}
//===============================================================
@@ -181,7 +173,7 @@ vec3 legacyGamma(vec3 color)
float legacyGammaApprox()
{
- //TODO -- figure out how to plumb this in as a uniform
+ //TODO -- figure out how to plumb this in as a uniform
float c = 0.5;
float gc = 1.0-pow(c, gamma);
diff --git a/indra/newview/app_settings/shaders/class1/environment/srgbF.glsl b/indra/newview/app_settings/shaders/class1/environment/srgbF.glsl
index 4a8b892c3a..a3b48e0898 100644
--- a/indra/newview/app_settings/shaders/class1/environment/srgbF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/srgbF.glsl
@@ -72,7 +72,7 @@ vec3 rgb2hsv(vec3 c)
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
float d = q.x - min(q.w, q.y);
- float e = 1.0e-10;
+ float e = 1.0e-3;
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
}
@@ -82,3 +82,30 @@ vec3 hsv2rgb(vec3 c)
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
}
+
+vec3 legacy_adjust_no_brighten(vec3 c)
+{
+ vec3 desat = rgb2hsv(c.rgb);
+ desat.g *= 0.75;
+ desat.rgb = hsv2rgb(desat);
+ return desat;
+}
+
+vec3 legacy_adjust(vec3 c)
+{
+#if 1
+ vec3 desat = rgb2hsv(c.rgb);
+ desat.g *= 1.0-(1.0-desat.b)*0.5;
+ //desat.g = max(desat.g-0.1*c.b-0.1, 0.0);
+ desat.b += (1.0-desat.b)*0.1f;
+ desat.rgb = hsv2rgb(desat);
+ return desat;
+#else
+ return c;
+#endif
+}
+
+vec3 legacy_adjust_post(vec3 c)
+{
+ return c;
+}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
index 53552870ae..f4d6eff69e 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
@@ -77,6 +77,7 @@ vec4 applyWaterFogViewLinear(vec3 pos, vec4 color, vec3 sunlit);
vec3 srgb_to_linear(vec3 c);
vec3 linear_to_srgb(vec3 c);
+vec3 legacy_adjust(vec3 c);
vec2 encode_normal (vec3 n);
vec3 atmosFragLightingLinear(vec3 light, vec3 additive, vec3 atten);
@@ -239,6 +240,7 @@ void main()
}
diffuse_srgb.rgb *= vertex_color.rgb;
+ diffuse_srgb.rgb = legacy_adjust(diffuse_srgb.rgb);
diffuse_linear.rgb = srgb_to_linear(diffuse_srgb.rgb);
#endif // USE_VERTEX_COLOR
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl
index 49ff49fdd8..e314555ef9 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl
@@ -36,9 +36,9 @@ vec3 atmosFragLighting(vec3 light, vec3 additive, vec3 atten)
{
light *= atten.r;
additive = srgb_to_linear(additive*2.0);
- // magic 3.0 here is to match the default RenderSkyHDRScale -- this parameter needs to be plumbed into sky settings or something
+ // magic 1.25 here is to match the default RenderSkyHDRScale -- this parameter needs to be plumbed into sky settings or something
// so it's available to all shaders that call atmosFragLighting instead of just softenLightF.glsl
- additive *= sun_up_factor*3.0 + 1.0;
+ additive *= sun_up_factor*1.25 + 1.0;
light += additive;
return light;
}
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsFuncs.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsFuncs.glsl
index 14ce33f81f..22db9dce03 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsFuncs.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsFuncs.glsl
@@ -139,10 +139,8 @@ void calcAtmosphericVars(vec3 inPositionEye, vec3 light_dir, float ambFactor, ou
// brightness of surface both sunlight and ambient
- // fudge sunlit and amblit to get consistent lighting compared to legacy
- // midday before PBR was a thing
- sunlit = sunlight.rgb * (1.0+sun_up_factor*0.2);
- amblit = tmpAmbient.rgb * 0.25;
+ sunlit = sunlight.rgb;
+ amblit = vec3(1,0,1); //should no longer be used, filled in by calcAtmosphericVarsLinear
additive *= vec3(1.0 - combined_haze);
}
@@ -172,7 +170,7 @@ void calcAtmosphericVarsLinear(vec3 inPositionEye, vec3 norm, vec3 light_dir, ou
sunlit *= 2.0;
// squash ambient to approximate whatever weirdness legacy atmospherics were doing
- amblit = ambient_color * 0.5 * (1.0+sun_up_factor*0.3);
+ amblit = ambient_color; // * (1.0+sun_up_factor*0.3);
amblit *= ambientLighting(norm, light_dir);
amblit = srgb_to_linear(amblit);
diff --git a/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl
index 23ba95949a..5a2924afe5 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl
@@ -58,6 +58,7 @@ vec4 getNormalEnvIntensityFlags(vec2 screenpos, out vec3 n, out float envIntensi
vec2 getScreenXY(vec4 clip);
vec2 getScreenCoord(vec4 clip);
vec3 srgb_to_linear(vec3 c);
+vec3 legacy_adjust(vec3 c);
// Util
vec3 hue_to_rgb(float hue);
@@ -131,6 +132,7 @@ void main()
}
else
{
+ diffuse.rgb = legacy_adjust(diffuse.rgb);
diffuse = srgb_to_linear(diffuse);
spec.rgb = srgb_to_linear(spec.rgb);
diff --git a/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl
index 30b7895157..33e5b2346c 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl
@@ -83,6 +83,7 @@ vec3 getProjectedLightSpecularColor(vec3 pos, vec3 n);
vec2 getScreenXY(vec4 clip);
vec2 getScreenCoord(vec4 clip);
vec3 srgb_to_linear(vec3 cs);
+vec3 legacy_adjust(vec3 c);
vec4 texture2DLodSpecular(vec2 tc, float lod);
vec4 getPosition(vec2 pos_screen);
@@ -182,7 +183,7 @@ void main()
}
else
{
-
+ diffuse = legacy_adjust(diffuse);
diffuse = srgb_to_linear(diffuse);
spec.rgb = srgb_to_linear(spec.rgb);
diff --git a/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl
index 30b96ce8dc..471e5e7fd3 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl
@@ -63,6 +63,7 @@ vec4 getPosition(vec2 pos_screen);
vec2 getScreenXY(vec4 clip);
vec2 getScreenCoord(vec4 clip);
vec3 srgb_to_linear(vec3 c);
+vec3 legacy_adjust(vec3 c);
float getDepth(vec2 tc);
vec3 pbrPunctual(vec3 diffuseColor, vec3 specularColor,
@@ -121,7 +122,7 @@ void main()
{
discard;
}
-
+ diffuse = legacy_adjust(diffuse);
diffuse = srgb_to_linear(diffuse);
spec.rgb = srgb_to_linear(spec.rgb);
diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
index e1206cc844..8f5bd6141a 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
@@ -83,9 +83,12 @@ float getDepth(vec2 pos_screen);
vec3 linear_to_srgb(vec3 c);
vec3 srgb_to_linear(vec3 c);
+vec3 legacy_adjust(vec3 c);
uniform vec4 waterPlane;
+uniform int cube_snapshot;
+
#ifdef WATER_FOG
vec4 applyWaterFogViewLinear(vec3 pos, vec4 color);
#endif
@@ -207,12 +210,18 @@ void main()
else if (!GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_ATMOS))
{
//should only be true of WL sky, just port over base color value
- color = srgb_to_linear(texture2D(emissiveRect, tc).rgb);
- color *= sun_up_factor * sky_hdr_scale + 1.0;
+ color = texture2D(emissiveRect, tc).rgb;
+ color = srgb_to_linear(color);
+ if (sun_up_factor > 0)
+ {
+ color *= sky_hdr_scale + 1.0;
+ }
}
else
{
// legacy shaders are still writng sRGB to gbuffer
+ baseColor.rgb = legacy_adjust(baseColor.rgb);
+
baseColor.rgb = srgb_to_linear(baseColor.rgb);
spec.rgb = srgb_to_linear(spec.rgb);
diff --git a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl
index 33ea2129cf..3d06bb27a5 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl
@@ -91,6 +91,7 @@ vec3 getProjectedLightSpecularColor(vec3 pos, vec3 n);
vec2 getScreenXY(vec4 clip_point);
vec2 getScreenCoord(vec4 clip_point);
vec3 srgb_to_linear(vec3 c);
+vec3 legacy_adjust(vec3 c);
vec4 texture2DLodSpecular(vec2 tc, float lod);
vec4 getPosition(vec2 pos_screen);
@@ -189,6 +190,7 @@ void main()
}
else
{
+ diffuse = legacy_adjust(diffuse);
diffuse = srgb_to_linear(diffuse);
spec.rgb = srgb_to_linear(spec.rgb);
diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp
index 6557c2b351..9fe8b00071 100644
--- a/indra/newview/llenvironment.cpp
+++ b/indra/newview/llenvironment.cpp
@@ -812,7 +812,8 @@ const F64Seconds LLEnvironment::TRANSITION_SLOW(10.0f);
const F64Seconds LLEnvironment::TRANSITION_ALTITUDE(5.0f);
const LLUUID LLEnvironment::KNOWN_SKY_SUNRISE("01e41537-ff51-2f1f-8ef7-17e4df760bfb");
-const LLUUID LLEnvironment::KNOWN_SKY_MIDDAY("7819e136-b6af-2e32-9c85-0b94121bb359");
+const LLUUID LLEnvironment::KNOWN_SKY_MIDDAY("d0401f82-56b9-f3ef-c6aa-13b589f7fdad");
+const LLUUID LLEnvironment::KNOWN_SKY_LEGACY_MIDDAY("6c83e853-e7f8-cad7-8ee6-5f31c453721c");
const LLUUID LLEnvironment::KNOWN_SKY_SUNSET("084e26cd-a900-28e8-08d0-64a9de5c15e2");
const LLUUID LLEnvironment::KNOWN_SKY_MIDNIGHT("8a01b97a-cb20-c1ea-ac63-f7ea84ad0090");
diff --git a/indra/newview/llenvironment.h b/indra/newview/llenvironment.h
index 64fd170e43..4383f54f25 100644
--- a/indra/newview/llenvironment.h
+++ b/indra/newview/llenvironment.h
@@ -61,6 +61,7 @@ public:
static const LLUUID KNOWN_SKY_SUNRISE;
static const LLUUID KNOWN_SKY_MIDDAY;
+ static const LLUUID KNOWN_SKY_LEGACY_MIDDAY;
static const LLUUID KNOWN_SKY_SUNSET;
static const LLUUID KNOWN_SKY_MIDNIGHT;
diff --git a/indra/newview/llsculptidsize.cpp b/indra/newview/llsculptidsize.cpp
index 9edd78bff0..3d5102902d 100644
--- a/indra/newview/llsculptidsize.cpp
+++ b/indra/newview/llsculptidsize.cpp
@@ -65,7 +65,7 @@ void LLSculptIDSize::inc(const LLDrawable *pdrawable, int sz)
pair_iter_iter_BY_SCULPT_ID_t itLU = mSizeInfo.get<tag_BY_SCULPT_ID>().equal_range(sculptId);
if (itLU.first == itLU.second)
{ //register
- llassert(mSizeInfo.get<tag_BY_DRAWABLE>().end() == mSizeInfo.get<tag_BY_DRAWABLE>().find(pdrawable));
+ //llassert(mSizeInfo.get<tag_BY_DRAWABLE>().end() == mSizeInfo.get<tag_BY_DRAWABLE>().find(pdrawable));
mSizeInfo.get<tag_BY_DRAWABLE>().insert(Info(pdrawable, sz, boost::make_shared<SizeSum>(sz), sculptId));
total_size = sz;
}
diff --git a/indra/newview/lltoolcomp.cpp b/indra/newview/lltoolcomp.cpp
index 6d54a3770c..b8357b3454 100644
--- a/indra/newview/lltoolcomp.cpp
+++ b/indra/newview/lltoolcomp.cpp
@@ -268,7 +268,7 @@ BOOL LLToolCompTranslate::handleHover(S32 x, S32 y, MASK mask)
BOOL LLToolCompTranslate::handleMouseDown(S32 x, S32 y, MASK mask)
{
mMouseDown = TRUE;
- gViewerWindow->pickAsync(x, y, mask, pickCallback, /*BOOL pick_transparent*/ TRUE, LLFloaterReg::instanceVisible("build"));
+ gViewerWindow->pickAsync(x, y, mask, pickCallback, /*BOOL pick_transparent*/ FALSE, LLFloaterReg::instanceVisible("build"));
return TRUE;
}
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 59b566efb6..8973d1c099 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -656,7 +656,6 @@ void settings_setup_listeners()
setting_setup_signal_listener(gSavedSettings, "RenderReflectionsEnabled", handleReflectionProbeDetailChanged);
setting_setup_signal_listener(gSavedSettings, "RenderScreenSpaceReflections", handleReflectionProbeDetailChanged);
setting_setup_signal_listener(gSavedSettings, "RenderShadowDetail", handleSetShaderChanged);
- setting_setup_signal_listener(gSavedSettings, "RenderTonemapper", handleSetShaderChanged);
setting_setup_signal_listener(gSavedSettings, "RenderDeferredSSAO", handleSetShaderChanged);
setting_setup_signal_listener(gSavedSettings, "RenderPerformanceTest", handleRenderPerfTestChanged);
setting_setup_signal_listener(gSavedSettings, "ChatFontSize", handleChatFontSizeChanged);
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index c8e279c991..d0dd02426e 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -79,6 +79,8 @@
#include <boost/bind.hpp> // for SkinFolder listener
#include <boost/signals2.hpp>
+extern BOOL gCubeSnapshot;
+
// *TODO: Consider enabling mipmaps (they have been disabled for a long time). Likely has a significant performance impact for tiled/high texture repeat media. Mip generation in a shader may also be an option if necessary.
constexpr BOOL USE_MIPMAPS = FALSE;
@@ -264,6 +266,7 @@ viewer_media_t LLViewerMedia::newMediaImpl(
viewer_media_t LLViewerMedia::updateMediaImpl(LLMediaEntry* media_entry, const std::string& previous_url, bool update_from_self)
{
+ llassert(!gCubeSnapshot);
// Try to find media with the same media ID
viewer_media_t media_impl = getMediaImplFromTextureID(media_entry->getMediaID());
@@ -626,6 +629,8 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
{
LL_PROFILE_ZONE_SCOPED_CATEGORY_MEDIA; //LL_RECORD_BLOCK_TIME(FTM_MEDIA_UPDATE);
+ llassert(!gCubeSnapshot);
+
// Enable/disable the plugin read thread
LLPluginProcessParent::setUseReadThread(gSavedSettings.getBOOL("PluginUseReadThread"));
@@ -3003,6 +3008,7 @@ void LLViewerMediaImpl::updateImagesMediaStreams()
LLViewerMediaTexture* LLViewerMediaImpl::updateMediaImage()
{
LL_PROFILE_ZONE_SCOPED_CATEGORY_MEDIA;
+ llassert(!gCubeSnapshot);
if (!mMediaSource)
{
return nullptr; // not ready for updating
@@ -3558,6 +3564,8 @@ void LLViewerMediaImpl::calculateInterest()
LL_PROFILE_ZONE_SCOPED_CATEGORY_MEDIA; //LL_RECORD_BLOCK_TIME(FTM_MEDIA_CALCULATE_INTEREST);
LLViewerMediaTexture* texture = LLViewerTextureManager::findMediaTexture( mTextureId );
+ llassert(!gCubeSnapshot);
+
if(texture != NULL)
{
mInterest = texture->getMaxVirtualSize();
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 89538b3bd5..e8b9a22c60 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -8898,6 +8898,12 @@ class LLWorldEnvSettings : public view_listener_t
LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::TRANSITION_INSTANT);
defocusEnvFloaters();
}
+ else if (event_name == "legacy noon")
+ {
+ LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::KNOWN_SKY_LEGACY_MIDDAY, LLEnvironment::TRANSITION_INSTANT);
+ LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::TRANSITION_INSTANT);
+ defocusEnvFloaters();
+ }
else if (event_name == "sunset")
{
LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::KNOWN_SKY_SUNSET, LLEnvironment::TRANSITION_INSTANT);
@@ -8966,6 +8972,10 @@ class LLWorldEnableEnvSettings : public view_listener_t
{
result = (skyid == LLEnvironment::KNOWN_SKY_MIDDAY);
}
+ else if (event_name == "legacy noon")
+ {
+ result = (skyid == LLEnvironment::KNOWN_SKY_LEGACY_MIDDAY);
+ }
else if (event_name == "sunset")
{
result = (skyid == LLEnvironment::KNOWN_SKY_SUNSET);
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 4c34c6f6e5..1fd536ceac 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -2555,20 +2555,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredPostGammaCorrectProgram.mFeatures.isDeferred = true;
gDeferredPostGammaCorrectProgram.mShaderFiles.clear();
gDeferredPostGammaCorrectProgram.clearPermutations();
- U32 tonemapper = gSavedSettings.getU32("RenderTonemapper");
- if (tonemapper == 1)
- {
- gDeferredPostGammaCorrectProgram.addPermutation("TONEMAP_ACES_NARKOWICZ", "1");
- }
- else if (tonemapper == 2)
- {
- gDeferredPostGammaCorrectProgram.addPermutation("TONEMAP_ACES_HILL_EXPOSURE_BOOST", "1");
- }
- else
- {
- gDeferredPostGammaCorrectProgram.addPermutation("TONEMAP_LINEAR", "1");
- }
- gDeferredPostGammaCorrectProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoTCV.glsl", GL_VERTEX_SHADER));
+ gDeferredPostGammaCorrectProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoTCV.glsl", GL_VERTEX_SHADER));
gDeferredPostGammaCorrectProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredGammaCorrect.glsl", GL_FRAGMENT_SHADER));
gDeferredPostGammaCorrectProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];
success = gDeferredPostGammaCorrectProgram.createShader(NULL, NULL);
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index e4ffa5b6b0..4266c16f94 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -7336,13 +7336,13 @@ void LLPipeline::renderFinalize()
mLastExposure.bindTexture(0, channel);
}
+ static LLStaticHashedString dt("dt");
+ static LLStaticHashedString noiseVec("noiseVec");
+ static LLStaticHashedString dynamic_exposure_params("dynamic_exposure_params");
static LLCachedControl<F32> dynamic_exposure_coefficient(gSavedSettings, "RenderDynamicExposureCoefficient", 0.175f);
static LLCachedControl<F32> dynamic_exposure_min(gSavedSettings, "RenderDynamicExposureMin", 0.125f);
static LLCachedControl<F32> dynamic_exposure_max(gSavedSettings, "RenderDynamicExposureMax", 1.3f);
- static LLStaticHashedString dt("dt");
- static LLStaticHashedString noiseVec("noiseVec");
- static LLStaticHashedString dynamic_exposure_params("dynamic_exposure_params");
gExposureProgram.uniform1f(dt, gFrameIntervalSeconds);
gExposureProgram.uniform2f(noiseVec, ll_frand() * 2.0 - 1.0, ll_frand() * 2.0 - 1.0);
gExposureProgram.uniform3f(dynamic_exposure_params, dynamic_exposure_coefficient, dynamic_exposure_min, dynamic_exposure_max);
@@ -7370,7 +7370,7 @@ void LLPipeline::renderFinalize()
gDeferredPostGammaCorrectProgram.bindTexture(LLShaderMgr::DEFERRED_DIFFUSE, screenTarget(), false, LLTexUnit::TFO_POINT);
- gDeferredPostGammaCorrectProgram.bindTexture(LLShaderMgr::EXPOSURE_MAP, &mExposureMap);
+ gDeferredPostGammaCorrectProgram.bindTexture(LLShaderMgr::EXPOSURE_MAP, &mExposureMap);
gDeferredPostGammaCorrectProgram.uniform2f(LLShaderMgr::DEFERRED_SCREEN_RES, screenTarget()->getWidth(), screenTarget()->getHeight());
@@ -9466,6 +9466,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
set_current_projection(saved_proj);
LLVector3 eye = camera.getOrigin();
+ llassert(eye.isFinite());
//camera used for shadow cull/render
LLCamera shadow_cam;
@@ -9745,6 +9746,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
{
//get perspective projection
view[j] = view[j].inverse();
+ //llassert(origin.isFinite());
glh::vec3f origin_agent(origin.mV);
@@ -9752,7 +9754,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
view[j].mult_matrix_vec(origin_agent);
eye = LLVector3(origin_agent.v);
-
+ //llassert(eye.isFinite());
if (!hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA) && !gCubeSnapshot)
{
mShadowFrustOrigin[j] = eye;
diff --git a/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
index 17875e9c19..16b965843d 100644
--- a/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
+++ b/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
@@ -712,42 +712,6 @@
value="2"/>
</combo_box>
-
- <text
- type="string"
- length="1"
- follows="left|top"
- height="16"
- layout="topleft"
- left="420"
- name="RenderTonemapperText"
- text_readonly_color="LabelDisabledColor"
- top_delta="24"
- width="128">
- Tonemapper:
- </text>
- <combo_box
- control_name="RenderTonemapper"
- height="18"
- layout="topleft"
- left_delta="130"
- top_delta="0"
- name="ToneMapper"
- width="150">
- <combo_box.item
- label="Linear"
- name="0"
- value="0"/>
- <combo_box.item
- label="ACES Narkowicz"
- name="1"
- value="1"/>
- <combo_box.item
- label="ACES Hill"
- name="2"
- value="2"/>
- </combo_box>
-
<slider
control_name="RenderExposure"
decimal_digits="1"
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index d77415877c..4a92bdc601 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -902,17 +902,27 @@
function="World.EnableEnvSettings"
parameter="sunrise" />
</menu_item_check>
- <menu_item_check
- label="Midday"
- name="Noon"
- shortcut="control|shift|Y">
- <menu_item_check.on_click
- function="World.EnvSettings"
- parameter="noon" />
- <menu_item_check.on_check
- function="World.EnableEnvSettings"
- parameter="noon" />
- </menu_item_check>
+ <menu_item_check
+ label="Midday"
+ name="Noon"
+ shortcut="control|shift|Y">
+ <menu_item_check.on_click
+ function="World.EnvSettings"
+ parameter="noon" />
+ <menu_item_check.on_check
+ function="World.EnableEnvSettings"
+ parameter="noon" />
+ </menu_item_check>
+ <menu_item_check
+ label="Midday (Legacy)"
+ name="legacy noon">
+ <menu_item_check.on_click
+ function="World.EnvSettings"
+ parameter="legacy noon" />
+ <menu_item_check.on_check
+ function="World.EnableEnvSettings"
+ parameter="legacy noon" />
+ </menu_item_check>
<menu_item_check
label="Sunset"
name="Sunset"