👽 interstellar delivery

This commit is contained in:
anyreso 2024-10-16 21:43:01 +00:00
parent 547c97bfba
commit 97c8292858
257 changed files with 7309 additions and 4637 deletions

View file

@ -0,0 +1,32 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends OptionButton
func _ready() -> void:
select(Settings.get_value("video", "filter"))
func _on_item_selected(index: int) -> void:
Settings.set_value("video", "filter", index)
# Viewport scale mode setting.
if index == 0: # Bilinear (Fastest)
get_viewport().scaling_3d_mode = Viewport.SCALING_3D_MODE_BILINEAR
# FSR Sharpness is only effective when the scaling mode is FSR 1.0.
%FSRSharpnessLabel.visible = false
%FSRSharpnessSlider.visible = false
elif index == 1: # FSR 1.0 (Fast)
get_viewport().scaling_3d_mode = Viewport.SCALING_3D_MODE_FSR
# FSR Sharpness is only effective when the scaling mode is FSR 1.0.
%FSRSharpnessLabel.visible = true
%FSRSharpnessSlider.visible = true

View file

@ -0,0 +1,39 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends HBoxContainer
@export var min_value : int = 70
@export var max_value : int = 150
@export var step : int = 1
func _ready() -> void:
var value : int = Settings.get_value("video", "fov")
for control : Range in [$SpinBox, $Slider]:
control.min_value = min_value
control.max_value = max_value
control.step = step
control.value = value
_on_value_changed(value)
func _on_value_changed(new_value : int) -> void:
Settings.set_value("video", "fov", new_value)
#
func _on_spin_box_value_changed(new_value : int) -> void:
_on_value_changed(new_value)
$Slider.value = new_value
#
func _on_slider_value_changed(new_value : int) -> void:
_on_value_changed(new_value)
$SpinBox.value = new_value

View file

@ -0,0 +1,26 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends HSlider
func _ready() -> void:
self.value = Settings.get_value("video", "fsr_sharpness")
self.value_changed.emit(self.value)
func _on_value_changed(new_value : float) -> void:
Settings.set_value("video", "fsr_sharpness", new_value)
# Lower FSR sharpness values result in a sharper image.
# Invert the slider so that higher values result in a sharper image,
# which is generally expected from users.
get_viewport().fsr_sharpness = 2.0 - new_value

View file

@ -0,0 +1,24 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends OptionButton
func _ready() -> void:
select(Settings.get_value("video", "fxaa"))
func _on_item_selected(index: int) -> void:
Settings.set_value("video", "fxaa", index)
# Fast approximate anti-aliasing. Much faster than MSAA (and works on alpha scissor edges),
# but blurs the whole scene rendering slightly.
get_viewport().screen_space_aa = int(index == 1) as Viewport.ScreenSpaceAA

View file

@ -0,0 +1,30 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends OptionButton
func _ready() -> void:
select(Settings.get_value("environment", "glow"))
func _on_item_selected(index: int) -> void:
Settings.set_value("environment", "glow", index)
## This is a setting that is attached to the environment.
## If your game requires you to change the environment,
## then be sure to run this function again to make the setting effective.
if index == 0: # Disabled (default)
Game.environment.glow_enabled = false
elif index == 1: # Low
Game.environment.glow_enabled = true
elif index == 2: # High
Game.environment.glow_enabled = true

View file

@ -0,0 +1,32 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends OptionButton
func _ready() -> void:
select(Settings.get_value("quality", "mesh_lod"))
func _on_item_selected(index : int) -> void:
Settings.set_value("quality", "mesh_lod", index)
if index == 0: # Very Low
get_viewport().mesh_lod_threshold = 8.0
if index == 0: # Low
get_viewport().mesh_lod_threshold = 4.0
if index == 1: # Medium
get_viewport().mesh_lod_threshold = 2.0
if index == 2: # High (default)
get_viewport().mesh_lod_threshold = 1.0
if index == 3: # Ultra
# Always use highest LODs to avoid any form of pop-in.
get_viewport().mesh_lod_threshold = 0.0

View file

@ -0,0 +1,39 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends HBoxContainer
@export var min_value : float = .01
@export var max_value : float = 1.
@export var step : float = .01
func _ready() -> void:
var value : float = Settings.get_value("controls", "mouse_sensitivity")
for control : Range in [$SpinBox, $Slider]:
control.min_value = min_value
control.max_value = max_value
control.step = step
control.value = value
_on_value_changed(value)
func _on_value_changed(new_value : float) -> void:
Settings.set_value("controls", "mouse_sensitivity", new_value)
func _on_spin_box_value_changed(new_value : float) -> void:
_on_value_changed(new_value)
$Slider.value = new_value
func _on_slider_value_changed(new_value : float) -> void:
_on_value_changed(new_value)
$SpinBox.value = new_value

View file

