|
From: <fli...@li...> - 2021-01-19 10:11:00
|
ehofman pushed a commit to branch next
in repository fgdata.
The following commit(s) were added to refs/heads/next by this push:
new 40e871a91 Implement a simple snow shader for the low quality levels
40e871a91 is described below
SF URL: http://sourceforge.net/p/flightgear/fgdata/ci/40e871a9113c389944c0aeebf376399d10340ab8/
Commit: 40e871a9113c389944c0aeebf376399d10340ab8
Author: Erik Hofman
Committer: Erik Hofman
AuthorDate: Tue Jan 19 11:10:44 2021 +0100
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 @@
<texture>Terrain/water.png</texture>
</material>
+ <material>
+ <effect>Effects/water-inland</effect>
+ <name>Stream</name>
+ <name>Canal</name>
+ <texture>Terrain/water-lake.png</texture>
+ <xsize>400</xsize>
+ <ysize>400</ysize>
+ <ambient>
+ <r>0.0</r>
+ <g>0.0</g>
+ <b>0.0</b>
+ <a>1.0</a>
+ </ambient>
+ <diffuse>
+ <r>0.5</r>
+ <g>0.5</g>
+ <b>0.5</b>
+ <a>1.0</a>
+ </diffuse>
+ <specular>
+ <r>0.3</r>
+ <g>0.3</g>
+ <b>0.3</b>
+ <a>1.0</a>
+ </specular>
+ <shininess>1.2</shininess>
+ <solid>0</solid>
+ <rolling-friction>1.5</rolling-friction>
+ <bumpiness>0.6</bumpiness>
+ </material>
+
<material>
<effect>Effects/water-inland</effect>
<name>Lake</name>
<name>Pond</name>
<name>Reservoir</name>
- <name>Stream</name>
- <name>Canal</name>
<name>Lagoon</name>
<name>Estuary</name>
<name>Watercourse</name>
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 @@
<hrule/>
- <group>
- <layout>table</layout>
- <default-padding>5</default-padding>
-
- <text>
- <row>0</row>
- <col>0</col>
- <label> Ground Textures:</label>
- <halign>left</halign>
- </text>
- <combo>
- <row>0</row>
- <col>1</col>
- <pref-width>90</pref-width>
- <name>season</name>
- <halign>left</halign>
- <live>true</live>
- <property>/sim/startup/season</property>
- <value>summer</value>
- <value>winter</value>
- <binding>
- <command>dialog-apply</command>
- <object-name>season</object-name>
- </binding>
- </combo>
-
- <button>
- <row>0</row>
- <col>2</col>
- <legend>Reload Scenery</legend>
- <binding>
- <command>reinit</command>
- <subsystem>scenery</subsystem>
- </binding>
- </button>
-
- </group>
-
- <hrule/>
-
-
<group>
<layout>vbox</layout>
<halign>left</halign>
@@ -88,42 +47,25 @@
</text>
<group>
- <layout>vbox</layout>
+ <layout>hbox</layout>
<halign>left</halign>
<text>
<label> </label>
<halign>left</halign>
</text>
- <group>
- <layout>hbox</layout>
-
- <checkbox>
- <label> Climate updates weather</label>
- <name>climate-update</name>
- <property>/environment/climate/weather-update</property>
- <live>true</live>
- <binding>
- <command>dialog-apply</command>
- </binding>
- <binding>
- <command>property-toggle</command>
- </binding>
- </checkbox>
-
- <checkbox>
- <label> Climate updates environment</label>
- <name>climate-update</name>
- <property>/environment/climate/environment-update</property>
- <live>true</live>
- <binding>
- <command>dialog-apply</command>
- </binding>
- <binding>
- <command>property-toggle</command>
- </binding>
- </checkbox>
- </group>
+ <checkbox>
+ <label> Climate updates environment</label>
+ <name>climate-update</name>
+ <property>/environment/climate/environment-update</property>
+ <live>true</live>
+ <binding>
+ <command>dialog-apply</command>
+ </binding>
+ <binding>
+ <command>property-toggle</command>
+ </binding>
+ </checkbox>
<checkbox>
<label> Set maximum snow level from weather</label>
|