summaryrefslogtreecommitdiff
path: root/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl')
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl13
1 files changed, 10 insertions, 3 deletions
diff --git a/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl
index 8886abb7d1..defd577266 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl
@@ -27,6 +27,8 @@
/*[EXTRA_CODE_HERE]*/
+#define DEBUG_PBR_LIGHT_TYPE 0
+
#ifdef DEFINE_GL_FRAGCOLOR
out vec4 frag_color;
#else
@@ -86,6 +88,9 @@ void main()
float nh, nl, nv, vh, lightDist;
calcHalfVectors(lv, n, v, h, l, nh, nl, nv, vh, lightDist);
+ float dist = lightDist / size;
+ float dist_atten = 1.0 - (dist + falloff)/(1.0 + falloff);
+
if (GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_PBR))
{
vec3 colorDiffuse = vec3(0);
@@ -99,11 +104,15 @@ void main()
if (nl > 0.0 || nv > 0.0)
{
- vec3 intensity = getLightIntensityPoint(color, size, lightDist);
+ vec3 intensity = dist_atten * getLightIntensityPoint(color, size, lightDist);
colorDiffuse += intensity * nl * BRDFLambertian (reflect0, reflect90, c_diff , specWeight, vh);
colorSpec += intensity * nl * BRDFSpecularGGX(reflect0, reflect90, alphaRough, specWeight, vh, nl, nv, nh);
}
+#if DEBUG_PBR_LIGHT_TYPE
+ colorDiffuse = vec3(0,0,0.5); colorSpec = vec3(0);
+#endif
+
final_color = colorDiffuse + colorSpec;
}
else
@@ -120,8 +129,6 @@ void main()
discard;
}
- float fa = falloff+1.0;
- float dist_atten = clamp(1.0-(dist-1.0*(1.0-fa))/fa, 0.0, 1.0);
dist_atten *= dist_atten;
dist_atten *= 2.0;