@ -0,0 +1,31 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends OptionButton
func _ready() -> void:
select(Settings.get_value("video", "msaa"))
func _on_item_selected(index: int) -> void:
Settings.set_value("video", "msaa", index)
# Multi-sample anti-aliasing. High quality, but slow. It also does not smooth out the edges of
# transparent (alpha scissor) textures.
if index == 0: # Disabled (default)
get_viewport().msaa_3d = Viewport.MSAA_DISABLED
elif index == 1: # 2×
get_viewport().msaa_3d = Viewport.MSAA_2X
elif index == 2: # 4×
get_viewport().msaa_3d = Viewport.MSAA_4X
elif index == 3: # 8×
get_viewport().msaa_3d = Viewport.MSAA_8X

View file

@ -0,0 +1,40 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends HBoxContainer
@export var min_value : float = 0.25
@export var max_value : float = 2
@export var step : float = .05
func _ready() -> void:
var value : float = Settings.get_value("video", "quality")
for control : Range in [$SpinBox, $Slider]:
control.min_value = min_value
control.max_value = max_value
control.step = step
control.value = value
get_viewport().scaling_3d_scale = value
func _on_value_changed(new_value : float) -> void:
Settings.set_value("video", "quality", new_value)
get_viewport().scaling_3d_scale = new_value
func _on_spin_box_value_changed(new_value : float) -> void:
_on_value_changed(new_value)
$Slider.value = new_value
#
func _on_slider_value_changed(new_value : float) -> void:
_on_value_changed(new_value)
$SpinBox.value = new_value

View file

@ -0,0 +1,32 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends OptionButton
func _ready() -> void:
select(Settings.get_value("environment", "sdfgi"))
func _on_item_selected(index: int) -> void:
Settings.set_value("environment", "sdfgi", index)
# This is a setting that is attached to the environment.
# If your game requires you to change the environment,
# then be sure to run this function again to make the setting effective.
if index == 0: # Disabled (default)
Game.environment.sdfgi_enabled = false
elif index == 1: # Low
Game.environment.sdfgi_enabled = true
RenderingServer.gi_set_use_half_resolution(true)
elif index == 2: # High
Game.environment.sdfgi_enabled = true
RenderingServer.gi_set_use_half_resolution(false)

View file

@ -0,0 +1,39 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends OptionButton
func _ready() -> void:
select(Settings.get_value("quality", "shadow_filter"))
func _on_item_selected(index : int) -> void:
Settings.set_value("quality", "shadow_filter", index)
if index == 0: # Very Low
RenderingServer.directional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_HARD)
RenderingServer.positional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_HARD)
if index == 1: # Low
RenderingServer.directional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_VERY_LOW)
RenderingServer.positional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_VERY_LOW)
if index == 2: # Medium (default)
RenderingServer.directional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_LOW)
RenderingServer.positional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_LOW)
if index == 3: # High
RenderingServer.directional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_MEDIUM)
RenderingServer.positional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_MEDIUM)
if index == 4: # Very High
RenderingServer.directional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_HIGH)
RenderingServer.positional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_HIGH)
if index == 5: # Ultra
RenderingServer.directional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_ULTRA)
RenderingServer.positional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_ULTRA)

View file

@ -0,0 +1,56 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends OptionButton
func _ready() -> void:
select(Settings.get_value("quality", "shadow_size"))
func _on_item_selected(index : int) -> void:
Settings.set_value("quality", "shadow_size", index)
if index == 0: # Minimum
RenderingServer.directional_shadow_atlas_set_size(512, true)
# Adjust shadow bias according to shadow resolution.
# Higher resultions can use a lower bias without suffering from shadow acne.
#Settings.set_value("quality", "shadow_bias", 0.06)
#directional_light.shadow_bias = Settings.get_value("quality", "shadow_bias")
# Disable positional (omni/spot) light shadows entirely to further improve performance.
# These often don't contribute as much to a scene compared to directional light shadows.
get_viewport().positional_shadow_atlas_size = 0
if index == 1: # Very Low
RenderingServer.directional_shadow_atlas_set_size(1024, true)
#Settings.set_value("quality", "shadow_bias", 0.04)
#directional_light.shadow_bias = Settings.get_value("quality", "shadow_bias")
get_viewport().positional_shadow_atlas_size = 1024
if index == 2: # Low
RenderingServer.directional_shadow_atlas_set_size(2048, true)
#Settings.set_value("quality", "shadow_bias", 0.03)
#directional_light.shadow_bias = Settings.get_value("quality", "shadow_bias")
get_viewport().positional_shadow_atlas_size = 2048
if index == 3: # Medium (default)
RenderingServer.directional_shadow_atlas_set_size(4096, true)
#Settings.set_value("quality", "shadow_bias", 0.02)
#directional_light.shadow_bias = Settings.get_value("quality", "shadow_bias")
get_viewport().positional_shadow_atlas_size = 4096
if index == 4: # High
RenderingServer.directional_shadow_atlas_set_size(8192, true)
#Settings.set_value("quality", "shadow_bias", 0.01)
#directional_light.shadow_bias = Settings.get_value("quality", "shadow_bias")
get_viewport().positional_shadow_atlas_size = 8192
if index == 5: # Ultra
RenderingServer.directional_shadow_atlas_set_size(16384, true)
#Settings.set_value("quality", "shadow_bias", 0.005)
#directional_light.shadow_bias = Settings.get_value("quality", "shadow_bias")
get_viewport().positional_shadow_atlas_size = 16384

