From 9e1692ace915b495047678bd5a8f3acdf22d291a Mon Sep 17 00:00:00 2001 From: Ptolemy Date: Thu, 11 Aug 2022 11:21:02 -0700 Subject: SL-17763: Make dist_atten consistent between PBR and Legacy --- .../shaders/class3/deferred/multiPointLightF.glsl | 2 ++ .../shaders/class3/deferred/multiSpotLightF.glsl | 13 ++++++------- .../app_settings/shaders/class3/deferred/pointLightF.glsl | 5 ++--- .../app_settings/shaders/class3/deferred/spotLightF.glsl | 14 ++++++-------- 4 files changed, 16 insertions(+), 18 deletions(-) diff --git a/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl index b27b171122..399948459b 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl @@ -106,6 +106,8 @@ void main() { float dist = lightDist / lightSize; float dist_atten = 1.0 - (dist + falloff)/(1.0 + falloff); + dist_atten *= dist_atten; + dist_atten *= 2.0; vec3 intensity = dist_atten * getLightIntensityPoint(lightColor, lightSize, lightDist); colorDiffuse += intensity * nl * BRDFLambertian (reflect0, reflect90, c_diff , specWeight, vh); colorSpec += intensity * nl * BRDFSpecularGGX(reflect0, reflect90, alphaRough, specWeight, vh, nl, nv, nh); diff --git a/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl index f28619b11a..fdbeb34116 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl @@ -160,6 +160,12 @@ void main() vec4 norm = getNormalEnvIntensityFlags(tc, n, envIntensity); float dist_atten = 1.0 - (dist + falloff)/(1.0 + falloff); + dist_atten *= dist_atten; + dist_atten *= 2.0; + if (dist_atten <= 0.0) + { + discard; + } lv = proj_origin-pos.xyz; vec3 h, l, v = -normalize(pos); @@ -294,13 +300,6 @@ void main() } else { - dist_atten *= dist_atten; - dist_atten *= 2.0; - if (dist_atten <= 0.0) - { - discard; - } - float noise = texture2D(noiseMap, tc/128.0).b; if (proj_tc.z > 0.0 && proj_tc.x < 1.0 && diff --git a/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl index b4640187c7..42d7407456 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl @@ -90,6 +90,8 @@ void main() float dist = lightDist / size; float dist_atten = 1.0 - (dist + falloff)/(1.0 + falloff); + dist_atten *= dist_atten; + dist_atten *= 2.0; if (GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_PBR)) { @@ -129,9 +131,6 @@ void main() discard; } - dist_atten *= dist_atten; - dist_atten *= 2.0; - float noise = texture2D(noiseMap, tc/128.0).b; float lit = nl * dist_atten * noise; diff --git a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl index 25622d4f83..d82baf0804 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl @@ -127,6 +127,12 @@ void main() vec4 norm = getNormalEnvIntensityFlags(tc, n, envIntensity); // need `norm.w` for GET_GBUFFER_FLAG() float dist_atten = 1.0 - (dist + falloff)/(1.0 + falloff); + dist_atten *= dist_atten; + dist_atten *= 2.0; + if (dist_atten <= 0.0) + { + discard; + } lv = proj_origin-pos.xyz; // NOTE: Re-using lv vec3 h, l, v = -normalize(pos); @@ -194,14 +200,6 @@ void main() } else { - dist_atten *= dist_atten; - dist_atten *= 2.0; - - if (dist_atten <= 0.0) - { - discard; - } - float noise = texture2D(noiseMap, tc/128.0).b; if (proj_tc.z > 0.0 && proj_tc.x < 1.0 && -- cgit v1.2.3