diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl index 14efbf717e7aed72e440de9ec95eb2df29859b3d..5daeb2827cc3b679edbf3606e55074dc6d5806e6 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl @@ -131,6 +131,7 @@ void main() vec3 pos = getPosition(frag.xy).xyz; vec3 lv = center.xyz-pos.xyz; float dist = length(lv); + dist /= size; if (dist > 1.0) { @@ -191,7 +192,8 @@ void main() lit = da * dist_atten * noise; col = dlit*lit*diff_tex; - amb_da += (da*0.5)*proj_ambiance; + + amb_da += (da*0.5+0.5)*proj_ambiance; } //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0); vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod); @@ -201,6 +203,9 @@ void main() amb_da *= dist_atten * noise; amb_da = min(amb_da, 1.0-lit); + + amb_da = max(amb_da, 0.0); // Prevent nan in lighting + col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl index 8b9ae5874869a73d131e790532687556773f39ef..4e8ddfb2777d93ea4a9fcee8379f75c01afc5182 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl @@ -191,7 +191,7 @@ void main() lit = da * dist_atten * noise; col = dlit*lit*diff_tex; - amb_da += (da*0.5)*proj_ambiance; + amb_da += (da*0.5+0.5)*proj_ambiance; } //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0); vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod); @@ -201,6 +201,9 @@ void main() amb_da *= dist_atten * noise; amb_da = min(amb_da, 1.0-lit); + + amb_da = max(amb_da, 0.0); // Prevent nan in lighting + col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; } diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl index f295a7c2faf0a3fe324a0a6f09c28a1d0ce25556..c40188259207d9c054158dbf5801bd1c14b0decd 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl @@ -215,6 +215,8 @@ void main() amb_da *= dist_atten * noise; amb_da = min(amb_da, 1.0-lit); + amb_da = max(amb_da, 0.0); // Prevent nan in lighting + col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; } @@ -275,10 +277,7 @@ void main() } #endif - //not sure why, but this line prevents MATBUG-194 - col = max(col, vec3(0.0)); - - //output linear + //output linear, sum of lights will be gamma corrected later frag_color.rgb = col; frag_color.a = 0.0; } diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl index 44b34061ffe985f18daf93c39a4cb51315131b17..30db661534dba79dd5b9d1ac7b80fc79a7585d9d 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl @@ -213,6 +213,7 @@ void main() amb_da += (da*da*0.5+0.5) /* * (1.0-shadow) */ * proj_ambiance; amb_da *= dist_atten * noise; amb_da = min(amb_da, 1.0-lit); + amb_da = max(amb_da, 0.0); // Prevent nan in lighting col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; } @@ -273,10 +274,6 @@ void main() } } #endif - - //not sure why, but this line prevents MATBUG-194 - col = max(col, vec3(0.0)); - //output linear colors as gamma correction happens down stream frag_color.rgb = col; frag_color.a = 0.0;