diff options
Diffstat (limited to 'indra/newview')
5 files changed, 37 insertions, 66 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); diff --git a/indra/newview/app_settings/shaders/class1/deferred/moonV.glsl b/indra/newview/app_settings/shaders/class1/deferred/moonV.glsl index 1fed9d39e2..c4922afd7d 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/moonV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/moonV.glsl @@ -1,9 +1,9 @@  /**  - * @file moonV.glsl + * @file class1\deferred\moonV.glsl   *    * $LicenseInfo:firstyear=2007&license=viewerlgpl$   * Second Life Viewer Source Code - * Copyright (C) 2007, Linden Research, Inc. + * Copyright (C) 2007, 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 @@ -32,8 +32,6 @@ ATTRIBUTE vec2 texcoord0;  VARYING vec2 vary_texcoord0; -void calcAtmospherics(vec3 eye_pos); -  void main()  {      //transform vertex @@ -42,7 +40,5 @@ void main()      gl_Position = modelview_projection_matrix*vert; -    calcAtmospherics(pos.xyz); -          vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;  } diff --git a/indra/newview/app_settings/shaders/class1/windlight/moonF.glsl b/indra/newview/app_settings/shaders/class1/windlight/moonF.glsl index 72d2c4cdfa..2425a2ad04 100644 --- a/indra/newview/app_settings/shaders/class1/windlight/moonF.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/moonF.glsl @@ -3,7 +3,7 @@   *   * $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,37 +36,30 @@ out vec4 frag_color;  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 getAdditiveColor();  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); - -    // 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); -    float blend = 1.0f - dot(normalize(sunlight_color.rgb), luma_weights); +    // 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 ); -    vec3 exp = vec3(1.0 - blend * moon_brightness) * 2.0 - 1.0; -    c.rgb = pow(c.rgb, exp); -    //c.rgb *= moonlight_color.rgb; +    vec4 c     = texture2D(diffuseMap, vary_texcoord0.xy); +//       c.rgb = pow(c.rgb, vec3(0.7f)); // can't use "srgb_to_linear(color.rgb)" as that is a deferred only function +         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_color = vec4(c.rgb, c.a);  } diff --git a/indra/newview/app_settings/shaders/class1/windlight/moonV.glsl b/indra/newview/app_settings/shaders/class1/windlight/moonV.glsl index c4cdd06e28..2fceb5f743 100644 --- a/indra/newview/app_settings/shaders/class1/windlight/moonV.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/moonV.glsl @@ -3,7 +3,7 @@   *    * $LicenseInfo:firstyear=2007&license=viewerlgpl$   * Second Life Viewer Source Code - * Copyright (C) 2007, Linden Research, Inc. + * Copyright (C) 2007, 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 @@ -30,8 +30,6 @@ uniform mat4 modelview_projection_matrix;  ATTRIBUTE vec3 position;  ATTRIBUTE vec2 texcoord0; -void calcAtmospherics(vec3 inPositionEye); -  VARYING vec2 vary_texcoord0;  void main() @@ -43,6 +41,4 @@ void main()      gl_Position = modelview_projection_matrix*vert;      vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -     -    calcAtmospherics(pos.xyz);  } diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp index b0eb1a405b..d4e7f1600e 100644 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp @@ -532,8 +532,6 @@ void LLDrawPoolWLSky::renderHeavenlyBodies()          }  	} -    blend_factor = LLEnvironment::instance().getCurrentSky()->getBlendFactor(); -  	face = gSky.mVOSkyp->mFace[LLVOSky::FACE_MOON];  	if (gSky.mVOSkyp->getMoon().getDraw() && face && face->getTexture(LLRender::DIFFUSE_MAP) && face->getGeomCount() && moon_shader) @@ -551,17 +549,17 @@ void LLDrawPoolWLSky::renderHeavenlyBodies()              {                  // Bind current and next sun textures                  moon_shader->bindTexture(LLShaderMgr::DIFFUSE_MAP, tex_a, LLTexUnit::TT_TEXTURE); -                blend_factor = 0; +                //blend_factor = 0;              }              else if (tex_b && !tex_a)              {                  moon_shader->bindTexture(LLShaderMgr::DIFFUSE_MAP, tex_b, LLTexUnit::TT_TEXTURE); -                blend_factor = 0; +                //blend_factor = 0;              }              else if (tex_b != tex_a)              {                  moon_shader->bindTexture(LLShaderMgr::DIFFUSE_MAP, tex_a, LLTexUnit::TT_TEXTURE); -                moon_shader->bindTexture(LLShaderMgr::ALTERNATE_DIFFUSE_MAP, tex_b, LLTexUnit::TT_TEXTURE); +                //moon_shader->bindTexture(LLShaderMgr::ALTERNATE_DIFFUSE_MAP, tex_b, LLTexUnit::TT_TEXTURE);              }              LLSettingsSky::ptr_t psky = LLEnvironment::instance().getCurrentSky(); @@ -571,7 +569,8 @@ void LLDrawPoolWLSky::renderHeavenlyBodies()              moon_shader->uniform1f(LLShaderMgr::MOON_BRIGHTNESS, moon_brightness);              moon_shader->uniform4fv(LLShaderMgr::MOONLIGHT_COLOR, 1, gSky.mVOSkyp->getMoon().getColor().mV);              moon_shader->uniform4fv(LLShaderMgr::DIFFUSE_COLOR, 1, color.mV); -            moon_shader->uniform1f(LLShaderMgr::BLEND_FACTOR, blend_factor); +            //moon_shader->uniform1f(LLShaderMgr::BLEND_FACTOR, blend_factor); +            moon_shader->uniform3fv(LLShaderMgr::DEFERRED_MOON_DIR, 1, psky->getMoonDirection().mV); // shader: moon_dir              face->renderIndexed(); | 
