SL-13465 Restore Pre-EEP haze effecting moon
parent
f677b4187b
commit
874d7e7e02
|
|
@ -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);
|
||||
// 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 = srgb_to_linear(c.rgb);
|
||||
vec4 c = texture2D(diffuseMap, vary_texcoord0.xy);
|
||||
// c.rgb = srgb_to_linear(c.rgb);
|
||||
c.rgb *= moonlight_color.rgb;
|
||||
c.rgb *= moon_brightness;
|
||||
|
||||
// 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);
|
||||
c.rgb *= fade;
|
||||
c.a *= fade;
|
||||
|
||||
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);
|
||||
|
||||
//c.rgb *= moonlight_color.rgb;
|
||||
|
||||
// Partial atmospherics calculation
|
||||
vec3 ac = getAdditiveColor();
|
||||
c.rgb += ac;
|
||||
|
||||
c.rgb = scaleSoftClip(c.rgb);
|
||||
c.rgb = scaleSoftClip(c.rgb);
|
||||
|
||||
frag_data[0] = vec4(c.rgb, c.a);
|
||||
frag_data[1] = vec4(0.0);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
// 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 );
|
||||
|
||||
// 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);
|
||||
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;
|
||||
|
||||
vec3 exp = vec3(1.0 - blend * moon_brightness) * 2.0 - 1.0;
|
||||
c.rgb = pow(c.rgb, exp);
|
||||
//c.rgb *= moonlight_color.rgb;
|
||||
c.rgb *= fade;
|
||||
c.a *= fade;
|
||||
|
||||
// Partial atmospherics calculation
|
||||
vec3 ac = getAdditiveColor();
|
||||
c.rgb += ac;
|
||||
|
||||
c.rgb = scaleSoftClip(c.rgb);
|
||||
c.rgb = scaleSoftClip(c.rgb);
|
||||
|
||||
frag_color = vec4(c.rgb, c.a);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue