diff options
Diffstat (limited to 'indra/newview/app_settings/shaders/class2')
4 files changed, 10 insertions, 102 deletions
| diff --git a/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl index 26f8095dc1..ea926ab5f1 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl @@ -117,10 +117,11 @@ void main()      vec4 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color;      vec4 light_atten; +    float dens_mul = density_multiplier * 0.5;      // Sunlight attenuation effect (hue and brightness) due to atmosphere      // this is used later for sunlight modulation at various altitudes -    light_atten = (blue_density + vec4(haze_density * 0.25)) * (density_multiplier * max_y); +    light_atten = (blue_density + vec4(haze_density * 0.25)) * (dens_mul * max_y);      // Calculate relative weights      temp1 = blue_density + haze_density; @@ -133,7 +134,7 @@ void main()      sunlight *= exp( - light_atten * temp2.y);      // Distance -    temp2.z = Plen * density_multiplier; +    temp2.z = Plen * dens_mul;      // Transparency (-> temp1)      // ATI Bugfix -- can't store temp1*temp2.z in a variable because the ati diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl index 7b46a2ed28..a93253c981 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl @@ -37,8 +37,6 @@ uniform vec4 blue_density;  uniform float haze_horizon;  uniform float haze_density;  uniform float cloud_shadow; -uniform float density_multiplier; -uniform float distance_multiplier;  uniform float max_y;  uniform vec4 glow;  uniform float scene_light_strength; @@ -64,97 +62,3 @@ vec3 atmosLighting(vec3 light)  {      return atmosFragLighting(light, getAdditiveColor(), getAtmosAttenuation());  } - -void calcFragAtmospherics(vec3 inPositionEye, float ambFactor, out vec3 sunlit, out vec3 amblit, out vec3 additive, out vec3 atten) { - -    vec3 P = inPositionEye; -    -    //(TERRAIN) limit altitude -    if (P.y > max_y) P *= (max_y / P.y); -    if (P.y < -max_y) P *= (-max_y / P.y);  - -    vec3 tmpLightnorm = lightnorm.xyz; - -    vec3 Pn = normalize(P); -    float Plen = length(P); - -    vec4 temp1 = vec4(0); -    vec3 temp2 = vec3(0); -    vec4 blue_weight; -    vec4 haze_weight; -    vec4 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color; -    vec4 light_atten; - -    //sunlight attenuation effect (hue and brightness) due to atmosphere -    //this is used later for sunlight modulation at various altitudes -    light_atten = (blue_density + vec4(haze_density * 0.25)) * (density_multiplier * max_y); -        //I had thought blue_density and haze_density should have equal weighting, -        //but attenuation due to haze_density tends to seem too strong - -    temp1 = blue_density + vec4(haze_density); -    blue_weight = blue_density / temp1; -    haze_weight = vec4(haze_density) / temp1; - -    //(TERRAIN) compute sunlight from lightnorm only (for short rays like terrain) -    temp2.y = max(0.0, tmpLightnorm.y); -    if (temp2.y > 0.001f) -    { -        temp2.y = 1. / temp2.y; -    } -    temp2.y = max(0.001f, temp2.y); -    sunlight *= exp(-light_atten * temp2.y); - -    // main atmospheric scattering line integral -    temp2.z = Plen * density_multiplier; - -    // Transparency (-> temp1) -    // ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier in a variable because the ati -    // compiler gets confused. -    temp1 = exp(-temp1 * temp2.z * distance_multiplier); - -    //final atmosphere attenuation factor -    atten = temp1.rgb; -     -    //compute haze glow -    //(can use temp2.x as temp because we haven't used it yet) -    temp2.x = dot(Pn, tmpLightnorm.xyz); -    temp2.x = 1. - temp2.x; -        //temp2.x is 0 at the sun and increases away from sun -    temp2.x = max(temp2.x, .03);    //was glow.y -        //set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot) -    temp2.x *= glow.x; -        //higher glow.x gives dimmer glow (because next step is 1 / "angle") -    temp2.x = pow(temp2.x, glow.z); -        //glow.z should be negative, so we're doing a sort of (1 / "angle") function - -    //add "minimum anti-solar illumination" -    temp2.x += .25; - -    temp2.x *= sun_moon_glow_factor; -     -    //increase ambient when there are more clouds -    vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow * 0.5; -     -    /*  decrease value and saturation (that in HSV, not HSL) for occluded areas -     * // for HSV color/geometry used here, see http://gimp-savvy.com/BOOK/index.html?node52.html -     * // The following line of code performs the equivalent of: -     * float ambAlpha = tmpAmbient.a; -     * float ambValue = dot(vec3(tmpAmbient), vec3(0.577)); // projection onto <1/rt(3), 1/rt(3), 1/rt(3)>, the neutral white-black axis -     * vec3 ambHueSat = vec3(tmpAmbient) - vec3(ambValue); -     * tmpAmbient = vec4(RenderSSAOEffect.valueFactor * vec3(ambValue) + RenderSSAOEffect.saturationFactor *(1.0 - ambFactor) * ambHueSat, ambAlpha); -     */ -    tmpAmbient = vec4(mix(ssao_effect_mat * tmpAmbient.rgb, tmpAmbient.rgb, ambFactor), tmpAmbient.a); - -    //haze color -        additive = -        vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow) + tmpAmbient) -                  + (haze_horizon * haze_weight) * (sunlight*(1.-cloud_shadow) * temp2.x -          + tmpAmbient)); - -    //brightness of surface both sunlight and ambient -    sunlit = vec3(sunlight.rgb); -    amblit = vec3(tmpAmbient * .25); -    additive  = normalize(additive); -    additive *= vec3(1.0 - exp(-temp2.z * distance_multiplier)) * 0.5; -} - diff --git a/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl index 36badc5214..fcfe5bbba0 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl @@ -103,10 +103,11 @@ void main()      vec4 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color;      vec4 light_atten; +    float dens_mul = density_multiplier * 0.5;      // Sunlight attenuation effect (hue and brightness) due to atmosphere      // this is used later for sunlight modulation at various altitudes -    light_atten = (blue_density + vec4(haze_density * 0.25)) * (density_multiplier * max_y); +    light_atten = (blue_density + vec4(haze_density * 0.25)) * (dens_mul * max_y);      // Calculate relative weights      temp1 = blue_density + haze_density; @@ -119,7 +120,7 @@ void main()      sunlight *= exp( - light_atten * temp2.y);      // Distance -    temp2.z = Plen * density_multiplier; +    temp2.z = Plen * dens_mul;      // Transparency (-> temp1)      // ATI Bugfix -- can't store temp1*temp2.z in a variable because the ati diff --git a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl index 5798493ce5..a253bb72d5 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl @@ -87,9 +87,11 @@ void main()  	vec4 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color;  	vec4 light_atten; +    float dens_mul = density_multiplier * 0.5; +  	// Sunlight attenuation effect (hue and brightness) due to atmosphere  	// this is used later for sunlight modulation at various altitudes -	light_atten = (blue_density + vec4(haze_density * 0.25)) * (density_multiplier * max_y); +	light_atten = (blue_density + vec4(haze_density * 0.25)) * (dens_mul * max_y);  	// Calculate relative weights  	temp1 = blue_density + haze_density; @@ -102,7 +104,7 @@ void main()  	sunlight *= exp( - light_atten * temp2.y);  	// Distance -	temp2.z = Plen * density_multiplier; +	temp2.z = Plen * dens_mul;  	// Transparency (-> temp1)  	// ATI Bugfix -- can't store temp1*temp2.z in a variable because the ati | 
