fix fog and weather controller
This commit is contained in:
@@ -30,7 +30,7 @@ transparency = 2
|
||||
alpha_scissor_threshold = 0.0
|
||||
alpha_antialiasing_mode = 0
|
||||
disable_ambient_light = true
|
||||
albedo_color = Color(0.07500001, 0.06400001, 0.12100001, 0.39999998)
|
||||
albedo_color = Color(0.1334653, 0.106680326, 0.15061459, 0.47993344)
|
||||
billboard_mode = 3
|
||||
particles_anim_h_frames = 1
|
||||
particles_anim_v_frames = 1
|
||||
@@ -46,7 +46,7 @@ shader_parameter/texture_scale = Vector2(1, 1)
|
||||
shader_parameter/edge_softness_y = 0.2
|
||||
shader_parameter/edge_softness_x = 0.1
|
||||
shader_parameter/night_intensity = 0.0
|
||||
shader_parameter/sun_color = Color(1, 1, 1, 1)
|
||||
shader_parameter/sun_color = Color(1, 0.6716112, 0.3432224, 1)
|
||||
|
||||
[sub_resource type="Resource" id="Resource_r4tfj"]
|
||||
script = ExtResource("2_h6hjk")
|
||||
|
||||
@@ -1,29 +1,15 @@
|
||||
shader_type canvas_item;
|
||||
|
||||
// Colore della tua nebbia (scegli un colore che stia bene col tuo Skybox)
|
||||
uniform vec4 fog_color : source_color = vec4(0.85, 0.9, 0.95, 1.0);
|
||||
|
||||
// Quanto è grande lo spazio pulito al centro per il treno
|
||||
uniform float clear_center_radius : hint_range(0.0, 1.0) = 0.4;
|
||||
|
||||
// Quanto è morbida la sfumatura della nebbia verso i bordi
|
||||
uniform float edge_softness : hint_range(0.01, 1.0) = 0.5;
|
||||
|
||||
// Opacità massima ai bordi estremi dello schermo
|
||||
uniform float max_opacity : hint_range(0.0, 1.0) = 0.8;
|
||||
|
||||
void fragment() {
|
||||
// Calcola la distanza del pixel dal centro dello schermo (0.5, 0.5)
|
||||
float dist_from_center = distance(SCREEN_UV, vec2(0.5));
|
||||
|
||||
// Crea una maschera morbida circolare
|
||||
// Al centro (distanza < clear_center) sarà 0.0 (trasparente)
|
||||
// Verso i bordi salirà dolcemente fino a 1.0 (opaco)
|
||||
float fog_amount = smoothstep(clear_center_radius, clear_center_radius + edge_softness, dist_from_center);
|
||||
|
||||
// Moltiplica per l'opacità massima desiderata
|
||||
fog_amount *= max_opacity;
|
||||
|
||||
// Applica il colore della nebbia solo dove serve
|
||||
COLOR = vec4(fog_color.rgb, fog_color.a * fog_amount);
|
||||
}
|
||||
@@ -29,6 +29,7 @@ var is_snowing: bool = false
|
||||
var is_snow_accumulated: bool = false
|
||||
var actual_snow_amount: float = 0.0
|
||||
|
||||
var is_storm: bool = false
|
||||
var cold_tween: Tween
|
||||
var is_windy: bool = false
|
||||
var thereare_fireflies: bool = false
|
||||
@@ -61,6 +62,7 @@ func _ready() -> void:
|
||||
UIEvents.toggle_snow.connect(toggle_snow)
|
||||
UIEvents.toggle_wind.connect(toggle_wind)
|
||||
UIEvents.toggle_fireflies.connect(toggle_fireflies)
|
||||
UIEvents.toggle_storm.connect(toggle_storm)
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
var base_tint: Color
|
||||
@@ -75,9 +77,6 @@ func _process(delta: float) -> void:
|
||||
var base_grad_intensity: float
|
||||
var base_rotation_sun: Vector3
|
||||
|
||||
var is_storm = is_raining and is_snowing
|
||||
var is_night = day_time >= 2.5
|
||||
|
||||
if is_storm:
|
||||
rain_intensity = move_toward(rain_intensity, 1.0, delta * 0.5)
|
||||
if is_raining:
|
||||
@@ -88,12 +87,6 @@ func _process(delta: float) -> void:
|
||||
else:
|
||||
rain_intensity = move_toward(rain_intensity, 0.0, delta * 0.5)
|
||||
|
||||
if environment_config.material_clouds:
|
||||
var current_density = lerp(0.4, 1.0, rain_intensity)
|
||||
environment_config.material_clouds.set_shader_parameter("cloud_density", current_density)
|
||||
var current_sharpness = lerp(0.14, 0.0, rain_intensity)
|
||||
environment_config.material_clouds.set_shader_parameter("center_sharpness", current_sharpness)
|
||||
|
||||
if day_time <= 2.0:
|
||||
var t = day_time - 1.0
|
||||
base_tint = environment_config.morning_color.lerp(environment_config.afternoon_color, t)
|
||||
@@ -183,6 +176,12 @@ func _process(delta: float) -> void:
|
||||
sky_mat.set_shader_parameter("sun_color", final_tint)
|
||||
sky_mat.set_shader_parameter("night_intensity", night_val)
|
||||
|
||||
if environment_config.material_clouds:
|
||||
var current_density = lerp(0.4, 1.0, rain_intensity)
|
||||
environment_config.material_clouds.set_shader_parameter("cloud_density", current_density)
|
||||
var current_sharpness = lerp(0.14, 0.0, rain_intensity)
|
||||
environment_config.material_clouds.set_shader_parameter("center_sharpness", current_sharpness)
|
||||
|
||||
if environment_config.material_fog:
|
||||
environment_config.material_fog.set_shader_parameter("night_intensity", night_val)
|
||||
environment_config.material_fog.set_shader_parameter("sun_color", final_tint)
|
||||
@@ -230,6 +229,10 @@ func set_wind():
|
||||
#endregion
|
||||
|
||||
#region Lightning
|
||||
|
||||
func toggle_storm(value: bool):
|
||||
is_storm = value
|
||||
|
||||
#set lightning
|
||||
func set_lightning():
|
||||
lightning_light.name = "Lightning Light"
|
||||
@@ -276,23 +279,23 @@ func set_lightning_timer():
|
||||
|
||||
func start_lightning():
|
||||
if lightning_light:
|
||||
var tween_luce = create_tween()
|
||||
var tween_lighting = create_tween()
|
||||
lightning_light.light_energy = 5.0
|
||||
|
||||
tween_luce.tween_interval(0.05)
|
||||
tween_luce.tween_callback(func(): lightning_light.light_energy = 0.0)
|
||||
tween_luce.tween_interval(0.05)
|
||||
tween_luce.tween_callback(func(): lightning_light.light_energy = 2.0)
|
||||
tween_luce.tween_method(func(val): lightning_light.light_energy = val, 2.0, 0.0, 0.2)
|
||||
tween_lighting.tween_interval(0.05)
|
||||
tween_lighting.tween_callback(func(): lightning_light.light_energy = 0.0)
|
||||
tween_lighting.tween_interval(0.05)
|
||||
tween_lighting.tween_callback(func(): lightning_light.light_energy = 2.0)
|
||||
tween_lighting.tween_method(func(val): lightning_light.light_energy = val, 2.0, 0.0, 0.2)
|
||||
|
||||
var lightning_number = randi_range(environment_config.lightning_min, environment_config.lightning_max)
|
||||
|
||||
for i in lightning_number:
|
||||
if lightning_sprite:
|
||||
var angolo_casuale = randf() * TAU
|
||||
var distanza = randf_range(10.0, 40.0)
|
||||
var random_angle = randf() * TAU
|
||||
var distance = randf_range(10.0, 40.0)
|
||||
|
||||
lightning_sprite.position = Vector3(cos(angolo_casuale) * distanza, 10.0, sin(angolo_casuale) * distanza)
|
||||
lightning_sprite.position = Vector3(cos(random_angle) * distance, 10.0, sin(random_angle) * distance)
|
||||
|
||||
lightning_sprite.modulate = environment_config.lightning_color
|
||||
lightning_sprite.modulate.a = 1.0
|
||||
|
||||
@@ -11,7 +11,7 @@ extends Resource
|
||||
@export var sun_rotation_morning: Vector3 = Vector3(-15.0, 45.0, 0.0)
|
||||
@export var sun_rotation_afternoon: Vector3 = Vector3(-75.0, 10.0, 0.0)
|
||||
@export var sun_rotation_night: Vector3 = Vector3(-35.0, -120.0, 0.0)
|
||||
@export_range(0.0, 1.0) var night_light_energy: float = 0.3
|
||||
@export var night_light_energy: float = 0.3
|
||||
|
||||
@export_group("General Exposition")
|
||||
@export var exposure_morning: float = 1.0
|
||||
|
||||
@@ -5,3 +5,4 @@ signal toggle_rain(value: bool)
|
||||
signal toggle_snow(value: bool)
|
||||
signal toggle_wind(value: bool)
|
||||
signal toggle_fireflies(value: bool)
|
||||
signal toggle_storm(value: bool)
|
||||
|
||||
@@ -11,3 +11,6 @@ func _on_wind_toggled(toggled_on: bool) -> void:
|
||||
|
||||
func _on_fireflies_toggled(toggled_on: bool) -> void:
|
||||
UIEvents.toggle_fireflies.emit(toggled_on)
|
||||
|
||||
func _on_storm_toggled(toggled_on: bool) -> void:
|
||||
UIEvents.toggle_storm.emit(toggled_on)
|
||||
|
||||
@@ -18,11 +18,11 @@ seamless = true
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_abyor"]
|
||||
shader = ExtResource("3_jiovi")
|
||||
shader_parameter/sky_top_color = Color(0, 0.84999996, 1.5999999, 1)
|
||||
shader_parameter/sky_horizon_color = Color(0.55, 1.0500001, 1.55, 1)
|
||||
shader_parameter/night_intensity = 0.0
|
||||
shader_parameter/sky_top_color = Color(0.5659384, 0.36750057, 0.18968758, 1)
|
||||
shader_parameter/sky_horizon_color = Color(0.78500116, 0.5365633, 0.32937515, 1)
|
||||
shader_parameter/night_intensity = 0.206248555555554
|
||||
shader_parameter/cloud_noise = SubResource("NoiseTexture2D_abyor")
|
||||
shader_parameter/sun_color = Color(1, 1.1999999, 1.4000001, 1)
|
||||
shader_parameter/sun_color = Color(0.8143763, 0.49687576, 0.22062486, 1)
|
||||
shader_parameter/cloud_center_color = Color(1, 1, 1, 1)
|
||||
shader_parameter/cloud_edge_color = Color(0.8, 0.85, 0.9, 1)
|
||||
shader_parameter/cloud_direction = Vector2(0.5, 0.2)
|
||||
@@ -48,8 +48,8 @@ sky_material = SubResource("ShaderMaterial_abyor")
|
||||
[sub_resource type="Environment" id="Environment_icuhg"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_50i22")
|
||||
ambient_light_color = Color(1, 1.1999999, 1.4000001, 1)
|
||||
tonemap_exposure = 1.05
|
||||
ambient_light_color = Color(0.8143763, 0.49687576, 0.22062486, 1)
|
||||
tonemap_exposure = 0.8365633
|
||||
ssao_enabled = true
|
||||
ssao_radius = 0.5
|
||||
ssao_intensity = 14.0
|
||||
@@ -57,13 +57,13 @@ ssao_detail = 0.0
|
||||
ssil_enabled = true
|
||||
glow_enabled = true
|
||||
glow_levels/4 = 1.0
|
||||
glow_intensity = 1.6
|
||||
glow_intensity = 1.0474982
|
||||
glow_strength = 0.65
|
||||
glow_bloom = 1.0
|
||||
fog_enabled = true
|
||||
fog_mode = 1
|
||||
fog_light_color = Color(0.55, 1.0500001, 1.55, 1)
|
||||
fog_density = 0.008
|
||||
fog_light_color = Color(0.78500116, 0.5365633, 0.32937515, 1)
|
||||
fog_density = 0.0046812315
|
||||
fog_sky_affect = 0.0
|
||||
|
||||
[sub_resource type="CompositorEffect" id="CompositorEffect_q52t1"]
|
||||
@@ -96,8 +96,9 @@ environment = SubResource("Environment_icuhg")
|
||||
compositor = SubResource("Compositor_jbfcc")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=565189502]
|
||||
transform = Transform3D(0.17364818, 0.69636416, 0.69636416, 0, 0.7071067, -0.7071067, -0.9848075, 0.12278782, 0.12278782, 0, 0, 0)
|
||||
light_color = Color(1, 1.1999999, 1.4000001, 1)
|
||||
transform = Transform3D(0.9572571, 0.26574892, -0.114174426, 0, 0.39474285, 0.9187914, 0.2892374, -0.8795199, 0.3778705, 0, 0, 0)
|
||||
light_color = Color(0.8143763, 0.49687576, 0.22062486, 1)
|
||||
light_energy = 0.855626
|
||||
light_indirect_energy = 0.0
|
||||
light_volumetric_fog_energy = 0.0
|
||||
shadow_enabled = true
|
||||
@@ -108,6 +109,14 @@ shadow_blur = 0.4
|
||||
directional_shadow_mode = 0
|
||||
directional_shadow_fade_start = 0.9
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="." unique_id=1893906598]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.99452555, -0.10449375, 0, 0.10449375, 0.99452555, 0.48949432, 25.39013, 0)
|
||||
script = ExtResource("7_p2t1d")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=1335123628]
|
||||
material_override = SubResource("StandardMaterial3D_p2t1d")
|
||||
mesh = SubResource("BoxMesh_p2t1d")
|
||||
|
||||
[node name="Control" type="Control" parent="." unique_id=1032167802]
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
@@ -144,9 +153,9 @@ text = "Rain"
|
||||
[node name="Wind" type="CheckButton" parent="Control" unique_id=1160113828]
|
||||
layout_mode = 0
|
||||
offset_left = 21.0
|
||||
offset_top = 71.0
|
||||
offset_top = 91.0
|
||||
offset_right = 109.0
|
||||
offset_bottom = 102.0
|
||||
offset_bottom = 122.0
|
||||
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
||||
theme_override_colors/font_focus_color = Color(0, 0, 0, 1)
|
||||
theme_override_colors/font_pressed_color = Color(0, 0, 0, 1)
|
||||
@@ -157,9 +166,9 @@ text = "Wind"
|
||||
[node name="Fireflies" type="CheckButton" parent="Control" unique_id=1177089839]
|
||||
layout_mode = 0
|
||||
offset_left = 21.0
|
||||
offset_top = 100.0
|
||||
offset_top = 115.0
|
||||
offset_right = 130.0
|
||||
offset_bottom = 131.0
|
||||
offset_bottom = 146.0
|
||||
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
||||
theme_override_colors/font_focus_color = Color(0, 0, 0, 1)
|
||||
theme_override_colors/font_pressed_color = Color(0, 0, 0, 1)
|
||||
@@ -167,14 +176,21 @@ theme_override_colors/font_hover_color = Color(0, 0, 0, 1)
|
||||
theme_override_colors/font_hover_pressed_color = Color(0, 0, 0, 1)
|
||||
text = "Fireflies"
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="." unique_id=1893906598]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.99452555, -0.10449375, 0, 0.10449375, 0.99452555, 0.48949432, 25.39013, 0)
|
||||
script = ExtResource("7_p2t1d")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=1335123628]
|
||||
material_override = SubResource("StandardMaterial3D_p2t1d")
|
||||
mesh = SubResource("BoxMesh_p2t1d")
|
||||
[node name="Storm" type="CheckButton" parent="Control" unique_id=936960924]
|
||||
layout_mode = 0
|
||||
offset_left = 21.0
|
||||
offset_top = 66.0
|
||||
offset_right = 117.0
|
||||
offset_bottom = 97.0
|
||||
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
||||
theme_override_colors/font_focus_color = Color(0, 0, 0, 1)
|
||||
theme_override_colors/font_pressed_color = Color(0, 0, 0, 1)
|
||||
theme_override_colors/font_hover_color = Color(0, 0, 0, 1)
|
||||
theme_override_colors/font_hover_pressed_color = Color(0, 0, 0, 1)
|
||||
text = "Storm"
|
||||
|
||||
[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"]
|
||||
[connection signal="toggled" from="Control/Fireflies" to="Control" method="_on_fireflies_toggled"]
|
||||
[connection signal="toggled" from="Control/Storm" to="Control" method="_on_storm_toggled"]
|
||||
|
||||
Reference in New Issue
Block a user