View file

@ -0,0 +1,38 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends OptionButton
func _ready() -> void:
select(Settings.get_value("environment", "ssao"))
func _on_item_selected(index: int) -> void:
Settings.set_value("environment", "ssao", index)
# This is a setting that is attached to the environment.
# If your game requires you to change the environment,
# then be sure to run this function again to make the setting effective.
if index == 0: # Disabled (default)
Game.environment.ssao_enabled = false
elif index == 1: # Very Low
Game.environment.ssao_enabled = true
RenderingServer.environment_set_ssao_quality(RenderingServer.ENV_SSAO_QUALITY_VERY_LOW, true, 0.5, 2, 50, 300)
elif index == 2: # Low
Game.environment.ssao_enabled = true
RenderingServer.environment_set_ssao_quality(RenderingServer.ENV_SSAO_QUALITY_VERY_LOW, true, 0.5, 2, 50, 300)
elif index == 3: # Medium
Game.environment.ssao_enabled = true
RenderingServer.environment_set_ssao_quality(RenderingServer.ENV_SSAO_QUALITY_MEDIUM, true, 0.5, 2, 50, 300)
elif index == 4: # High
Game.environment.ssao_enabled = true
RenderingServer.environment_set_ssao_quality(RenderingServer.ENV_SSAO_QUALITY_HIGH, true, 0.5, 2, 50, 300)

View file

@ -0,0 +1,38 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends OptionButton
func _ready() -> void:
select(Settings.get_value("environment", "ssil"))
func _on_item_selected(index: int) -> void:
Settings.set_value("environment", "ssil", index)
# This is a setting that is attached to the environment.
# If your game requires you to change the environment,
# then be sure to run this function again to make the setting effective.
if index == 0: # Disabled (default)
Game.environment.ssil_enabled = false
if index == 1: # Very Low
Game.environment.ssil_enabled = true
RenderingServer.environment_set_ssil_quality(RenderingServer.ENV_SSIL_QUALITY_VERY_LOW, true, 0.5, 4, 50, 300)
if index == 2: # Low
Game.environment.ssil_enabled = true
RenderingServer.environment_set_ssil_quality(RenderingServer.ENV_SSIL_QUALITY_LOW, true, 0.5, 4, 50, 300)
if index == 3: # Medium
Game.environment.ssil_enabled = true
RenderingServer.environment_set_ssil_quality(RenderingServer.ENV_SSIL_QUALITY_MEDIUM, true, 0.5, 4, 50, 300)
if index == 4: # High
Game.environment.ssil_enabled = true
RenderingServer.environment_set_ssil_quality(RenderingServer.ENV_SSIL_QUALITY_HIGH, true, 0.5, 4, 50, 300)

View file

@ -0,0 +1,35 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends OptionButton
func _ready() -> void:
select(Settings.get_value("environment", "ssr"))
func _on_item_selected(index: int) -> void:
Settings.set_value("environment", "ssr", index)
# This is a setting that is attached to the environment.
# If your game requires you to change the environment,
# then be sure to run this function again to make the setting effective.
if index == 0: # Disabled (default)
Game.environment.ssr_enabled = false
elif index == 1: # Low
Game.environment.ssr_enabled = true
Game.environment.ssr_max_steps = 8
elif index == 2: # Medium
Game.environment.ssr_enabled = true
Game.environment.ssr_max_steps = 32
elif index == 3: # High
Game.environment.ssr_enabled = true
Game.environment.ssr_max_steps = 56

View file

@ -0,0 +1,26 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends OptionButton
func _ready() -> void:
select(Settings.get_value("video", "taa"))
func _on_item_selected(index: int) -> void:
Settings.set_value("video", "taa", index)
# Temporal antialiasing. Smooths out everything including specular aliasing,
# but can introduce ghosting artifacts and blurring in motion.
# Moderate performance cost.
# @WARNING: https://github.com/TokisanGames/Terrain3D/issues/302
# get_viewport().use_taa = index == 1

View file

@ -0,0 +1,42 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends OptionButton
func _ready() -> void:
self.selected = Settings.get_value("ui", "scale")
self.item_selected.emit(self.selected)
func _on_item_selected(index: int) -> void:
Settings.set_value("ui", "scale", clamp(index, 0, 2))
# When the screen changes size, we need to update the 3D
# viewport quality setting. If we don't do this, the viewport will take
# the size from the main viewport.
var new_size := Vector2(
ProjectSettings.get_setting(&"display/window/size/viewport_width"),
ProjectSettings.get_setting(&"display/window/size/viewport_height")
)
# compute new size
if index == 0: # Smaller (66%)
new_size *= 1.5
elif index == 1: # Small (80%)
new_size *= 1.25
elif index == 2: # Medium (100%) (default)
new_size *= 1.
elif index == 3: # Large (133%)
new_size *= .75
elif index == 4: # Larger (200%)
new_size *= .5
# update scale
get_tree().root.set_content_scale_size(new_size)

