summaryrefslogtreecommitdiff
path: root/indra/newview/app_settings/shaders/class2/deferred
diff options
context:
space:
mode:
authorJonathan "Geenz" Goodman <geenz@lindenlab.com>2024-11-26 19:01:24 -0500
committerGitHub <noreply@github.com>2024-11-26 19:01:24 -0500
commita90377df950f83347e988754d15400b47a739cce (patch)
treef1f1874ea3fc74413b7c234c726be40d0fcfe83f /indra/newview/app_settings/shaders/class2/deferred
parent38845a1e05a5932b9fb23ab249b7d272bd80643f (diff)
#3157 Fix alpha not having ambient lighting on low. (#3162)
* #3157 Fix alpha not having ambient lighting on low.
Diffstat (limited to 'indra/newview/app_settings/shaders/class2/deferred')
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl20
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl4
2 files changed, 17 insertions, 7 deletions
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
index 210ecce8db..89fe4b6007 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
@@ -36,6 +36,7 @@ out vec4 frag_color;
uniform mat3 env_mat;
uniform vec3 sun_dir;
uniform vec3 moon_dir;
+uniform int classic_mode;
#ifdef USE_DIFFUSE_TEX
uniform sampler2D diffuseMap;
@@ -241,10 +242,10 @@ void main()
calcAtmosphericVarsLinear(pos.xyz, norm, light_dir, sunlit, amblit, additive, atten);
- vec3 sunlit_linear = srgb_to_linear(sunlit);
+ vec3 sunlit_linear = sunlit;
vec3 amblit_linear = amblit;
- vec3 irradiance;
+ vec3 irradiance = amblit;
vec3 glossenv;
vec3 legacyenv;
sampleReflectionProbesLegacy(irradiance, glossenv, legacyenv, frag, pos.xyz, norm.xyz, 0.0, 0.0, true, amblit_linear);
@@ -260,11 +261,20 @@ void main()
color.a = final_alpha;
- vec3 sun_contrib = min(final_da, shadow) * sunlit_linear;
-
color.rgb = irradiance;
+ if (classic_mode > 0)
+ {
+ final_da = pow(final_da,1.2);
+ vec3 sun_contrib = vec3(min(final_da, shadow));
- color.rgb += sun_contrib;
+ color.rgb = srgb_to_linear(color.rgb * 0.9 + linear_to_srgb(sun_contrib) * sunlit_linear * 0.7);
+ sunlit_linear = srgb_to_linear(sunlit_linear);
+ }
+ else
+ {
+ vec3 sun_contrib = min(final_da, shadow) * sunlit_linear;
+ color.rgb += sun_contrib;
+ }
color.rgb *= diffuse_linear.rgb;
diff --git a/indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl
index 95110005dc..cec844559f 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl
@@ -161,7 +161,7 @@ void main()
vec3 atten;
calcAtmosphericVarsLinear(pos.xyz, norm, light_dir, sunlit, amblit, additive, atten);
- vec3 sunlit_linear = srgb_to_linear(sunlit);
+ vec3 sunlit_linear = sunlit;
vec2 frag = vary_fragcoord.xy/vary_fragcoord.z*0.5+0.5;
@@ -182,7 +182,7 @@ void main()
// PBR IBL
float gloss = 1.0 - perceptualRoughness;
- vec3 irradiance = vec3(0);
+ vec3 irradiance = amblit;
vec3 radiance = vec3(0);
sampleReflectionProbes(irradiance, radiance, vary_position.xy*0.5+0.5, pos.xyz, norm.xyz, gloss, true, amblit);