From 2366eaec94caf4622f7b30bec4438d6850aa78d7 Mon Sep 17 00:00:00 2001 From: Thorsten Renk <thorsten@science-and-fiction.org> Date: Wed, 3 Feb 2016 10:01:59 +0200 Subject: [PATCH] More customizable ALS airport keep effect --- Effects/airfield.eff | 18 ++++++++++++++++++ Shaders/airfield-ALS.frag | 23 +++++++++++++++-------- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/Effects/airfield.eff b/Effects/airfield.eff index b2b71cd22..fc54e445f 100644 --- a/Effects/airfield.eff +++ b/Effects/airfield.eff @@ -19,7 +19,10 @@ <wrap-t>repeat</wrap-t> <internal-format>normalized</internal-format> </texture> + <base_layer_magnification>5.0</base_layer_magnification> + <overlay_layer_magnification>4.0</overlay_layer_magnification> <use_overlay>0</use_overlay> + <use_color_overlay>1</use_color_overlay> <grit_alpha>1.0</grit_alpha> <overlay_bias>0.0</overlay_bias> <overlay_alpha>1.0</overlay_alpha> @@ -205,6 +208,16 @@ <type>float</type> <value><use>overlay_alpha</use></value> </uniform> + <uniform> + <name>base_layer_magnification</name> + <type>float</type> + <value><use>base_layer_magnification</use></value> + </uniform> + <uniform> + <name>overlay_layer_magnification</name> + <type>float</type> + <value><use>overlay_layer_magnification</use></value> + </uniform> <uniform> <name>cloud_self_shading</name> <type>float</type> @@ -475,6 +488,11 @@ <type>int</type> <value> <use>use_overlay</use></value> </uniform> + <uniform> + <name>use_color_overlay</name> + <type>int</type> + <value> <use>use_color_overlay</use></value> + </uniform> <uniform> <name>use_searchlight</name> <type>int</type> diff --git a/Shaders/airfield-ALS.frag b/Shaders/airfield-ALS.frag index 444cdccea..75fc75c15 100644 --- a/Shaders/airfield-ALS.frag +++ b/Shaders/airfield-ALS.frag @@ -33,6 +33,8 @@ uniform float snow_thickness_factor; uniform float grit_alpha; uniform float overlay_bias; uniform float overlay_alpha; +uniform float base_layer_magnification; +uniform float overlay_layer_magnification; uniform float wetness; uniform float air_pollution; uniform float season; @@ -44,6 +46,7 @@ uniform int quality_level; uniform int tquality_level; uniform int cloud_shadow_flag; uniform int use_overlay; +uniform int use_color_overlay; uniform int use_searchlight; uniform int use_landing_light; uniform int use_alt_landing_light; @@ -151,7 +154,7 @@ float noise_2000m = Noise3D(worldPos.xyz, 2000.0); // get the texels - texel = texture2D(texture, gl_TexCoord[0].st * 5.0); + texel = texture2D(texture, gl_TexCoord[0].st * base_layer_magnification); float local_autumn_factor = texel.a; float distortion_factor = 1.0; @@ -161,22 +164,23 @@ float noise_2000m = Noise3D(worldPos.xyz, 2000.0); if (quality_level > 3) { //snow_texel = texture2D(snow_texture, gl_TexCoord[0].st); - float sfactor; + snow_texel = vec4 (0.95, 0.95, 0.95, 1.0) * (0.9 + 0.1* noise_50m + 0.1* (1.0 - noise_10m) ); snow_texel.a = 1.0; noise_term = 0.1 * (noise_50m-0.5); - sfactor = 1.0;//sqrt(2.0 * (1.0-steepness)/0.03) + abs(ct)/0.15; - noise_term = noise_term + 0.2 * (noise_10m -0.5) * (1.0 - smoothstep(10000.0*sfactor, 16000.0*sfactor, dist) ) ; - noise_term = noise_term + 0.3 * (noise_5m -0.5) * (1.0 - smoothstep(1200.0 * sfactor, 2000.0 * sfactor, dist) ) ; - if (dist < 1000.0*sfactor){ noise_term = noise_term + 0.3 * (noise_1m -0.5) * (1.0 - smoothstep(500.0 * sfactor, 1000.0 *sfactor, dist) );} + + noise_term = noise_term + 0.2 * (noise_10m -0.5) * (1.0 - smoothstep(10000.0, 16000.0, dist) ) ; + noise_term = noise_term + 0.3 * (noise_5m -0.5) * (1.0 - smoothstep(1200.0 , 2000.0 , dist) ) ; + if (dist < 1000.0){ noise_term = noise_term + 0.3 * (noise_1m -0.5) * (1.0 - smoothstep(500.0 , 1000.0 , dist) );} snow_texel.a = snow_texel.a * 0.2+0.8* smoothstep(0.2,0.8, 0.3 +noise_term + snow_thickness_factor +0.0001*(relPos.z +eye_alt -snowlevel) ); } if (use_overlay == 1) { - overlay_texel = texture2D(overlay_texture, gl_TexCoord[0].st * 4.0); + overlay_texel = texture2D(overlay_texture, gl_TexCoord[0].st * overlay_layer_magnification); + + texel.rgb = mix(texel.rgb, overlay_texel.rgb, overlay_texel.a * overlay_alpha * smoothstep(0.45, 0.65, overlay_bias + (0.5 * noise_1m + 0.1 * noise_2m + 0.4 * noise_10m))); - texel = mix(texel, overlay_texel, overlay_alpha * smoothstep(0.45, 0.65, overlay_bias + (0.5 * noise_1m + 0.1 * noise_2m + 0.4 * noise_10m))); } @@ -203,11 +207,14 @@ if ((dist < 3000.0)&& (quality_level > 3) && (wetness>0.0)) // color and shade variation of the grass +if (use_color_overlay) + { float nfact_1m = 3.0 * (noise_1m - 0.5) * detail_fade(1.0, abs(ct),dist);//* (1.0 - smoothstep(3000.0, 6000.0, dist/ abs(ct))); float nfact_5m = 2.0 * (noise_5m - 0.5) * detail_fade(2.0, abs(ct),dist);; float nfact_10m = 1.0 * (noise_10m - 0.5); texel.rgb = texel.rgb * (0.85 + 0.1 * (nfact_1m * detail_fade(1.0, abs(ct),dist) + nfact_5m + nfact_10m) * grit_alpha); texel.r = texel.r * (1.0 + 0.14 * smoothstep(0.5,0.7, 0.33*(2.0 * noise_10m + (1.0-noise_5m)))); + } // autumn colors