diff options
| author | Graham Linden <graham@lindenlab.com> | 2019-04-05 14:35:55 -0700 | 
|---|---|---|
| committer | Graham Linden <graham@lindenlab.com> | 2019-04-05 14:35:55 -0700 | 
| commit | fff2aecf7f96de9e53620887210487a48dd45580 (patch) | |
| tree | c49ec5b62bbcd87069916212aab3506405efd2e3 /indra/newview/app_settings/shaders/class1/deferred | |
| parent | 39803f29c6b8dec710fb4b0244a81734bd95644a (diff) | |
SL-10821
Fix directionality of da and preserve bumps on completely shadowed areas.
Diffstat (limited to 'indra/newview/app_settings/shaders/class1/deferred')
3 files changed, 14 insertions, 10 deletions
| diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl index 1bc576a4ec..68a735e813 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl @@ -194,7 +194,8 @@ void main()      vec3 light_dir = (sun_up_factor == 1) ? sun_dir: moon_dir;      float da = dot(norm.xyz, light_dir.xyz); - +          da = clamp(da, -1.0, 1.0); +       float final_da = da;            final_da = clamp(final_da, 0.0f, 1.0f);  		  final_da = pow(final_da, 1.0/1.3); @@ -204,13 +205,13 @@ void main()      color.rgb = amblit;      color.a   = final_alpha; -    float ambient = abs(da); +    float ambient = da;      ambient *= 0.5;      ambient *= ambient;      ambient = max(0.9, ambient); // keeps shadows dark      ambient = 1.0 - ambient; -    vec3 sun_contrib = min(final_da, shadow) * sunlit; +    vec3 sun_contrib = mix(final_da, min(final_da, shadow), 0.1) * sunlit;      color.rgb *= ambient;      color.rgb += sun_contrib; diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl index 4e24e61018..8691e729ee 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl @@ -296,18 +296,19 @@ void main()      vec3 light_dir = (sun_up_factor == 1) ? sun_dir : moon_dir;      float da = dot(norm.xyz, light_dir.xyz); +          da = clamp(da, -1.0, 1.0);      float final_da = da;            final_da = clamp(final_da, 0.0, 1.0);            final_da = pow(final_da, 1.0 / 1.3); -    float ambient = abs(da); +    float ambient = da;      ambient *= 0.5;      ambient *= ambient;      ambient = max(0.9, ambient);      ambient = 1.0 - ambient; -    vec3 sun_contrib = min(final_da, shadow) * sunlit; +    vec3 sun_contrib = mix(final_da, min(final_da, shadow), 0.1) * sunlit;      col.rgb = amblit;      col.rgb *= ambient; diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl index e44b441727..361ed40eaf 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl @@ -86,13 +86,15 @@ void main()      float envIntensity = norm.z;      norm.xyz = getNorm(tc); +    float light_gamma = 1.0/1.3;      vec3 light_dir = (sun_up_factor == 1) ? sun_dir : moon_dir;      float da = dot(normalize(norm.xyz), light_dir.xyz); -          da = clamp(da, 0.0, 1.0); +          da = clamp(da, -1.0, 1.0); -    float light_gamma = 1.0/1.3; -	      da = pow(da, light_gamma); +    float final_da = da; +          final_da = clamp(final_da, 0.0, 1.0); +	      final_da = pow(final_da, light_gamma);      vec4 diffuse = texture2DRect(diffuseRect, tc); @@ -107,12 +109,12 @@ void main()          calcFragAtmospherics(pos.xyz, 1.0, sunlit, amblit, additive, atten); -        float ambient = min(abs(da), 1.0); +        float ambient = da;          ambient *= 0.5;          ambient *= ambient;          ambient = 1.0 - ambient; -        vec3 sun_contrib = da * sunlit; +        vec3 sun_contrib = final_da * sunlit;          col.rgb = amblit;          col.rgb *= ambient; | 
