summaryrefslogtreecommitdiff
path: root/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/app_settings/shaders/class1/deferred/moonF.glsl')
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/moonF.glsl43
1 files changed, 15 insertions, 28 deletions
diff --git a/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl b/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl
index 4366945214..35068899ee 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl
@@ -1,9 +1,9 @@
/**
- * @file moonF.glsl
+ * @file class1\deferred\moonF.glsl
*
* $LicenseInfo:firstyear=2005&license=viewerlgpl$
* Second Life Viewer Source Code
- * Copyright (C) 2005, Linden Research, Inc.
+ * Copyright (C) 2005, 2020 Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -36,46 +36,33 @@ out vec4 frag_data[3];
uniform vec4 color;
uniform vec4 sunlight_color;
uniform vec4 moonlight_color;
-uniform vec3 lumWeights;
+uniform vec3 moon_dir;
uniform float moon_brightness;
-uniform float minLuminance;
uniform sampler2D diffuseMap;
-uniform sampler2D altDiffuseMap;
-uniform float blend_factor; // interp factor between moon A/B
+
VARYING vec2 vary_texcoord0;
vec3 srgb_to_linear(vec3 c);
-vec3 getAdditiveColor();
-
/// Soft clips the light with a gamma correction
vec3 scaleSoftClip(vec3 light);
void main()
{
- vec4 moonA = texture2D(diffuseMap, vary_texcoord0.xy);
- vec4 moonB = texture2D(altDiffuseMap, vary_texcoord0.xy);
- vec4 c = mix(moonA, moonB, blend_factor);
-
- c.rgb = srgb_to_linear(c.rgb);
-
- // mix factor which blends when sunlight is brighter
- // and shows true moon color at night
- vec3 luma_weights = vec3(0.3, 0.5, 0.3);
-
- vec4 light_color = max(sunlight_color, moonlight_color);
- float blend = 1.0 - dot(normalize(light_color.rgb), luma_weights);
-
- vec3 exp = vec3(1.0 - blend * moon_brightness) * 2.0 - 1.0;
- c.rgb = pow(c.rgb, exp);
+ // Restore Pre-EEP alpha fade moon near horizon
+ float fade = 1.0;
+ if( moon_dir.z > 0 )
+ fade = clamp( moon_dir.z*moon_dir.z*4.0, 0.0, 1.0 );
- //c.rgb *= moonlight_color.rgb;
+ vec4 c = texture2D(diffuseMap, vary_texcoord0.xy);
+// c.rgb = srgb_to_linear(c.rgb);
+ c.rgb *= moonlight_color.rgb;
+ c.rgb *= moon_brightness;
- // Partial atmospherics calculation
- vec3 ac = getAdditiveColor();
- c.rgb += ac;
+ c.rgb *= fade;
+ c.a *= fade;
- c.rgb = scaleSoftClip(c.rgb);
+ c.rgb = scaleSoftClip(c.rgb);
frag_data[0] = vec4(c.rgb, c.a);
frag_data[1] = vec4(0.0);