1
0
Fork 0
fgdata/gui/dialogs/rendering.xml
Fernando García Liñán 69387f09f4 Reduce shader complexity and implement graphics presets
- All non-ALS Effects have been removed (except generic ones from model-default and terrain-default).
- The rendering dialog has been reworked to accomodate the changes.
- All necessary properties have been added to graphics-properties.xml
- Five graphics presets have been added: Minimal, Low, Medium, High and Ultra.
- Some unused properties have been removed from defaults.xml
2021-03-31 04:05:34 +02:00

512 lines
13 KiB
XML

<?xml version="1.0"?>
<PropertyList>
<name>rendering</name>
<modal>false</modal>
<layout>vbox</layout>
<padding>20</padding>
<group>
<layout>hbox</layout>
<empty>
<stretch>1</stretch>
</empty>
<text>
<label>Rendering Options</label>
</text>
<empty>
<stretch>1</stretch>
</empty>
<button>
<pref-width>16</pref-width>
<pref-height>16</pref-height>
<legend></legend>
<keynum>27</keynum>
<border>2</border>
<binding>
<command>dialog-close</command>
</binding>
</button>
</group>
<hrule/>
<text>
<visible>
<equals>
<property>/sim/gui/dialogs/rendering/shader-warning</property>
<value>1</value>
</equals>
</visible>
<color>
<red>1.0</red>
<green>0.6</green>
<blue>0.6</blue>
</color>
<label>Warning: Your graphics card may not support complex graphics.</label>
</text>
<group>
<halign>center</halign>
<layout>hbox</layout>
<!-- only for a gap -->
<group>
<layout>vbox</layout>
<default-padding>1</default-padding>
<text>
<label> </label>
</text>
</group>
<group>
<layout>vbox</layout>
<group>
<layout>hbox</layout>
<halign>left</halign>
<checkbox>
<label>Throttle frame rate</label>
<name>frame-rate-throttle</name>
<property>/sim/gui/frame-rate-throttled</property>
<binding>
<command>dialog-apply</command>
<object-name>frame-rate-throttle</object-name>
</binding>
<binding>
<command>nasal</command>
<script>
var throttled = getprop("/sim/gui/frame-rate-throttled");
if (throttled)
setprop("/sim/frame-rate-throttle-hz", 60);
else
setprop("/sim/frame-rate-throttle-hz", 0);
</script>
</binding>
</checkbox>
<empty>
<pref-width>46</pref-width>
</empty>
<slider>
<name>frame-rate</name>
<visible>
<greater-than>
<property>/sim/frame-rate-throttle-hz</property>
<value>0</value>
</greater-than>
</visible>
<min>15.0</min>
<max>70.0</max>
<step>1.0</step>
<live>true</live>
<property>/sim/frame-rate-throttle-hz</property>
<binding>
<command>dialog-apply</command>
<object-name>frame-rate</object-name>
</binding>
</slider>
<text>
<visible>
<greater-than>
<property>/sim/frame-rate-throttle-hz</property>
<value>0</value>
</greater-than>
</visible>
<label>99 Hz</label>
<format>%2.0f Hz</format>
<live>true</live>
<property>/sim/frame-rate-throttle-hz</property>
</text>
</group>
<checkbox>
<halign>left</halign>
<label>Compensate field of view for wider screens</label>
<property>sim/current-view/field-of-view-compensation</property>
<binding>
<command>nasal</command>
<script>view.screenWidthCompens.toggle()</script>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Use disk space for faster loading (DDS Texture Cache)</label>
<name>texture-cache-enabled</name>
<property>/sim/rendering/texture-cache/cache-enabled</property>
<binding>
<command>dialog-apply</command>
<object-name>texture-cache-enabled</object-name>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Use point sprites for runway lights</label>
<property>/sim/rendering/point-sprites</property>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Use triangles for directional lights</label>
<property>/sim/rendering/triangle-directional-lights</property>
<binding>
<command>dialog-apply</command>
</binding>
<enable>
<property>/sim/rendering/point-sprites</property>
</enable>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Animated jetways</label>
<name>jetways</name>
<property>/nasal/jetways/enabled</property>
<binding>
<command>dialog-apply</command>
<object-name>jetways</object-name>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Satellite Photoscenery</label>
<name>satellite-photoscenery</name>
<property>/sim/rendering/photoscenery/enabled</property>
<binding>
<command>dialog-apply</command>
<object-name>satellite-photoscenery</object-name>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Wireframe</label>
<name>wireframe</name>
<property>/sim/rendering/wireframe</property>
<binding>
<command>dialog-apply</command>
<object-name>wireframe</object-name>
</binding>
</checkbox>
<group>
<layout>hbox</layout>
<halign>left</halign>
<text>
<label>Maximum number of aircraft and scenery tiles cached</label>
</text>
<slider>
<name>max-plod</name>
<min>100.0</min>
<max>10000.0</max>
<step>100.0</step>
<fraction>0.17</fraction>
<property>/sim/rendering/max-paged-lod</property>
<binding>
<command>dialog-apply</command>
<object-name>max-plod</object-name>
</binding>
</slider>
<text>
<label>12345</label>
<format>%d</format>
<live>true</live>
<property>/sim/rendering/max-paged-lod</property>
</text>
</group>
<text>
<color>
<red>1.0</red>
<green>0.6</green>
<blue>0.6</blue>
</color>
<label>Warning: High values use a lot amount of memory and GPU</label>
<visible>
<greater-than>
<property>/sim/rendering/max-paged-lod</property>
<value>500.0</value>
</greater-than>
</visible>
</text>
<hrule/>
<group>
<layout>table</layout>
<group>
<layout>hbox</layout>
<row>0</row>
<col>0</col>
<visible>
<property>/sim/rendering/preset-active</property>
</visible>
<text>
<halign>left</halign>
<label>Graphics Quality</label>
</text>
<combo>
<name>graphics-preset</name>
<pref-width>150</pref-width>
<property>/sim/gui/dialogs/rendering/preset</property>
<properties>/sim/gui/dialogs/rendering/presets-list</properties>
<binding>
<command>dialog-apply</command>
<object-name>graphics-preset</object-name>
</binding>
<binding>
<command>nasal</command>
<script>
fgcommand("apply-graphics-preset", props.Node.new({'preset-name': getprop("/sim/gui/dialogs/rendering/preset")}));
</script>
</binding>
</combo>
</group>
<group>
<layout>hbox</layout>
<row>0</row>
<col>0</col>
<visible>
<not>
<property>/sim/rendering/preset-active</property>
</not>
</visible>
<button>
<legend>Advanced Options</legend>
<halign>left</halign>
<binding>
<command>dialog-show</command>
<dialog-name>advanced-graphics-options</dialog-name>
</binding>
<binding>
<command>dialog-close</command>
<dialog-name>rendering</dialog-name>
</binding>
<pref-width>200</pref-width>
</button>
</group>
<checkbox>
<halign>left</halign>
<row>0</row>
<col>1</col>
<label>Custom</label>
<name>custom-settings</name>
<property>/sim/gui/dialogs/rendering/custom-settings</property>
<binding>
<command>dialog-apply</command>
<object-name>custom-settings</object-name>
</binding>
<binding>
<command>nasal</command>
<script>
setprop("/sim/rendering/preset-active", !getprop("/sim/gui/dialogs/rendering/custom-settings"));
</script>
</binding>
</checkbox>
</group>
<group>
<layout>table</layout>
<textbox>
<visible>
<property>/sim/rendering/preset-active</property>
</visible>
<row>0</row>
<col>0</col>
<name>preset-description</name>
<halign>fill</halign>
<stretch>true</stretch>
<pref-width>400</pref-width>
<pref-height>60</pref-height>
<slider>15</slider>
<editable>false</editable>
<wrap>true</wrap>
<live>true</live>
<top-line>0</top-line>
<property>/sim/rendering/preset-description</property>
</textbox>
<button>
<visible>
<not>
<property>/sim/rendering/preset-active</property>
</not>
</visible>
<row>0</row>
<col>0</col>
<legend>Save custom settings to file</legend>
<pref-width>200</pref-width>
<binding>
<command>nasal</command>
<script>
var save = func(n) fgcommand("save-graphics-preset", props.Node.new({ path: n.getValue() }));
custom_preset_sel = gui.FileSelector.new(save,
"Save Custom Settings", "Save", ["*.xml"],
getprop("/sim/fg-home"), "custom-preset.xml");
custom_preset_sel.open();
</script>
</binding>
</button>
</group>
<hrule/>
<group>
<layout>hbox</layout>
<checkbox>
<halign>left</halign>
<label>WS3.0 (Experimental - requires OSG 3.6)</label>
<name>ws30</name>
<property>/scenery/use-vpb</property>
<enable>
<property>/sim/gui/dialogs/rendering/vpb-available</property>
</enable>
<binding>
<command>dialog-apply</command>
<object-name>ws30</object-name>
</binding>
</checkbox>
</group>
<group>
<layout>hbox</layout>
<halign>right</halign>
<text>
<enable>
<equals>
<property>/scenery/use-vpb</property>
<value>true</value>
</equals>
</enable>
<label>Elevation delta below airports</label>
</text>
<slider>
<name>elev-delta</name>
<enable>
<equals>
<property>/scenery/use-vpb</property>
<value>true</value>
</equals>
</enable>
<min>0.0</min>
<max>20.0</max>
<step>1.0</step>
<fraction>0.17</fraction>
<property>/scenery/elevation-mesh/constraint-gap-m</property>
<binding>
<command>dialog-apply</command>
<object-name>elev-delta</object-name>
</binding>
</slider>
<text>
<label>1234567890</label>
<enable>
<equals>
<property>/scenery/use-vpb</property>
<value>true</value>
</equals>
</enable>
<format>%2dm</format>
<live>true</live>
<property>/scenery/elevation-mesh/constraint-gap-m</property>
</text>
</group>
<text>
<visible>
<property>/sim/rendering/restart-required</property>
</visible>
<color>
<red>1.0</red>
<green>0.6</green>
<blue>0.6</blue>
</color>
<label>Some changes require a complete restart to be applied.</label>
</text>
</group>
<!-- only for a gap -->
<group>
<layout>vbox</layout>
<default-padding>1</default-padding>
<text>
<label> </label>
</text>
</group>
</group>
<hrule/>
<button>
<legend> OK </legend>
<default>true</default>
<binding>
<command>nasal</command>
<script>
if (getprop("/sim/rendering/scenery-reload-required")) {
fgcommand("reinit", props.Node.new({"subsystem": "scenery"}));
}
if (getprop("/sim/rendering/compositor-reload-required")) {
fgcommand("reload-compositor");
}
</script>
</binding>
<binding>
<command>dialog-close</command>
</binding>
</button>
<nasal>
<open>
<![CDATA[
setprop("/sim/gui/frame-rate-throttled", (getprop("/sim/frame-rate-throttle-hz") > 0));
setprop("/sim/gui/dialogs/rendering/custom-settings", !getprop("/sim/rendering/preset-active"));
# Intel GPU warning
var vendor = getprop("/sim/rendering/gl-vendor");
if (vendor != nil) {
vendor = string.lc(vendor);
if (find("intel", vendor) != -1) {
setprop("/sim/gui/dialogs/rendering/shader-warning", 1);
} else {
setprop("/sim/gui/dialogs/rendering/shader-warning", 0);
}
}
# populate the presets combo based on the registered presets
fgcommand('list-graphics-presets', props.Node.new({
'destination-path': '/sim/gui/dialogs/rendering/presets-list',
'as-combobox-values':1,
'clear-destination':1,
}));
# WS 3.0
var osg_version = getprop("/sim/version/openscenegraph");
if ((osg_version != nil) and (find("3.6", osg_version) == 0 or find("3.7", osg_version) == 0)) {
# Currently vpb requires OSG 3.6 specifically.
setprop("/sim/gui/dialogs/rendering/vpb-available", 1);
} else {
setprop("/sim/gui/dialogs/rendering/vpb-available", 0);
}
]]>
</open>
</nasal>
</PropertyList>