View file

@ -0,0 +1,30 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends OptionButton
func _ready() -> void:
self.selected = Settings.get_value("environment", "volumetric_fog")
self.item_selected.emit(self.selected)
func _on_item_selected(index: int) -> void:
Settings.set_value("environment", "volumetric_fog", index)
if index == 0: # Disabled (default)
Game.environment.volumetric_fog_enabled = false
if index == 1: # Low
Game.environment.volumetric_fog_enabled = true
RenderingServer.environment_set_volumetric_fog_filter_active(false)
if index == 2: # High
Game.environment.volumetric_fog_enabled = true
RenderingServer.environment_set_volumetric_fog_filter_active(true)

View file

@ -0,0 +1,33 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends OptionButton
func _ready() -> void:
select(Settings.get_value("video", "vsync"))
func _on_item_selected(index : int) -> void:
Settings.set_value("video", "vsync", index)
# Vsync is enabled by default.
# Vertical synchronization locks framerate and makes screen tearing not visible at the cost of
# higher input latency and stuttering when the framerate target is not met.
# Adaptive V-Sync automatically disables V-Sync when the framerate target is not met, and enables
# V-Sync otherwise. This prevents suttering and reduces input latency when the framerate target
# is not met, at the cost of visible tearing.
if index == 0: # Disabled (default)
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED)
elif index == 1: # Adaptive
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_ADAPTIVE)
elif index == 2: # Enabled
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_ENABLED)

View file

@ -0,0 +1,28 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
extends OptionButton
func _ready() -> void:
var window_mode : DisplayServer.WindowMode = Settings.get_value("video", "window_mode")
select(DisplayServer.WINDOW_MODE_WINDOWED if OS.is_debug_build() else window_mode)
func _on_item_selected(index : int) -> void:
Settings.set_value("video", "window_mode", clampi(index, 0, 2))
if index == 0: # Windowed (default)
get_tree().root.set_mode(Window.MODE_WINDOWED)
elif index == 1: # Fullscreen
get_tree().root.set_mode(Window.MODE_FULLSCREEN)
elif index == 2: # Exclusive Fullscreen
get_tree().root.set_mode(Window.MODE_EXCLUSIVE_FULLSCREEN)

View file

@ -0,0 +1,114 @@
# This file is part of open-fpsz.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
class_name SettingsPanelContainer extends PanelContainer
signal closed
# Quality presets.
func _on_very_low_preset_pressed() -> void:
%TAAOptionButton.select(0)
%MSAAOptionButton.select(0)
%FXAAOptionButton.select(0)
%ShadowSizeOptionButton.select(0)
%ShadowFilterOptionButton.select(0)
%MeshLODOptionButton.select(0)
%SDFGIOptionButton.select(0)
%GlowOptionButton.select(0)
%SSAOOptionButton.select(0)
%SSReflectionsOptionButton.select(0)
%SSILOptionButton.select(0)
%VolumetricFogOptionButton.select(0)
func _on_low_preset_pressed() -> void:
%TAAOptionButton.select(0)
%MSAAOptionButton.select(0)
%FXAAOptionButton.select(1)
%ShadowSizeOptionButton.select(1)
%ShadowFilterOptionButton.select(1)
%MeshLODOptionButton.select(1)
%SDFGIOptionButton.select(0)
%GlowOptionButton.select(0)
%SSAOOptionButton.select(0)
%SSReflectionsOptionButton.select(0)
%SSILOptionButton.select(0)
%VolumetricFogOptionButton.select(0)
func _on_medium_preset_pressed() -> void:
%TAAOptionButton.select(1)
%MSAAOptionButton.select(0)
%FXAAOptionButton.select(0)
%ShadowSizeOptionButton.select(2)
%ShadowFilterOptionButton.select(2)
%MeshLODOptionButton.select(1)
%SDFGIOptionButton.select(1)
%GlowOptionButton.select(1)
%SSAOOptionButton.select(1)
%SSReflectionsOptionButton.select(1)
%SSILOptionButton.select(0)
%VolumetricFogOptionButton.select(1)
func _on_high_preset_pressed() -> void:
%TAAOptionButton.select(1)
%MSAAOptionButton.select(0)
%FXAAOptionButton.select(0)
%ShadowSizeOptionButton.select(3)
%ShadowFilterOptionButton.select(3)
%MeshLODOptionButton.select(2)
%SDFGIOptionButton.select(1)
%GlowOptionButton.select(2)
%SSAOOptionButton.select(2)
%SSReflectionsOptionButton.select(2)
%SSILOptionButton.select(2)
%VolumetricFogOptionButton.select(2)
func _on_ultra_preset_pressed() -> void:
%TAAOptionButton.select(1)
%MSAAOptionButton.select(1)
%FXAAOptionButton.select(0)
%ShadowSizeOptionButton.select(4)
%ShadowFilterOptionButton.select(4)
%MeshLODOptionButton.select(3)
%SDFGIOptionButton.select(2)
%GlowOptionButton.select(2)
%SSAOOptionButton.select(3)
%SSReflectionsOptionButton.select(3)
%SSILOptionButton.select(3)
%VolumetricFogOptionButton.select(2)
func _on_apply_pressed() -> void:
Settings.save()
func _on_reset_pressed() -> void:
Settings.reset()
# @TODO: reset also settings user interface to render actual state
func _on_close_pressed() -> void:
hide()
closed.emit()
# Adjustment settings.
#func _on_brightness_slider_value_changed(value: float) -> void:
# The slider value is clamped between 0.5 and 4.
#world_environment.environment.set_adjustment_brightness(value)
#func _on_contrast_slider_value_changed(value: float) -> void:
# The slider value is clamped between 0.5 and 4.
#world_environment.environment.set_adjustment_contrast(value)
#func _on_saturation_slider_value_changed(value: float) -> void:
# The slider value is clamped between 0.5 and 10.
#world_environment.environment.set_adjustment_saturation(value)

