Skip to content
Snippets Groups Projects
Commit ebf53108 authored by Graham Linden's avatar Graham Linden
Browse files

SL-10966

Fix use of density and distance multipliers in atmospherics to use original pre-EEP range instead of FS expanded range.

Modify additive calc to restore old behavior (probably reverts fix for "lens flare" bug).
parent d2419ca3
No related branches found
No related tags found
No related merge requests found
......@@ -66,9 +66,12 @@ void calcAtmosphericVars(vec3 inPositionEye, float ambFactor, out vec3 sunlit, o
vec4 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color;
vec4 light_atten;
float dens_mul = density_multiplier * 0.5; // get back to original pre-EEP range...
float dist_mul = distance_multiplier * 0.1; // get back to original pre-EEP range...
//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);
//I had thought blue_density and haze_density should have equal weighting,
//but attenuation due to haze_density tends to seem too strong
......@@ -86,12 +89,12 @@ void calcAtmosphericVars(vec3 inPositionEye, float ambFactor, out vec3 sunlit, o
sunlight *= exp(-light_atten * temp2.y);
// main atmospheric scattering line integral
temp2.z = Plen * density_multiplier;
temp2.z = Plen * dens_mul / 2.0f; // 2.0 to get range back to what it was pre-EEP...
// Transparency (-> temp1)
// ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier in a variable because the ati
// ATI Bugfix -- can't store temp1*temp2.z*dist_mul in a variable because the ati
// compiler gets confused.
temp1 = exp(-temp1 * temp2.z * distance_multiplier);
temp1 = exp(-temp1 * temp2.z * dist_mul);
//final atmosphere attenuation factor
atten = temp1.rgb;
......@@ -135,6 +138,5 @@ void calcAtmosphericVars(vec3 inPositionEye, float ambFactor, out vec3 sunlit, o
//brightness of surface both sunlight and ambient
sunlit = sunlight.rgb;
amblit = tmpAmbient.rgb * .25;
additive = normalize(additive);
additive *= vec3(1.0 - exp(-temp2.z * distance_multiplier)) * 0.5;
additive *= vec3(1.0 - temp1);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment