From 40e871a9113c389944c0aeebf376399d10340ab8 Mon Sep 17 00:00:00 2001 From: Erik Hofman Date: Tue, 19 Jan 2021 11:10:44 +0100 Subject: [PATCH] Implement a simple snow shader for the low quality levels --- Materials/regions/global-summer.xml | 33 ++++++++++- Shaders/airfield-ALS.frag | 6 ++ Shaders/drunway-ALS.frag | 6 ++ Shaders/runway-ALS.frag | 6 ++ Shaders/terrain-ALS-detailed.frag | 6 ++ gui/dialogs/environment-settings.xml | 84 +++++----------------------- 6 files changed, 68 insertions(+), 73 deletions(-) diff --git a/Materials/regions/global-summer.xml b/Materials/regions/global-summer.xml index 4b8a1f688..6854b0fa9 100644 --- a/Materials/regions/global-summer.xml +++ b/Materials/regions/global-summer.xml @@ -391,13 +391,42 @@ Terrain/water.png + + Effects/water-inland + Stream + Canal + Terrain/water-lake.png + 400 + 400 + + 0.0 + 0.0 + 0.0 + 1.0 + + + 0.5 + 0.5 + 0.5 + 1.0 + + + 0.3 + 0.3 + 0.3 + 1.0 + + 1.2 + 0 + 1.5 + 0.6 + + Effects/water-inland Lake Pond Reservoir - Stream - Canal Lagoon Estuary Watercourse diff --git a/Shaders/airfield-ALS.frag b/Shaders/airfield-ALS.frag index c33cc17fe..e039ddcfc 100644 --- a/Shaders/airfield-ALS.frag +++ b/Shaders/airfield-ALS.frag @@ -193,6 +193,12 @@ float noise_2000m = Noise3D(worldPos.xyz, 2000.0); 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) ); } + else if (relPos.z + eye_alt +500.0 > snowlevel && tquality_level > 2) + { + float snow_alpha = 0.5+0.5* smoothstep(0.2,0.8, 0.3 + snow_thickness_factor +0.0001*(relPos.z +eye_alt -snowlevel) ); +// texel = vec4(dot(vec3(0.2989, 0.5870, 0.1140), texel.rgb)); + texel = mix(texel, vec4(1.0), snow_alpha* smoothstep(snowlevel, snowlevel+200.0, (relPos.z + eye_alt))); + } if (use_overlay == 1) { diff --git a/Shaders/drunway-ALS.frag b/Shaders/drunway-ALS.frag index b40913b24..85056dee4 100644 --- a/Shaders/drunway-ALS.frag +++ b/Shaders/drunway-ALS.frag @@ -245,6 +245,12 @@ if (quality_level > 3) texel = mix(texel, snow_texel, snow_texel.a* smoothstep(snowlevel, snowlevel+200.0, snow_alpha * (relPos.z + eye_alt)+ (noise_2000m + 0.1 * noise_10m -0.55) *400.0)); } } +else if (relPos.z + eye_alt +500.0 > snowlevel) + { + float snow_alpha = 0.5+0.5* smoothstep(0.2,0.8, 0.3 + snow_thickness_factor +0.0001*(relPos.z +eye_alt -snowlevel) ); +// texel = vec4(dot(vec3(0.2989, 0.5870, 0.1140), texel.rgb)); + texel = mix(texel, vec4(1.0), snow_alpha* smoothstep(snowlevel, snowlevel+200.0, (relPos.z + eye_alt))); + } diff --git a/Shaders/runway-ALS.frag b/Shaders/runway-ALS.frag index 56129de64..7bbb6d49f 100644 --- a/Shaders/runway-ALS.frag +++ b/Shaders/runway-ALS.frag @@ -248,6 +248,12 @@ if (quality_level > 3) texel.rgb = mix(texel.rgb, snow_texel.rgb, snow_texel.a* smoothstep(snowlevel, snowlevel+200.0, snow_alpha * (relPos.z + eye_alt)+ (noise_2000m + 0.1 * noise_10m -0.55) *400.0)); } } +else if (relPos.z + eye_alt +500.0 > snowlevel) + { + float snow_alpha = 0.1+0.4* smoothstep(0.2,0.8, 0.3 + snow_thickness_factor +0.0001*(relPos.z +eye_alt -snowlevel) ); +// texel = vec4(dot(vec3(0.2989, 0.5870, 0.1140), texel.rgb)); + texel = mix(texel, vec4(1.0), snow_alpha* smoothstep(snowlevel, snowlevel+200.0, (relPos.z + eye_alt))); + } diff --git a/Shaders/terrain-ALS-detailed.frag b/Shaders/terrain-ALS-detailed.frag index f59040dbd..8bb9922eb 100644 --- a/Shaders/terrain-ALS-detailed.frag +++ b/Shaders/terrain-ALS-detailed.frag @@ -279,6 +279,12 @@ if (quality_level > 3) texel = mix(texel, snow_texel, snow_texel.a* smoothstep(snowlevel, snowlevel+200.0, snow_alpha * (relPos.z + eye_alt)+ (noise_2000m + 0.1 * noise_10m -0.55) *400.0)); } } +else if (relPos.z + eye_alt +500.0 > snowlevel) + { + float snow_alpha = 0.5+0.5* smoothstep(0.2,0.8, 0.3 + snow_thickness_factor +0.0001*(relPos.z +eye_alt -snowlevel) ); +// texel = vec4(dot(vec3(0.2989, 0.5870, 0.1140), texel.rgb)); + texel = mix(texel, vec4(1.0), snow_alpha* smoothstep(snowlevel, snowlevel+200.0, (relPos.z + eye_alt))); + } diff --git a/gui/dialogs/environment-settings.xml b/gui/dialogs/environment-settings.xml index e4d41a913..ea6a4b63e 100644 --- a/gui/dialogs/environment-settings.xml +++ b/gui/dialogs/environment-settings.xml @@ -38,47 +38,6 @@ - - table - 5 - - - 0 - 0 - - left - - - 0 - 1 - 90 - season - left - true - /sim/startup/season - summer - winter - - dialog-apply - season - - - - - - - - - - vbox left @@ -88,42 +47,25 @@ - vbox + hbox left left - - hbox - - - - climate-update - /environment/climate/weather-update - true - - dialog-apply - - - property-toggle - - - - - - climate-update - /environment/climate/environment-update - true - - dialog-apply - - - property-toggle - - - + + + climate-update + /environment/climate/environment-update + true + + dialog-apply + + + property-toggle + +