diff --git a/Nasal/gui.nas b/Nasal/gui.nas
index ce648a89e..ce0f9abfa 100644
--- a/Nasal/gui.nas
+++ b/Nasal/gui.nas
@@ -1316,3 +1316,37 @@ _setlistener("/sim/sound/chatter/enabled", func {
setprop("/nasal/atc-chatter/enabled", getprop("/sim/sound/chatter/enabled"));
});
+##
+# overwrite custom shader settings when quality-level is set on startup
+var qualityLevel = getprop("/sim/rendering/shaders/quality-level");
+if (qualityLevel == -1) {
+ setprop("/sim/rendering/shaders/custom-settings",1);
+}
+elsif (qualityLevel != nil) {
+ setprop("/sim/rendering/shaders/custom-settings",0);
+ setprop("/sim/rendering/shaders/quality-level-internal",qualityLevel);
+}
+# overwrite custom shader settings when quality-level is set through the slider
+# in the Rendering Options dialog
+var update_shader_settings = func() {
+ if (!getprop("/sim/rendering/shaders/custom-settings")){
+ var qualityLvl = getprop("/sim/rendering/shaders/quality-level-internal");
+ setprop("/sim/rendering/shaders/landmass",qualityLvl);
+ setprop("/sim/rendering/shaders/urban",qualityLvl);
+ setprop("/sim/rendering/shaders/water",qualityLvl);
+ if (qualityLvl >= 3.0){
+ qualityLvl = 3.0;
+ }
+ setprop("/sim/rendering/shaders/model",qualityLvl);
+ if (qualityLvl >= 1.0){
+ qualityLvl = 1.0;
+ }
+ setprop("/sim/rendering/shaders/contrails",qualityLvl);
+ setprop("/sim/rendering/shaders/crop",qualityLvl);
+ setprop("/sim/rendering/shaders/generic",qualityLvl);
+ setprop("/sim/rendering/shaders/transition",qualityLvl);
+ }
+};
+_setlistener("/sim/rendering/shaders/custom-settings", func { update_shader_settings() } );
+_setlistener("/sim/rendering/shaders/quality-level-internal", func { update_shader_settings() } );
+update_shader_settings();
\ No newline at end of file
diff --git a/gui/dialogs/rendering.xml b/gui/dialogs/rendering.xml
index 3852848b9..5a1040e7b 100644
--- a/gui/dialogs/rendering.xml
+++ b/gui/dialogs/rendering.xml
@@ -204,6 +204,9 @@
right
+
+ /sim/rendering/random-vegetation
+
vegetation-density
@@ -220,6 +223,9 @@
%.2f
true
/sim/rendering/vegetation-density
+
+ /sim/rendering/random-vegetation
+
@@ -280,9 +286,6 @@
cloud-density
-
- /sim/rendering/clouds3d-enable
-
0
1.0
/sim/rendering/clouds3d-density
@@ -321,9 +324,6 @@
cloud-vis-range
-
- /sim/rendering/clouds3d-enable
-
1000.0
45000.0
/sim/rendering/clouds3d-vis-range
@@ -367,90 +367,84 @@
- vbox
- 4
-
- 0
-
+ table
+
+
left
-
-
- 0
-
- left
-
-
-
-
- hbox
-
-
-
-
-
- quality-level
- 0.0
- 5.0
- 1.0
- 0.17
- /sim/rendering/shaders/quality-level
+ 0
+ 0
+
+ custom-settings
+ /sim/rendering/shaders/custom-settings
dialog-apply
- quality-level
+ custom-settings
-
-
-
-
-
-
- (%1.0f)
- true
- /sim/rendering/shaders/quality-level
-
-
-
-
- hbox
-
-
+
+
- vbox
+ hbox
+ 1
+ 0
+
+
+ /sim/rendering/shaders/custom-settings
+
+
+
+ hbox
+
-
-
- /sim/rendering/shaders/quality-level
-
-
-
- left
-
- 1.0
- 0.6
- 0.6
-
+
+
+
+ quality-level
+ 0.0
+ 5.0
+ 1.0
+ 0.17
+ /sim/rendering/shaders/quality-level-internal
+
+ dialog-apply
+ quality-level
+
+
+
+
-
-
- /sim/rendering/shaders/quality-level
-
-
-
- left
-
- 1.0
- 0.6
- 0.6
-
+
+ (%1.0f)
+ true
+ /sim/rendering/shaders/quality-level-internal
+
+
+
+ hbox
+ 1
+ 0
+
+ /sim/rendering/shaders/custom-settings
+
+
+
+
+
+
@@ -606,25 +600,6 @@
gui.enable_widgets(cmdarg(), "shadows-debug", getprop("/sim/gui/devel-widgets"));
-
- # overwrite custom shader settings on quality-slider input
- _setlistener("/sim/rendering/shaders/quality-level", func {
- var qualityLevel = getprop("/sim/rendering/shaders/quality-level");
- setprop("/sim/rendering/shaders/landmass",qualityLevel);
- setprop("/sim/rendering/shaders/urban",qualityLevel);
- setprop("/sim/rendering/shaders/water",qualityLevel);
- if (qualityLevel >= 3.0){
- qualityLevel = 3.0;
- }
- setprop("/sim/rendering/shaders/model",qualityLevel);
- if (qualityLevel >= 1.0){
- qualityLevel = 1.0;
- }
- setprop("/sim/rendering/shaders/contrails",qualityLevel);
- setprop("/sim/rendering/shaders/crop",qualityLevel);
- setprop("/sim/rendering/shaders/generic",qualityLevel);
- setprop("/sim/rendering/shaders/transition",qualityLevel);
- });
diff --git a/gui/dialogs/shaders.xml b/gui/dialogs/shaders.xml
index 60910fecb..de0f6140c 100644
--- a/gui/dialogs/shaders.xml
+++ b/gui/dialogs/shaders.xml
@@ -331,14 +331,25 @@
+
+
+ hbox
-
+
+
+
diff --git a/preferences.xml b/preferences.xml
index 6344e8db2..eb2d2febe 100644
--- a/preferences.xml
+++ b/preferences.xml
@@ -69,6 +69,7 @@ Started September 2000 by David Megginson, david@megginson.com
5
8
+ false
1.0
1.0
1.0
@@ -78,7 +79,7 @@ Started September 2000 by David Megginson, david@megginson.com
1.0
1.0
1.0
- 3.0
+ 3.0
0.003