diff --git a/core/daynight/FogNoise.tres b/core/daynight/FogNoise.tres new file mode 100644 index 0000000..4388d03 --- /dev/null +++ b/core/daynight/FogNoise.tres @@ -0,0 +1,7 @@ +[gd_resource type="NoiseTexture2D" format=3 uid="uid://b2xcpt2y8v32x"] + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_oqwsk"] + +[resource] +noise = SubResource("FastNoiseLite_oqwsk") +seamless = true diff --git a/core/daynight/environment_management.tscn b/core/daynight/environment_management.tscn index b644c93..5a88fd5 100644 --- a/core/daynight/environment_management.tscn +++ b/core/daynight/environment_management.tscn @@ -9,6 +9,7 @@ [ext_resource type="Material" uid="uid://codq5gx71rj4o" path="res://core/daynight/environment_dust_material.tres" id="8_amaf0"] [ext_resource type="Shader" uid="uid://bkn6eqgbn37jx" path="res://core/daynight/blur.gdshader" id="9_amaf0"] [ext_resource type="Shader" uid="uid://b5wa82soyhsqm" path="res://core/daynight/environment_shadows.gdshader" id="10_tuauy"] +[ext_resource type="Texture2D" uid="uid://b2xcpt2y8v32x" path="res://core/daynight/FogNoise.tres" id="11_tuauy"] [ext_resource type="FastNoiseLite" uid="uid://c0mtwrkptjcuw" path="res://core/daynight/environment_shadows_noise_clouds.tres" id="11_yn8v8"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_ruhh7"] @@ -248,6 +249,22 @@ shader_parameter/fade_end = 800.000035625 shader_parameter/height_fade_start = 10.0 shader_parameter/height_fade_end = 50.0 +[sub_resource type="QuadMesh" id="QuadMesh_yn8v8"] +size = Vector2(2, 2) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_sxgg7"] +render_priority = 2 +shader = ExtResource("2_r4tfj") +shader_parameter/fog_noise = ExtResource("11_tuauy") +shader_parameter/use_red_as_alpha = true +shader_parameter/fog_color = Color(0.8, 0.8509804, 0.9019608, 0.2509804) +shader_parameter/scroll_speed = Vector2(0, 0.01) +shader_parameter/texture_scale = Vector2(1, 1) +shader_parameter/edge_softness_y = 0.16400000779 +shader_parameter/edge_softness_x = 0.5 +shader_parameter/night_intensity = 0.0 +shader_parameter/sun_color = Color(1, 1, 1, 1) + [node name="EnvironmentManager" type="Node3D" unique_id=1611939731 node_paths=PackedStringArray("particles_wind", "particles_snow", "particles_fireflies", "particles_rain", "environment_dust", "blur", "environment_shadows")] script = ExtResource("1_wecen") environment_config = SubResource("Resource_r4tfj") @@ -271,6 +288,7 @@ draw_pass_1 = SubResource("QuadMesh_b5atu") [node name="Particles_Wind" type="GPUParticles3D" parent="." unique_id=1238214694] transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 50, 0) cast_shadow = 0 +emitting = false amount = 25 lifetime = 3.0 fixed_fps = 60 @@ -318,3 +336,15 @@ mouse_filter = 2 extra_cull_margin = 16384.0 mesh = SubResource("QuadMesh_sxgg7") surface_material_override/0 = SubResource("ShaderMaterial_oqt1s") + +[node name="Fog" type="Node3D" parent="." unique_id=1626352238] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Fog" unique_id=96635311] +transform = Transform3D(-42.075005, 7.553328e-06, 1.7196172e-13, 0, -3.7766642e-06, 45, 3.6783138e-06, 86.4, 1.9670128e-06, -67, 14, 0) +mesh = SubResource("QuadMesh_yn8v8") +surface_material_override/0 = SubResource("ShaderMaterial_sxgg7") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="Fog" unique_id=10121049] +transform = Transform3D(-42.075005, 7.553328e-06, 1.7196172e-13, 0, -3.7766642e-06, 45, 3.6783138e-06, 86.4, 1.9670128e-06, 67, 14, 0) +mesh = SubResource("QuadMesh_yn8v8") +surface_material_override/0 = SubResource("ShaderMaterial_sxgg7") diff --git a/core/daynight/environment_manager.gd b/core/daynight/environment_manager.gd index 6309d60..42ad37a 100644 --- a/core/daynight/environment_manager.gd +++ b/core/daynight/environment_manager.gd @@ -28,6 +28,7 @@ const WEATHER_PLAIN_SHADER: Material = preload("res://core/daynight/weather_plai #environment nodes @onready var sun: DirectionalLight3D = $"../DirectionalLight3D" @onready var environment: WorldEnvironment = $"../WorldEnvironment" +@onready var fog_node: Node3D = $Fog var day_night_controller: DayNightController var weather_controller: WeatherController @@ -39,6 +40,7 @@ func _ready() -> void: #connect shader when new node is added get_tree().node_added.connect(_on_tree_node_added) + UIEvents.toggle_fog.connect(toggle_fog) #set noise texture 2d to materials in special group ApplyWindNoiseToMaterials() @@ -158,3 +160,7 @@ func select_day_time(normalized_time: float) -> void: if weather_controller: weather_controller.day_time = day_time + +func toggle_fog(value: bool) -> void: + if fog_node: + fog_node.visible = value diff --git a/core/daynight/weather_overlay.tres b/core/daynight/weather_overlay.tres index 66f2509..03906a7 100644 --- a/core/daynight/weather_overlay.tres +++ b/core/daynight/weather_overlay.tres @@ -1,7 +1,6 @@ [gd_resource type="ShaderMaterial" format=3 uid="uid://cn5vw7unbqgve"] [ext_resource type="Shader" uid="uid://dh3j2jp6defuk" path="res://core/daynight/weather_overlay.gdshader" id="1_weather"] -[ext_resource type="Texture2D" uid="uid://bpswbjh4jj1ou" path="res://core/daynight/noise.tres" id="2_noise"] [resource] render_priority = 0 @@ -20,4 +19,3 @@ shader_parameter/wet_roughness = 0.05 shader_parameter/rain_normal_strength = 0.4 shader_parameter/puddle_noise_scale = 0.08 shader_parameter/puddle_threshold = 0.45 -shader_parameter/noise_texture = ExtResource("2_noise") diff --git a/core/environment_config.gd b/core/environment_config.gd index 9ea48d2..b2543aa 100644 --- a/core/environment_config.gd +++ b/core/environment_config.gd @@ -83,6 +83,7 @@ extends Resource @export var enable_dust: bool = false #Floating dust particles overlay @export var enable_blur: bool = true #Screen blur effect @export var enable_environment_shadows: bool = true #Cloud shadow projection on terrain +@export var enable_fog: bool = true #Enable fog around the train @export var blur_amount: float = 0.6 @export_group("Dust") diff --git a/core/ui_events.gd b/core/ui_events.gd index 214202e..fcd8ceb 100644 --- a/core/ui_events.gd +++ b/core/ui_events.gd @@ -27,6 +27,8 @@ signal toggle_dust(value: bool) signal toggle_blur(value: bool) @warning_ignore("unused_signal") signal toggle_shadows(value: bool) +@warning_ignore("unused_signal") +signal toggle_fog(value: bool) #day cycle signals @warning_ignore("unused_signal") diff --git a/docs/museums/biome_generator/museum_map.tscn b/docs/museums/biome_generator/museum_map.tscn index 78bff73..98a5c07 100644 --- a/docs/museums/biome_generator/museum_map.tscn +++ b/docs/museums/biome_generator/museum_map.tscn @@ -233,9 +233,9 @@ text = "Rain" [node name="Wind" type="CheckButton" parent="Control" unique_id=1013004982] layout_mode = 0 offset_left = 8.0 -offset_top = 231.0 +offset_top = 256.0 offset_right = 96.0 -offset_bottom = 262.0 +offset_bottom = 287.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_focus_color = Color(1, 1, 1, 1) theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) @@ -247,18 +247,18 @@ text = "Wind" [node name="WindSlider" type="HSlider" parent="Control" unique_id=28050098] layout_mode = 0 offset_left = 103.0 -offset_top = 238.0 +offset_top = 263.0 offset_right = 187.0 -offset_bottom = 254.0 +offset_bottom = 279.0 max_value = 1.0 step = 0.01 [node name="Fireflies" type="CheckButton" parent="Control" unique_id=1046228444] layout_mode = 0 offset_left = 8.0 -offset_top = 259.0 +offset_top = 284.0 offset_right = 117.0 -offset_bottom = 290.0 +offset_bottom = 315.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_focus_color = Color(1, 1, 1, 1) theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) @@ -377,9 +377,9 @@ text = "Shadows" [node name="RandomWeather" type="Button" parent="Control" unique_id=1047710802] layout_mode = 0 offset_left = 12.0 -offset_top = 289.0 -offset_right = 157.0 -offset_bottom = 320.0 +offset_top = 314.0 +offset_right = 195.0 +offset_bottom = 345.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_focus_color = Color(1, 1, 1, 1) theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) @@ -398,6 +398,20 @@ theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_outline_color = Color(1, 1, 1, 1) text = "Weather: Clear" +[node name="Fog" type="CheckButton" parent="Control" unique_id=2101743368] +layout_mode = 0 +offset_left = 7.0 +offset_top = 228.0 +offset_right = 97.0 +offset_bottom = 259.0 +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_colors/font_focus_color = Color(1, 1, 1, 1) +theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) +theme_override_colors/font_hover_color = Color(1, 1, 1, 1) +theme_override_colors/font_hover_pressed_color = Color(1, 1, 1, 1) +theme_override_colors/font_outline_color = Color(1, 1, 1, 1) +text = "Fog" + [connection signal="toggled" from="Control/Snow" to="Control" method="_on_snow_toggled"] [connection signal="toggled" from="Control/Rain" to="Control" method="_on_rain_toggled"] [connection signal="toggled" from="Control/Wind" to="Control" method="_on_wind_toggled"] @@ -411,3 +425,4 @@ text = "Weather: Clear" [connection signal="toggled" from="Control/Pause" to="Control" method="_on_pause_toggled"] [connection signal="toggled" from="Control/Shadows" to="Control" method="_on_shadows_toggled"] [connection signal="pressed" from="Control/RandomWeather" to="Control" method="_on_random_weather_pressed"] +[connection signal="toggled" from="Control/Fog" to="Control" method="_on_fog_toggled"] diff --git a/docs/museums/daynight/control.gd b/docs/museums/daynight/control.gd index a4bcb19..8668dfb 100644 --- a/docs/museums/daynight/control.gd +++ b/docs/museums/daynight/control.gd @@ -96,3 +96,6 @@ func _on_day_time_option_changed(index: int) -> void: func _on_option_button_item_selected(index: int) -> void: UIEvents.time_option_item_changed.emit(index) + +func _on_fog_toggled(toggled_on: bool) -> void: + UIEvents.toggle_fog.emit(toggled_on) diff --git a/docs/museums/daynight/museum_daynight.tscn b/docs/museums/daynight/museum_daynight.tscn index fac159f..d928195 100644 --- a/docs/museums/daynight/museum_daynight.tscn +++ b/docs/museums/daynight/museum_daynight.tscn @@ -206,9 +206,9 @@ text = "Fireflies" [node name="RandomWeather" type="Button" parent="Control" unique_id=1114190563] layout_mode = 0 offset_left = 24.0 -offset_top = 121.0 -offset_right = 169.0 -offset_bottom = 152.0 +offset_top = 157.0 +offset_right = 207.0 +offset_bottom = 188.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_focus_color = Color(1, 1, 1, 1) theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) @@ -244,9 +244,9 @@ text = "Storm" [node name="DayTimeLabel" type="Label" parent="Control" unique_id=1673596218] layout_mode = 0 offset_left = 26.0 -offset_top = 170.0 +offset_top = 211.0 offset_right = 360.0 -offset_bottom = 193.0 +offset_bottom = 234.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_outline_color = Color(1, 1, 1, 1) text = "Time 00:00" @@ -254,18 +254,18 @@ text = "Time 00:00" [node name="DayTimeSlider" type="HSlider" parent="Control" unique_id=530788076] layout_mode = 0 offset_left = 26.0 -offset_top = 194.0 +offset_top = 235.0 offset_right = 205.0 -offset_bottom = 210.0 +offset_bottom = 251.0 max_value = 1.0 step = 0.01 [node name="DayTimeOptions" type="OptionButton" parent="Control" unique_id=1354705309] layout_mode = 0 offset_left = 25.0 -offset_top = 217.0 +offset_top = 258.0 offset_right = 136.0 -offset_bottom = 248.0 +offset_bottom = 289.0 selected = 1 item_count = 4 popup/item_0/text = "Sunrise" @@ -280,9 +280,9 @@ popup/item_3/id = 4 [node name="Dust" type="CheckButton" parent="Control" unique_id=2023312048] layout_mode = 0 offset_left = 21.0 -offset_top = 252.0 +offset_top = 293.0 offset_right = 150.0 -offset_bottom = 283.0 +offset_bottom = 324.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_focus_color = Color(1, 1, 1, 1) theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) @@ -295,9 +295,9 @@ text = "Dust" [node name="Blur" type="CheckButton" parent="Control" unique_id=1758807681] layout_mode = 0 offset_left = 21.0 -offset_top = 280.0 +offset_top = 321.0 offset_right = 150.0 -offset_bottom = 311.0 +offset_bottom = 352.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_focus_color = Color(1, 1, 1, 1) theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) @@ -310,9 +310,9 @@ text = "Blur" [node name="Pause" type="CheckButton" parent="Control" unique_id=156986934] layout_mode = 0 offset_left = 212.0 -offset_top = 186.0 +offset_top = 227.0 offset_right = 307.0 -offset_bottom = 217.0 +offset_bottom = 258.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_focus_color = Color(1, 1, 1, 1) theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) @@ -324,9 +324,9 @@ text = "Pause" [node name="Shadows" type="CheckButton" parent="Control" unique_id=1751516495] layout_mode = 0 offset_left = 21.0 -offset_top = 304.0 +offset_top = 345.0 offset_right = 150.0 -offset_bottom = 335.0 +offset_bottom = 376.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_focus_color = Color(1, 1, 1, 1) theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) @@ -345,6 +345,20 @@ offset_bottom = 90.0 max_value = 1.0 step = 0.01 +[node name="Fog" type="CheckButton" parent="Control" unique_id=24312462] +layout_mode = 0 +offset_left = 20.0 +offset_top = 118.0 +offset_right = 110.0 +offset_bottom = 149.0 +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_colors/font_focus_color = Color(1, 1, 1, 1) +theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) +theme_override_colors/font_hover_color = Color(1, 1, 1, 1) +theme_override_colors/font_hover_pressed_color = Color(1, 1, 1, 1) +theme_override_colors/font_outline_color = Color(1, 1, 1, 1) +text = "Fog" + [node name="Scene" type="Node" parent="." unique_id=701973010] [node name="chunk_country_corner_01" parent="Scene" unique_id=200417581 instance=ExtResource("14_iu8wf")] @@ -389,6 +403,7 @@ transform = Transform3D(-0.85, 0, -1.2834644e-07, 0, 0.85, 0, 1.2834644e-07, 0, [connection signal="toggled" from="Control/Pause" to="Control" method="_on_pause_toggled"] [connection signal="toggled" from="Control/Shadows" to="Control" method="_on_shadows_toggled"] [connection signal="value_changed" from="Control/WindSlider" to="Control" method="_on_wind_slider_value_changed"] +[connection signal="toggled" from="Control/Fog" to="Control" method="_on_fog_toggled"] [editable path="Scene/chunk_country_cross3_02/PaloLuce"] [editable path="Scene/chunk_country_end_01/PaloLuce2"] diff --git a/project.godot b/project.godot index b7d2cbb..23acade 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="tgcc" -run/main_scene="uid://cae0mnf353dy3" +run/main_scene="uid://38qpxwbpvd28" config/features=PackedStringArray("4.6", "Forward Plus") run/max_fps=60 config/icon="uid://bfar1kk3pgq8f" @@ -24,6 +24,7 @@ UIEvents="*uid://dehu28iq27mbn" window/size/viewport_width=1920 window/size/viewport_height=1080 +window/size/mode=3 window/stretch/mode="canvas_items" window/stretch/aspect="expand"