View file

@ -0,0 +1,704 @@
[gd_scene load_steps=22 format=3 uid="uid://cvu66n4bm10w3"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/ui_scale.gd" id="1_b2atp"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/settings_panel_container.gd" id="1_c6l0i"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/mouse_sensitivity.gd" id="2_xrhb7"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/fov.gd" id="3_eemxr"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/quality.gd" id="4_n2pno"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/filters.gd" id="5_v6h66"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/fsr_sharpness.gd" id="6_ahtl5"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/window_mode.gd" id="7_rfyne"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/vsync.gd" id="8_tdbn8"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/taa.gd" id="9_ogr52"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/msaa.gd" id="10_hsx6v"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/fxaa.gd" id="11_qd7o2"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/shadow_size.gd" id="12_53fxd"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/shadow_filter.gd" id="13_tast2"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/mesh_lod.gd" id="14_gekxq"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/sdfgi.gd" id="15_yf3v0"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/glow.gd" id="16_pq7lj"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/ssao.gd" id="17_xi4oy"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/ssr.gd" id="18_dprjc"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/ssil.gd" id="19_myuy8"]
[ext_resource type="Script" path="res://interfaces/menus/boot/settings/scripts/volumetric_fog.gd" id="20_wf7u8"]
[node name="SettingsPanelContainer" type="PanelContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
script = ExtResource("1_c6l0i")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 2
[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer"]
custom_minimum_size = Vector2(480, 0)
layout_mode = 2
size_flags_vertical = 3
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/ScrollContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/margin_left = 15
theme_override_constants/margin_top = 20
theme_override_constants/margin_right = 15
theme_override_constants/margin_bottom = 20
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/ScrollContainer/MarginContainer"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
theme_override_constants/separation = 10
[node name="PresetSection" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(0.682353, 0.917647, 1, 1)
text = "Presets"
horizontal_alignment = 1
[node name="Presets" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="VeryLowPreset" type="Button" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets"]
layout_mode = 2
size_flags_horizontal = 3
text = "Very Low"
[node name="LowPreset" type="Button" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets"]
layout_mode = 2
size_flags_horizontal = 3
text = "Low"
[node name="MediumPreset" type="Button" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets"]
layout_mode = 2
size_flags_horizontal = 3
text = "Medium"
[node name="HighPreset" type="Button" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets"]
layout_mode = 2
size_flags_horizontal = 3
text = "High"
[node name="UltraPreset" type="Button" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets"]
layout_mode = 2
size_flags_horizontal = 3
text = "Ultra"
[node name="HSeparator" type="HSeparator" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="UISection" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(0.683425, 0.916893, 1, 1)
text = "User Interface Settings"
horizontal_alignment = 1
[node name="UIGridContainer" type="GridContainer" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
columns = 2
[node name="UIScaleLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/UIGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "UI Scale:"
[node name="UIScaleOptionButton" type="OptionButton" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/UIGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
item_count = 5
selected = 2
popup/item_0/text = "Smaller (66%)"
popup/item_0/id = 0
popup/item_1/text = "Small (80%)"
popup/item_1/id = 1
popup/item_2/text = "Medium (100%)"
popup/item_2/id = 2
popup/item_3/text = "Large (133%)"
popup/item_3/id = 3
popup/item_4/text = "Larger (200%)"
popup/item_4/id = 4
script = ExtResource("1_b2atp")
[node name="ControlsSection" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(0.683425, 0.916893, 1, 1)
text = "Controls Settings"
horizontal_alignment = 1
[node name="ControlsGridContainer" type="GridContainer" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
columns = 2
[node name="SensitivityLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "Mouse sensitivity"
[node name="SensitivityControls" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
script = ExtResource("2_xrhb7")
[node name="SpinBox" type="SpinBox" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer/SensitivityControls"]
layout_mode = 2
[node name="Slider" type="HSlider" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer/SensitivityControls"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 4
[node name="InvertedYLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "Inverted Y"
[node name="InvertedYCheckbox" type="CheckBox" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 0
[node name="ViewportSection" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(0.683425, 0.916893, 1, 1)
text = "Video Settings"
horizontal_alignment = 1
[node name="ViewportGridContainer" type="GridContainer" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
columns = 2
[node name="FOVLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Field of View:"
[node name="FOVControls" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
unique_name_in_owner = true
layout_mode = 2
script = ExtResource("3_eemxr")
[node name="SpinBox" type="SpinBox" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FOVControls"]
layout_mode = 2
min_value = 70.0
max_value = 150.0
value = 90.0
[node name="Slider" type="HSlider" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FOVControls"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 4
min_value = 70.0
max_value = 150.0
value = 90.0
[node name="QualityLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Resolution Scale:"
[node name="QualityControls" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
unique_name_in_owner = true
layout_mode = 2
script = ExtResource("4_n2pno")
[node name="SpinBox" type="SpinBox" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/QualityControls"]
layout_mode = 2
[node name="Slider" type="HSlider" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/QualityControls"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 4
[node name="FilterLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Display Filter:"
[node name="FilterOptionButton" type="OptionButton" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
item_count = 2
selected = 0
popup/item_0/text = "Bilinear (Fastest)"
popup/item_0/id = 0
popup/item_1/text = "FSR 1.0 (Fast)"
popup/item_1/id = 1
script = ExtResource("5_v6h66")
[node name="FSRSharpnessLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "FSR Sharpness:"
[node name="FSRSharpnessSlider" type="HSlider" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 1
max_value = 2.0
step = 0.2
script = ExtResource("6_ahtl5")
[node name="WindowModeLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Window Mode:"
[node name="WindowModeOptionButton" type="OptionButton" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
item_count = 3
selected = 2
popup/item_0/text = "Windowed"
popup/item_0/id = 0
popup/item_1/text = "Fullscreen"
popup/item_1/id = 1
popup/item_2/text = "Exclusive Fullscreen"
popup/item_2/id = 2
script = ExtResource("7_rfyne")
[node name="VsyncLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "V-Sync:"
[node name="VsyncOptionButton" type="OptionButton" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
item_count = 3
selected = 0
popup/item_0/text = "Disabled"
popup/item_0/id = 0
popup/item_1/text = "Adaptive"
popup/item_1/id = 1
popup/item_2/text = "Enabled"
popup/item_2/id = 2
script = ExtResource("8_tdbn8")
[node name="TAALabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
visible = false
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Anti-Aliasing (TAA):"
[node name="TAAOptionButton" type="OptionButton" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
item_count = 2
selected = 0
popup/item_0/text = "Disabled (Fastest)"
popup/item_0/id = 0
popup/item_1/text = "Enabled (Average)"
popup/item_1/id = 1
script = ExtResource("9_ogr52")
[node name="MSAALabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Anti-Aliasing (MSAA):"
[node name="MSAAOptionButton" type="OptionButton" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
item_count = 4
selected = 0
popup/item_0/text = "Disabled (Fastest)"
popup/item_0/id = 0
popup/item_1/text = "2× (Average)"
popup/item_1/id = 1
popup/item_2/text = "4× (Slow)"
popup/item_2/id = 2
popup/item_3/text = "8× (Slower)"
popup/item_3/id = 3
script = ExtResource("10_hsx6v")
[node name="FXAALabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Anti-Aliasing (FXAA):"
[node name="FXAAOptionButton" type="OptionButton" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
item_count = 2
selected = 0
popup/item_0/text = "Disabled (Fastest)"
popup/item_0/id = 0
popup/item_1/text = "Enabled (Fast)"
popup/item_1/id = 1
script = ExtResource("11_qd7o2")
[node name="QualitySection" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(0.683425, 0.916893, 1, 1)
text = "Quality Settings"
horizontal_alignment = 1
[node name="QualityGridContainer" type="GridContainer" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
columns = 2
[node name="ShadowSizeLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Shadow Resolution:"
[node name="ShadowSizeOptionButton" type="OptionButton" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
item_count = 6
selected = 3
popup/item_0/text = "Minimum (Fastest)"
popup/item_0/id = 0
popup/item_1/text = "Very Low (Faster)"
popup/item_1/id = 1
popup/item_2/text = "Low (Fast)"
popup/item_2/id = 2
popup/item_3/text = "Medium (Average)"
popup/item_3/id = 3
popup/item_4/text = "High (Slow)"
popup/item_4/id = 4
popup/item_5/text = "Ultra (Slowest)"
popup/item_5/id = 5
script = ExtResource("12_53fxd")
[node name="ShadowFilterLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Shadow Filtering:"
[node name="ShadowFilterOptionButton" type="OptionButton" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
item_count = 6
selected = 2
popup/item_0/text = "Very Low (Fastest)"
popup/item_0/id = 0
popup/item_1/text = "Low (Faster)"
popup/item_1/id = 1
popup/item_2/text = "Medium (Fast)"
popup/item_2/id = 2
popup/item_3/text = "High (Average)"
popup/item_3/id = 3
popup/item_4/text = "Very High (Slow)"
popup/item_4/id = 4
popup/item_5/text = "Ultra (Slower)"
popup/item_5/id = 5
script = ExtResource("13_tast2")
[node name="MeshLODLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Model Quality:"
[node name="MeshLODOptionButton" type="OptionButton" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
item_count = 4
selected = 2
popup/item_0/text = "Low (Faster)"
popup/item_0/id = 0
popup/item_1/text = "Medium (Fast)"
popup/item_1/id = 1
popup/item_2/text = "High (Average)"
popup/item_2/id = 2
popup/item_3/text = "Ultra (Slow)"
popup/item_3/id = 3
script = ExtResource("14_gekxq")
[node name="EnvironmentSection" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(0.683425, 0.916893, 1, 1)
text = "Effect Settings"
horizontal_alignment = 1
[node name="EnvironmentGridContainer" type="GridContainer" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
columns = 2
[node name="SDFGILabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Global Illumination:"
[node name="SDFGIOptionButton" type="OptionButton" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
item_count = 3
selected = 0
popup/item_0/text = "Disabled (Fastest)"
popup/item_0/id = 0
popup/item_1/text = "Low (Average)"
popup/item_1/id = 1
popup/item_2/text = "High (Slow)"
popup/item_2/id = 2
script = ExtResource("15_yf3v0")
[node name="GlowLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Bloom:"
[node name="GlowOptionButton" type="OptionButton" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
item_count = 3
selected = 0
popup/item_0/text = "Disabled (Fastest)"
popup/item_0/id = 0
popup/item_1/text = "Low (Fast)"
popup/item_1/id = 1
popup/item_2/text = "High (Average)"
popup/item_2/id = 2
script = ExtResource("16_pq7lj")
[node name="SSAOLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Ambient Occlusion:"
[node name="SSAOOptionButton" type="OptionButton" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
item_count = 5
selected = 0
popup/item_0/text = "Disabled (Fastest)"
popup/item_0/id = 0
popup/item_1/text = "Very Low (Fast)"
popup/item_1/id = 1
popup/item_2/text = "Low (Fast)"
popup/item_2/id = 2
popup/item_3/text = "Medium (Average)"
popup/item_3/id = 3
popup/item_4/text = "High (Slow)"
popup/item_4/id = 4
script = ExtResource("17_xi4oy")
[node name="SSReflectionsLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 14
text = "Screen-Space Reflections:"
[node name="SSReflectionsOptionButton" type="OptionButton" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
item_count = 4
selected = 0
popup/item_0/text = "Disabled (Fastest)"
popup/item_0/id = 0
popup/item_1/text = "Low (Average)"
popup/item_1/id = 1
popup/item_2/text = "Medium (Slow)"
popup/item_2/id = 2
popup/item_3/text = "High (Slower)"
popup/item_3/id = 3
script = ExtResource("18_dprjc")
[node name="SSILLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Screen-Space Lighting:"
[node name="SSILOptionButton" type="OptionButton" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
item_count = 5
selected = 0
popup/item_0/text = "Disabled (Fastest)"
popup/item_0/id = 0
popup/item_1/text = "Very Low (Fast)"
popup/item_1/id = 1
popup/item_2/text = "Low (Average)"
popup/item_2/id = 2
popup/item_3/text = "Medium (Slow)"
popup/item_3/id = 3
popup/item_4/text = "High (Slower)"
popup/item_4/id = 4
script = ExtResource("19_myuy8")
[node name="VolumetricFogLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Volumetric Fog:"
[node name="VolumetricFogOptionButton" type="OptionButton" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
item_count = 3
selected = 0
popup/item_0/text = "Disabled (Fastest)"
popup/item_0/id = 0
popup/item_1/text = "Low (Fast)"
popup/item_1/id = 1
popup/item_2/text = "High (Average)"
popup/item_2/id = 2
script = ExtResource("20_wf7u8")
[node name="AdjustmentSection" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
visible = false
layout_mode = 2
theme_override_colors/font_color = Color(0.683425, 0.916893, 1, 1)
text = "Adjustments"
horizontal_alignment = 1
[node name="AdjustmentsGridContainer" type="GridContainer" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
visible = false
layout_mode = 2
columns = 2
[node name="BrightnessLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/AdjustmentsGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Brightness:"
[node name="BrightnessSlider" type="HSlider" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/AdjustmentsGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 1
min_value = 0.5
max_value = 2.0
step = 0.01
value = 1.0
[node name="ContrastLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/AdjustmentsGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Contrast:"
[node name="ContrastSlider" type="HSlider" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/AdjustmentsGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 1
min_value = 0.5
max_value = 2.0
step = 0.01
value = 1.0
[node name="SaturationLabel" type="Label" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/AdjustmentsGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Saturation:"
[node name="SaturationSlider" type="HSlider" parent="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/AdjustmentsGridContainer"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 1
min_value = 0.01
max_value = 2.0
step = 0.01
value = 1.0
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/margin_left = 15
theme_override_constants/margin_top = 10
theme_override_constants/margin_right = 23
theme_override_constants/margin_bottom = 15
[node name="Buttons" type="HBoxContainer" parent="VBoxContainer/MarginContainer"]
layout_mode = 2
[node name="Save" type="Button" parent="VBoxContainer/MarginContainer/Buttons"]
layout_mode = 2
size_flags_horizontal = 3
text = "Save"
[node name="Reset" type="Button" parent="VBoxContainer/MarginContainer/Buttons"]
layout_mode = 2
size_flags_horizontal = 3
text = "Reset"
[node name="Close" type="Button" parent="VBoxContainer/MarginContainer/Buttons"]
layout_mode = 2
size_flags_horizontal = 3
text = "Close"
[connection signal="pressed" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets/VeryLowPreset" to="." method="_on_very_low_preset_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets/LowPreset" to="." method="_on_low_preset_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets/MediumPreset" to="." method="_on_medium_preset_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets/HighPreset" to="." method="_on_high_preset_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets/UltraPreset" to="." method="_on_ultra_preset_pressed"]
[connection signal="item_selected" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/UIGridContainer/UIScaleOptionButton" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/UIGridContainer/UIScaleOptionButton" method="_on_item_selected"]
[connection signal="value_changed" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer/SensitivityControls/SpinBox" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer/SensitivityControls" method="_on_spin_box_value_changed"]
[connection signal="value_changed" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer/SensitivityControls/Slider" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer/SensitivityControls" method="_on_slider_value_changed"]
[connection signal="value_changed" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FOVControls/SpinBox" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FOVControls" method="_on_spin_box_value_changed"]
[connection signal="value_changed" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FOVControls/Slider" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FOVControls" method="_on_slider_value_changed"]
[connection signal="value_changed" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/QualityControls/SpinBox" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/QualityControls" method="_on_spin_box_value_changed"]
[connection signal="value_changed" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/QualityControls/Slider" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/QualityControls" method="_on_slider_value_changed"]
[connection signal="item_selected" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FilterOptionButton" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FilterOptionButton" method="_on_item_selected"]
[connection signal="value_changed" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FSRSharpnessSlider" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FSRSharpnessSlider" method="_on_value_changed"]
[connection signal="item_selected" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/WindowModeOptionButton" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/WindowModeOptionButton" method="_on_item_selected"]
[connection signal="item_selected" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/VsyncOptionButton" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/VsyncOptionButton" method="_on_item_selected"]
[connection signal="item_selected" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/TAAOptionButton" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/TAAOptionButton" method="_on_item_selected"]
[connection signal="item_selected" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/MSAAOptionButton" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/MSAAOptionButton" method="_on_item_selected"]
[connection signal="item_selected" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FXAAOptionButton" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FXAAOptionButton" method="_on_item_selected"]
[connection signal="item_selected" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer/ShadowSizeOptionButton" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer/ShadowSizeOptionButton" method="_on_item_selected"]
[connection signal="item_selected" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer/ShadowFilterOptionButton" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer/ShadowFilterOptionButton" method="_on_item_selected"]
[connection signal="item_selected" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer/MeshLODOptionButton" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer/MeshLODOptionButton" method="_on_item_selected"]
[connection signal="item_selected" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/SDFGIOptionButton" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/SDFGIOptionButton" method="_on_item_selected"]
[connection signal="item_selected" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/GlowOptionButton" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/GlowOptionButton" method="_on_item_selected"]
[connection signal="item_selected" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/SSAOOptionButton" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/SSAOOptionButton" method="_on_item_selected"]
[connection signal="item_selected" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/SSReflectionsOptionButton" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/SSReflectionsOptionButton" method="_on_item_selected"]
[connection signal="item_selected" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/SSILOptionButton" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/SSILOptionButton" method="_on_item_selected"]
[connection signal="item_selected" from="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/VolumetricFogOptionButton" to="VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/VolumetricFogOptionButton" method="_on_item_selected"]
[connection signal="pressed" from="VBoxContainer/MarginContainer/Buttons/Save" to="." method="_on_apply_pressed"]
[connection signal="pressed" from="VBoxContainer/MarginContainer/Buttons/Reset" to="." method="_on_reset_pressed"]
[connection signal="pressed" from="VBoxContainer/MarginContainer/Buttons/Close" to="." method="_on_close_pressed"]