diff options
Diffstat (limited to 'indra/newview/app_settings/shaders')
4 files changed, 34 insertions, 64 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 e1bac4f248..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,18 +32,13 @@ ATTRIBUTE vec2 texcoord0;  VARYING vec2 vary_texcoord0; -void calcAtmospherics(vec3 eye_pos); -  void main()  {      //transform vertex -    vec3 offset = vec3(0, 0, 50); -    vec4 vert = vec4(position.xyz - offset, 1.0); +    vec4 vert = vec4(position.xyz, 1.0);      vec4 pos = (modelview_matrix * vert);      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 8cd4b2ef47..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,20 +30,15 @@ uniform mat4 modelview_projection_matrix;  ATTRIBUTE vec3 position;  ATTRIBUTE vec2 texcoord0; -void calcAtmospherics(vec3 inPositionEye); -  VARYING vec2 vary_texcoord0;  void main()  {      //transform vertex -    vec3 offset = vec3(0, 0, 50); -    vec4 vert = vec4(position.xyz - offset, 1.0); +    vec4 vert = vec4(position.xyz, 1.0);      vec4 pos = (modelview_matrix * vert);      gl_Position = modelview_projection_matrix*vert;      vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -     -    calcAtmospherics(pos.xyz);  } | 
