From 3dc8b32f679145132c15911e93305a78a0a6e3b4 Mon Sep 17 00:00:00 2001 From: Thorsten Renk Date: Tue, 29 Dec 2015 11:53:46 +0200 Subject: [PATCH] De-saturating the core of ALS surface and runway lights as suggested by Gilberto Agostinho --- Shaders/surface-light-ALS.frag | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/Shaders/surface-light-ALS.frag b/Shaders/surface-light-ALS.frag index 86da7e301..8128e7e9e 100644 --- a/Shaders/surface-light-ALS.frag +++ b/Shaders/surface-light-ALS.frag @@ -45,7 +45,7 @@ else } -vec4 light_sprite (in vec2 coord, in float transmission, in float noise) +float light_sprite (in vec2 coord, in float transmission, in float noise) { coord.s = coord.s - 0.5; @@ -66,10 +66,14 @@ else {ray = clamp(pow(sinterm,10.0),0.0,1.0);} float fogEffect = (1.0-smoothstep(0.4,0.8,transmission)); +float halo = 0.2 * exp(-10.0 * r * r); +float base = exp(-80.0*r*r); +ray *= exp(-40.0 * r * r); -float intensity = clamp(ray * exp(-40.0 * r * r) + exp(-80.0*r*r),0.0,1.0) + 0.1 * fogEffect * (1.0-smoothstep(0.3, 0.6,r)); +float intensity = clamp(ray + base + halo,0.0,1.0) + 0.1 * fogEffect * (1.0-smoothstep(0.3, 0.6,r)); -return vec4 (1.0,1.0,1.0,1.0) * intensity; +return intensity; +//return vec4 (1.0,1.0,1.0,1.0) * intensity; } @@ -155,8 +159,12 @@ void main() float dist_att = exp(-dist/200.0/size/attenuationScale); //vec4 texel = texture2D(texture,gl_TexCoord[0].st); - vec4 texel = light_sprite(gl_TexCoord[0].st,transmission, noise); - gl_FragColor = vec4 (clamp(gl_Color.rgb,0.0,1.0), texel.a * transmission * dist_att); + //vec4 texel = light_sprite(gl_TexCoord[0].st,transmission, noise); + float intensity = light_sprite(gl_TexCoord[0].st,transmission, noise); + vec3 light_color = gl_Color.rgb; + light_color = mix(light_color, vec3 (1.0, 1.0, 1.0), intensity * intensity); + + gl_FragColor = vec4 (clamp(light_color.rgb,0.0,1.0), intensity * transmission * dist_att); }