diff --git a/Effects/runway.eff b/Effects/runway.eff index 38744d621..542ca162e 100644 --- a/Effects/runway.eff +++ b/Effects/runway.eff @@ -85,6 +85,7 @@ <quality_level><use>/sim/rendering/shaders/landmass</use></quality_level> <tquality_level><use>/sim/rendering/shaders/transition</use></tquality_level> <raise_vertex type="bool">false</raise_vertex> + <overlay_flag type="int">0</overlay_flag> <!-- END fog include --> </parameters> <generate> @@ -537,6 +538,11 @@ <type>int</type> <value><use>display_ysize</use></value> </uniform> + <uniform> + <name>overlay_flag</name> + <type>int</type> + <value><use>overlay_flag</use></value> + </uniform> <uniform> <name>raise_vertex</name> <type>bool</type> diff --git a/Materials/regions/global.xml b/Materials/regions/global.xml index bad52ce53..ed73f60cb 100644 --- a/Materials/regions/global.xml +++ b/Materials/regions/global.xml @@ -45,7 +45,70 @@ <material> <name>dirt_rwy</name> <effect>Effects/dirt-runway</effect> - <texture>Runway/dirt_rwy.png</texture> + <!--<texture>Runway/dirt_rwy.png</texture>--> + <!--<texture-set> + <texture>Runway/dirt_rwy.png</texture> + <texture n="16">Runway/dirt_rwy.png</texture> + <texture n="17">Terrain/sand_hires_ochre.png</texture> + </texture-set> + <parameters> + <strength_05m>0.0</strength_05m> + <strength_1m>0.4</strength_1m> + <strength_2m>0.3</strength_2m> + <strength_5m>0.2</strength_5m> + <strength_10m>0.1</strength_10m> + <filter_threshold>0.2</filter_threshold> + <filter_transition>0.2</filter_transition> + <bias_center>1</bias_center> + <bias_center_strength>0.6</bias_center_strength> + <relief_strength>0.35</relief_strength> + <size_base>25.0</size_base> + <size_overlay>25.0</size_overlay> + <size_grain>25.0</size_grain> + <grain_strength>0.4</grain_strength> + </parameters>--> + <!--<texture-set> + <texture>Runway/dirt_rwy.png</texture> + <texture n="16">Runway/lakebed_taxiway.png</texture> + <texture n="17">Terrain/airport_grass2.png</texture> + </texture-set> + <parameters> + <strength_05m>0.2</strength_05m> + <strength_1m>0.6</strength_1m> + <strength_2m>0.2</strength_2m> + <strength_5m>0.0</strength_5m> + <strength_10m>0.0</strength_10m> + <filter_threshold>0.2</filter_threshold> + <filter_transition>0.1</filter_transition> + <bias_center>1</bias_center> + <bias_center_strength>0.8</bias_center_strength> + <relief_strength>0.35</relief_strength> + <size_base>25.0</size_base> + <size_overlay>25.0</size_overlay> + <size_grain>20.0</size_grain> + <grain_strength>0.6</grain_strength> + </parameters>--> + <texture-set> + <texture>Runway/dirt_rwy.png</texture> + <texture n="16">Runway/lakebed_taxiway.png</texture> + <texture n="17">Terrain/sand_hires.png</texture> + </texture-set> + <parameters> + <strength_05m>0.0</strength_05m> + <strength_1m>0.2</strength_1m> + <strength_2m>0.3</strength_2m> + <strength_5m>0.3</strength_5m> + <strength_10m>0.2</strength_10m> + <filter_threshold>0.2</filter_threshold> + <filter_transition>0.4</filter_transition> + <bias_center>1</bias_center> + <bias_center_strength>0.5</bias_center_strength> + <relief_strength>0.35</relief_strength> + <size_base>25.0</size_base> + <size_overlay>25.0</size_overlay> + <size_grain>20.0</size_grain> + <grain_strength>0.2</grain_strength> + </parameters> <friction-factor>0.7</friction-factor> <rolling-friction>0.04</rolling-friction> <bumpiness>0.1</bumpiness> @@ -298,12 +361,18 @@ <material include="Materials/base/runway_effect.xml"> <name>pa_tz_three</name> + <parameters> + <overlay_flag type="int">1</overlay_flag> + </parameters> <texture>Runway/pa_tz_three.png</texture> <wrapu>false</wrapu> </material> <material include="Materials/base/runway_effect.xml"> <name>pa_aim</name> + <parameters> + <overlay_flag type="int">2</overlay_flag> + </parameters> <texture>Runway/pa_aim.png</texture> <wrapu>false</wrapu> </material> @@ -316,36 +385,54 @@ <material include="Materials/base/runway_effect.xml"> <name>pa_tz_two_a</name> + <parameters> + <overlay_flag type="int">3</overlay_flag> + </parameters> <texture>Runway/pa_tz_two_a.png</texture> <wrapu>false</wrapu> </material> <material include="Materials/base/runway_effect.xml"> <name>pa_tz_two_b</name> + <parameters> + <overlay_flag type="int">3</overlay_flag> + </parameters> <texture>Runway/pa_tz_two_b.png</texture> <wrapu>false</wrapu> </material> <material include="Materials/base/runway_effect.xml"> <name>pa_tz_one_a</name> + <parameters> + <overlay_flag type="int">3</overlay_flag> + </parameters> <texture>Runway/pa_tz_one_a.png</texture> <wrapu>false</wrapu> </material> <material include="Materials/base/runway_effect.xml"> <name>pa_tz_one_b</name> + <parameters> + <overlay_flag type="int">3</overlay_flag> + </parameters> <texture>Runway/pa_tz_one_b.png</texture> <wrapu>false</wrapu> </material> <material include="Materials/base/runway_effect.xml"> <name>pa_centerline</name> + <parameters> + <overlay_flag type="int">1</overlay_flag> + </parameters> <texture>Runway/pa_centerline.png</texture> <wrapu>false</wrapu> </material> <material include="Materials/base/runway_effect.xml"> <name>pa_rest</name> + <parameters> + <overlay_flag type="int">3</overlay_flag> + </parameters> <texture>Runway/pa_rest.png</texture> <wrapu>false</wrapu> </material> diff --git a/Shaders/runway-ALS.frag b/Shaders/runway-ALS.frag index f90e00562..5fcbf92f5 100644 --- a/Shaders/runway-ALS.frag +++ b/Shaders/runway-ALS.frag @@ -45,6 +45,7 @@ uniform int cloud_shadow_flag; uniform int use_searchlight; uniform int use_landing_light; uniform int use_alt_landing_light; +uniform int overlay_flag; const float EarthRadius = 5800000.0; const float terminator_width = 200000.0; @@ -118,13 +119,11 @@ void main() float noise_01m; float noise_1m = Noise2D(rawPos.xy, 1.0); -float noise_10m; -float noise_5m; -noise_10m = Noise2D(rawPos.xy, 10.0); -noise_5m = Noise2D(rawPos.xy ,5.0); +float noise_10m = Noise2D(rawPos.xy, 10.0); +float noise_20m = Noise2D(rawPos.xy, 20.0); +float noise_5m = Noise2D(rawPos.xy ,5.0); + -float noisegrad_10m; -float noisegrad_5m; float noise_50m = Noise2D(rawPos.xy, 50.0); @@ -144,6 +143,61 @@ float noise_2000m = Noise3D(worldPos.xyz, 2000.0); vec4 nmap = texture2D(NormalTex, gl_TexCoord[0].st * 8.0); vec3 N = nmap.rgb * 2.0 - 1.0; + + // skid marks by procedural darkening + + float mix_factor = smoothstep(0.0, 0.3, 1.0 - gl_TexCoord[0].t)* smoothstep(0.0, 0.1, gl_TexCoord[0].t); + float threshold; + + if (overlay_flag > 0) + { + float centerness = 2.0 * (0.5 - abs(gl_TexCoord[0].s - 0.5)); + + if (overlay_flag == 1) + { + threshold = 0.4 + 0.3 * (1.0 -noise_50m); + } + else if (overlay_flag == 2) + { + threshold = mix(0.4 + 0.3 * (1.0 -noise_50m), 0.4, mix_factor); + } + else if (overlay_flag == 3) + { + threshold = 0.4 + 0.3 * (1.0 -noise_50m); + } + + centerness = smoothstep(threshold, 1.0, centerness); + + float sine_factor1 = smoothstep(0.6, 1.0, abs(sin(1.0 * noise_50m + 2.0 * gl_TexCoord[0].s + gl_TexCoord[0].s * 40.0))); + float sine_factor2 = smoothstep(0.7, 1.0, abs(sin(2.0 * noise_10m + gl_TexCoord[0].s + gl_TexCoord[0].s * 60.0))); + float sine_factor3 = smoothstep(0.7, 1.0, abs(sin(1.0 * noise_20m + gl_TexCoord[0].s + gl_TexCoord[0].s * 80.0))); + + float sine_factor = sine_factor1 * smoothstep(0.4, 0.6, noise_10m); + sine_factor += sine_factor2 * (1.0 - smoothstep(0.5, 0.7, noise_10m)); + sine_factor += sine_factor3 * smoothstep(0.5, 0.6, noise_20m); + sine_factor = min(sine_factor, 1.0); + + + centerness *=(0.7 + 0.3 *sine_factor); + + float t_factor; + + if (overlay_flag == 1) + {t_factor = smoothstep(0.0, 0.3, gl_TexCoord[0].t) * (0.4 + 0.2 * noise_50m);} + else if (overlay_flag == 2) + { + t_factor = mix (0.4 + 0.2 * noise_50m, 0.7 + 0.2 * noise_50m, mix_factor); + } + else if (overlay_flag == 3) + {t_factor = 0.3 + 0.2 * noise_50m;} + + centerness *= t_factor; + + + centerness = 1.0 - centerness; + texel.rgb = texel.rgb * (0.2 + 0.8 * centerness); + } + float distortion_factor = 1.0; vec2 stprime; int flag = 1; @@ -464,5 +518,10 @@ fragColor.rgb = mix(hazeColor +secondary_light * fog_backscatter(mvisibility), f gl_FragColor = fragColor; +//if (overlay_flag == 1) +// {gl_FragColor = vec4 (1.0, 0.0, 0.0, 1.0);} + +//if (gl_TexCoord[0].s > 0.5) {gl_FragColor = vec4 (1.0, 0.0, 0.0, 1.0);} +//if (gl_TexCoord[0].t > 0.5) {gl_FragColor = vec4 (0.0, 1.0, 0.0, 1.0);} }