add config comment

This commit is contained in:
2026-04-01 19:37:07 +02:00
parent 0be4b503e2
commit 8883699886
17 changed files with 517 additions and 75 deletions

View File

@@ -216,7 +216,7 @@ shader_parameter/fade_end = 800.000035625
shader_parameter/height_fade_start = 10.0
shader_parameter/height_fade_end = 50.0
[node name="EnvironmentManager" type="Node3D" unique_id=1611939731 node_paths=PackedStringArray("particles_wind", "particles_snow", "particles_fireflies", "particles_rain", "fog_overlay", "environment_dust", "blur", "environment_shadows")]
[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")
particles_wind = NodePath("Particles_Wind")
@@ -224,7 +224,6 @@ particles_snow = NodePath("Particles_Snow")
particles_fireflies = NodePath("Particles_Fireflies")
particles_rain = NodePath("Particles_Rain")
godray = ExtResource("5_411rw")
fog_overlay = NodePath("")
environment_dust = NodePath("EnvironmentDust")
blur = NodePath("Blur")
environment_shadows = NodePath("EnvironmentCloudsShadows")
@@ -287,3 +286,5 @@ mouse_filter = 2
extra_cull_margin = 16384.0
mesh = SubResource("QuadMesh_sxgg7")
surface_material_override/0 = SubResource("ShaderMaterial_oqt1s")
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="." unique_id=902982869]

View File

@@ -12,14 +12,17 @@ extends Node3D
@export var particles_fireflies: GPUParticles3D
@export var particles_rain: GPUParticles3D
@export var godray: PackedScene
@export var fog_overlay: ColorRect
@export var environment_dust: ColorRect
@export var blur: ColorRect
@export var environment_shadows: MeshInstance3D
@export_group("Sound")
@export var thunder_sounds: Array[AudioStream]
#environment nodes
@onready var sun: DirectionalLight3D = $"../DirectionalLight3D"
@onready var environment: WorldEnvironment = $"../WorldEnvironment"
@onready var audio_player: AudioStreamPlayer3D = $AudioStreamPlayer3D
var day_night_controller: DayNightController
var weather_controller: WeatherController
@@ -49,14 +52,15 @@ func _ready() -> void:
particles_fireflies,
particles_rain,
godray,
fog_overlay,
environment_dust,
blur,
environment_shadows,
sun,
environment,
environment_config,
camera
camera,
audio_player,
thunder_sounds
)
weather_controller.name = "WeatherController"
add_child(weather_controller)

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://bfn6kxtpb8b7a"
path="res://.godot/imported/thunder_1.mp3-5dfac75637d4484715fa2c52227bbb39.mp3str"
[deps]
source_file="res://core/daynight/sound/thunder_1.mp3"
dest_files=["res://.godot/imported/thunder_1.mp3-5dfac75637d4484715fa2c52227bbb39.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://br2ye0dto487h"
path="res://.godot/imported/thunder_2.mp3-e0bc5cdbb7a7380e5c0e7af073c47559.mp3str"
[deps]
source_file="res://core/daynight/sound/thunder_2.mp3"
dest_files=["res://.godot/imported/thunder_2.mp3-e0bc5cdbb7a7380e5c0e7af073c47559.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://dvabvoqyya0g5"
path="res://.godot/imported/thunder_3.mp3-2057b93f6a6b1db545b448579512d302.mp3str"
[deps]
source_file="res://core/daynight/sound/thunder_3.mp3"
dest_files=["res://.godot/imported/thunder_3.mp3-2057b93f6a6b1db545b448579512d302.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://creenugno7hm"
path="res://.godot/imported/thunder_4.mp3-ab350a8d3ed7b106a20bdb2005be826d.mp3str"
[deps]
source_file="res://core/daynight/sound/thunder_4.mp3"
dest_files=["res://.godot/imported/thunder_4.mp3-ab350a8d3ed7b106a20bdb2005be826d.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://bm6dq4jwsbxf6"
path="res://.godot/imported/thunder_5.mp3-bac65d0a703be3ab04d2144b8eef2bce.mp3str"
[deps]
source_file="res://core/daynight/sound/thunder_5.mp3"
dest_files=["res://.godot/imported/thunder_5.mp3-bac65d0a703be3ab04d2144b8eef2bce.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -1,12 +1,14 @@
class_name WeatherController
extends Node
var audio_player: AudioStreamPlayer3D
var thunder_sounds: Array[AudioStream]
var particles_wind: GPUParticles3D
var particles_snow: GPUParticles3D
var particles_fireflies: GPUParticles3D
var particles_rain: GPUParticles3D
var godray: PackedScene
var fog_overlay: ColorRect
var environment_dust: ColorRect
var blur: ColorRect
var environment_shadows: MeshInstance3D
@@ -41,22 +43,23 @@ var thereare_fireflies: bool = false
func _init(wind: GPUParticles3D, snow: GPUParticles3D,
fireflies: GPUParticles3D, rain: GPUParticles3D, ray: PackedScene,
fogov: ColorRect, dust: ColorRect, blurr: ColorRect, envshadows: MeshInstance3D,
dust: ColorRect, blurr: ColorRect, envshadows: MeshInstance3D,
thesun: DirectionalLight3D, theenvironment: WorldEnvironment, environmentconfig: EnvironmentConfig,
thecamera: Camera3D = null) -> void:
thecamera: Camera3D, audiostreamplayer: AudioStreamPlayer3D, thundersounds: Array[AudioStream]) -> void:
particles_wind = wind
particles_snow = snow
particles_fireflies = fireflies
particles_rain = rain
godray = ray
sun = thesun
fog_overlay = fogov
environment_dust = dust
blur = blurr
environment_shadows = envshadows
environment = theenvironment
environment_config = environmentconfig
camera = thecamera
thunder_sounds = thundersounds
audio_player = audiostreamplayer
set_rain()
@@ -101,7 +104,8 @@ func _process(delta: float) -> void:
var base_rotation_sun: Vector3
if is_raining:
rain_intensity = move_toward(rain_intensity, 1.0, delta * 0.5)
var target_rain = environment_config.storm_rain_intensity_multiplier if is_storm else 1.0
rain_intensity = move_toward(rain_intensity, target_rain, delta * 0.5)
if is_storm:
timer_next_lightning -= delta
if timer_next_lightning <= 0.0:
@@ -139,11 +143,15 @@ func _process(delta: float) -> void:
base_grad_intensity = lerp(environment_config.grad_intensity_afternoon, environment_config.grad_intensity_night, t)
base_rotation_sun = environment_config.sun_rotation_afternoon.lerp(environment_config.sun_rotation_night, t)
var final_tint = base_tint.lerp(base_tint * environment_config.rain_mode_color, rain_intensity)
var final_sky_top = base_sky_top.lerp(base_sky_top * environment_config.rain_mode_color, rain_intensity)
var final_sky_horizon = base_sky_horizon.lerp(base_sky_horizon * environment_config.rain_mode_color, rain_intensity)
var final_fog_color = base_fog_color.lerp(base_fog_color * environment_config.rain_mode_color, rain_intensity)
var final_fog_density = lerp(base_fog_density, base_fog_density * 4.0, rain_intensity)
var weather_color = environment_config.rain_mode_color
if is_storm:
var storm_blend = clamp((rain_intensity - 1.0) / (environment_config.storm_rain_intensity_multiplier - 1.0), 0.0, 1.0)
weather_color = weather_color.lerp(environment_config.storm_mode_color, storm_blend)
var final_tint = base_tint.lerp(base_tint * weather_color, clamp(rain_intensity, 0.0, 1.0))
var final_sky_top = base_sky_top.lerp(base_sky_top * weather_color, clamp(rain_intensity, 0.0, 1.0))
var final_sky_horizon = base_sky_horizon.lerp(base_sky_horizon * weather_color, clamp(rain_intensity, 0.0, 1.0))
var final_fog_color = base_fog_color.lerp(base_fog_color * weather_color, clamp(rain_intensity, 0.0, 1.0))
var final_fog_density = lerp(base_fog_density, base_fog_density * 4.0, clamp(rain_intensity, 0.0, 1.0))
final_tint = final_tint.lerp(final_tint * environment_config.snow_mode_color, actual_snow_amount)
final_sky_top = final_sky_top.lerp(final_sky_top * environment_config.snow_mode_color, actual_snow_amount)
@@ -151,8 +159,8 @@ func _process(delta: float) -> void:
final_fog_color = final_fog_color.lerp(final_fog_color * environment_config.snow_mode_color, actual_snow_amount)
#Shader parameters for global trunk_shader
var final_grad_top = base_grad_top.lerp(base_grad_top * environment_config.rain_mode_color, rain_intensity)
var final_grad_bot = base_grad_bot.lerp(base_grad_bot * environment_config.rain_mode_color, rain_intensity)
var final_grad_top = base_grad_top.lerp(base_grad_top * weather_color, clamp(rain_intensity, 0.0, 1.0))
var final_grad_bot = base_grad_bot.lerp(base_grad_bot * weather_color, clamp(rain_intensity, 0.0, 1.0))
RenderingServer.global_shader_parameter_set("global_gradient_color_top", final_grad_top)
RenderingServer.global_shader_parameter_set("global_gradient_color_bot", final_grad_bot)
@@ -226,7 +234,7 @@ func _follow_camera() -> void:
if particles_snow:
particles_snow.global_position = Vector3(cam_pos.x, particles_snow.position.y, cam_pos.z)
if particles_wind:
particles_wind.global_position = Vector3(cam_pos.x, particles_wind.position.y, cam_pos.z)
particles_wind.global_position = Vector3(cam_pos.x, cam_pos.y, cam_pos.z)
if particles_fireflies:
particles_fireflies.global_position = Vector3(cam_pos.x, particles_fireflies.position.y, cam_pos.z)
@@ -254,10 +262,8 @@ func set_fireflies():
func toggle_wind(value: bool):
is_windy = value
var is_night = day_time >= 2.5
if particles_wind:
particles_wind.emitting = (not is_storm and not is_night and is_windy)
particles_wind.emitting = is_windy
#disable wind and set default values and materials
func set_wind():
@@ -385,9 +391,22 @@ func start_lightning():
tween_sprite.tween_interval(0.2)
tween_sprite.tween_property(lightning_sprite, "modulate:a", 0.0, 0.4)
#Thunder sound; separated routine to do not stop the loop
_play_thunder_delayed(randf_range(0.5, 2.5))
if lightning_number > 1:
await get_tree().create_timer(randf_range(0.05, 0.15)).timeout
func _play_thunder_delayed(delay: float):
await get_tree().create_timer(delay).timeout
if thunder_sounds.is_empty() or not audio_player:
return
#choose a random track
audio_player.stream = thunder_sounds[randi() % thunder_sounds.size()]
audio_player.pitch_scale = randf_range(0.9, 1.1)
audio_player.play()
#endregion
#region Rain

View File

@@ -1,51 +1,60 @@
class_name EnvironmentConfig
extends Resource
#Time duration in seconds for a day
@export_group("Day")
@export var day_duration: float = 120.0
@export var day_duration: float = 120.0 #Duration of a full day cycle in seconds
#Ambient light color tinting for each time of day
@export_group("Directional Lights and Environment")
@export var morning_color: Color = Color(1.0, 0.9, 0.8, 1.0)
@export var afternoon_color: Color = Color(1.0, 0.6, 0.2, 1.0)
@export var night_color: Color = Color(0.1, 0.1, 0.3, 1.0)
@export var morning_color: Color = Color(1.0, 0.9, 0.8, 1.0) #Tint for morning
@export var afternoon_color: Color = Color(1.0, 0.6, 0.2, 1.0) #Tint for afternoon (sunset)
@export var night_color: Color = Color(0.1, 0.1, 0.3, 1.0) #Tint for night
#Sun directional light rotation for each time of day
@export_group("Sun Rotation")
@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)
#Sun light energy during night (multiplied onto base energy)
@export var night_light_energy: float = 0.3
#Camera tonemap exposure for each time of day
@export_group("General Exposition")
@export var exposure_morning: float = 1.0
@export var exposure_afternoon: float = 0.95
@export var exposure_night: float = 0.4
#Sky top color for each time of day
@export_group("Sky Colors - Top")
@export var sky_top_morning: Color = Color(0.35, 0.65, 0.9, 1.0)
@export var sky_top_afternoon: Color = Color(0.7, 0.45, 0.2, 1.0)
@export var sky_top_night: Color = Color(0.05, 0.05, 0.15, 1.0)
#Sky horizon color for each time of day
@export_group("Sky Color - Horizon")
@export var sky_horizon_morning: Color = Color(0.75, 0.85, 0.95, 1.0)
@export var sky_horizon_afternoon: Color = Color(0.95, 0.65, 0.35, 1.0)
@export var sky_horizon_night: Color = Color(0.15, 0.1, 0.25, 1.0)
#Top gradient color used by the trunk shader
@export_subgroup("Gradient - Top")
@export var grad_top_morning: Color = Color(0.8, 0.4, 0.2, 1.0)
@export var grad_top_afternoon: Color = Color(0.2, 0.3, 0.5, 1.0)
@export var grad_top_night: Color = Color(0.05, 0.05, 0.1, 1.0)
#Bottom gradient color used by the trunk shader
@export_subgroup("Gradient - Bottom")
@export var grad_bot_morning: Color = Color(0.5, 0.2, 0.1, 1.0)
@export var grad_bot_afternoon: Color = Color(0.1, 0.15, 0.25, 1.0)
@export var grad_bot_night: Color = Color(0.01, 0.01, 0.05, 1.0)
#Gradient blend intensity for the trunk shader
@export_subgroup("Gradient Intensity")
@export var grad_intensity_morning: float = 0.5
@export var grad_intensity_afternoon: float = 0.3
@export var grad_intensity_night: float = 0.8
#Volumetric fog color and density for each time of day
@export_group("Fog")
@export var fog_color_morning: Color = Color(0.75, 0.85, 0.95, 1.0)
@export var fog_color_afternoon: Color = Color(0.95, 0.65, 0.35, 1.0)
@@ -54,71 +63,85 @@ extends Resource
@export var fog_density_afternoon: float = 0.002
@export var fog_density_night: float = 0.015
#Glow (bloom) intensity for each time of day
@export_group("Glow")
@export var glow_morning: float = 1.2
@export var glow_afternoon: float = 0.8
@export var glow_night: float = 2.0
#Post-process effect toggles (initial values)
@export_group("Post Process")
@export var enable_fog_overlay: bool = false
@export var enable_dust: bool = true
@export var enable_blur: bool = true
@export var enable_environment_shadows: bool = true
@export var enable_dust: bool = true #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
#Shader materials used by weather and sky systems
@export_group("Environment Materials")
@export var material_fog: ShaderMaterial
@export var material_drops: StandardMaterial3D
@export var material_clouds: ShaderMaterial
@export var material_fog: ShaderMaterial #Fog overlay shader material
@export var material_drops: StandardMaterial3D #Rain drops material (albedo tinted by sky)
@export var material_clouds: ShaderMaterial #Cloud layer shader material
#Rain weather settings
@export_group("Rain")
@export var rain_mode_color: Color = Color(0.5, 0.6, 0.7, 1.0)
@export var rain_fade_time: float = 5.0
@export var puddle_form_time: float = 15.0
@export var puddle_dry_time: float = 20.0
@export var rain_mode_color: Color = Color(0.5, 0.6, 0.7, 1.0) #Sky/light darkening color during rain
@export var rain_fade_time: float = 5.0 #Seconds for rain particles to fade in/out
@export var puddle_form_time: float = 15.0 #Seconds for puddles to fully form
@export var puddle_dry_time: float = 20.0 #Seconds for puddles to fully dry after rain stops
#Storm settings (applied on top of rain when storm is active)
@export_group("Storm")
@export var storm_rain_intensity_multiplier: float = 1.5 #Rain intensity target during storm (1.0 = normal rain)
@export var storm_mode_color: Color = Color(0.476, 0.531, 0.639, 1.0) #Additional sky darkening color during storm
#Lightning and thunder configuration
@export_group("Lightning and Thunders")
@export var lightning_min_time: float = 5.0
@export var lightning_max_time: float = 15.0
@export var lightning_color: Color = Color(1.0, 1.0, 0.8, 1.0)
@export var lightning_min: int = 1
@export var lightning_max: int = 3
@export var lightning_scale_min: float = 1.0
@export var lightning_scale_max: float = 3.0
@export var lightning_texture: String = "res://core/daynight/lighting_albedo.png"
@export var weather_event_interval: float = 8.0
@export var lightning_min_time: float = 5.0 #Minimum seconds between lightning strikes
@export var lightning_max_time: float = 15.0 #Maximum seconds between lightning strikes
@export var lightning_color: Color = Color(1.0, 1.0, 0.8, 1.0) #Lightning sprite tint color
@export var lightning_min: int = 1 #Minimum number of lightning bolts per strike event
@export var lightning_max: int = 3 #Maximum number of lightning bolts per strike event
@export var lightning_scale_min: float = 1.0 #Minimum random scale of lightning sprite
@export var lightning_scale_max: float = 3.0 #Maximum random scale of lightning sprite
@export var lightning_texture: String = "res://core/daynight/lighting_albedo.png" # Lightning bolt texture path
@export var weather_event_interval: float = 8.0 #Base interval between weather events
#thunder sound is configured on daynight node
#God rays spawned after rain or at morning
@export_group("God Rays")
@export var godray_max_rain: int = 8
@export var godray_spawn_radius: float = 15.0
@export var godray_spawn_offset: Vector3 = Vector3(15.0, 5.0, -15.0)
@export var godray_rotation_degrees: Vector3 = Vector3(-45.0, 45.0, -30.0)
@export var godray_spawn_height: float = 5.0
@export var godray_scale: Vector3 = Vector3(2.0, 6.0, 2.0)
@export var godray_max_rain: int = 8 #Max number of god rays spawned after rain stops
@export var godray_spawn_radius: float = 15.0 #Horizontal spawn radius around the camera
@export var godray_spawn_offset: Vector3 = Vector3(15.0, 5.0, -15.0) #Position offset from camera
@export var godray_rotation_degrees: Vector3 = Vector3(-45.0, 45.0, -30.0) #Rotation of the god ray mesh
@export var godray_spawn_height: float = 5.0 #Y world position where god rays spawn
@export var godray_scale: Vector3 = Vector3(2.0, 6.0, 2.0) #Scale of the god ray mesh
#Snow settings
@export_group("Snow")
@export var snow_amount: float = 0.0
@export var snow_transaction_time: float = 10.0
@export var snow_fade_time: float = 5.0
@export var snow_threshold: float = 0.4
@export var snow_accumulation_speed: float = 0.02 #0.1 -> accumulation time 10secs; 0.05 -> accumulation time 20secs; realistic; 0.2 -> accumulation time 5secs;
@export var snow_melt_speed: float = 0.05
@export var snow_color: Color = Color(0.9, 0.95, 1.0)
@export var snow_mode_color: Color = Color(0.7, 0.75, 0.8, 1.0)
@export var snow_amount: float = 0.0 #Initial snow coverage amount (0.0 = none, 1.0 = full)
@export var snow_transaction_time: float = 10.0 #Seconds for snow shader to fully transition in/out
@export var snow_fade_time: float = 5.0 #Seconds for snow particles to fade in/out
@export var snow_threshold: float = 0.4 #Normal Y threshold for snow accumulation on surfaces
@export var snow_accumulation_speed: float = 0.02 #Accumulation speed: 0.1 -> 10s, 0.05 -> 20s, 0.02 -> 50s, 0.2 -> 5s
@export var snow_melt_speed: float = 0.05 #Speed at which accumulated snow melts away
@export var snow_color: Color = Color(0.9, 0.95, 1.0) #Albedo color of snow on surfaces
@export var snow_mode_color: Color = Color(0.556, 0.62, 0.683, 1.0) #Sky/light darkening color during snow
#Wind settings
@export_group("Wind")
@export var wind_amount: int = 100
@export var wind_spawn_ray: float = 25.0
@export var wind_spawn_height: float = 5.0
@export var wind_direction: Vector2 = Vector2(0.5, 0.4)
@export var wind_speed: float = 0.2
@export var wind_scale: float = 0.025
@export var wind_strength: float = 0.6
@export var cloud_scale: float = 0.5
@export var cloud_speed: float = 0.05
@export_range(0.01, 1.0) var cloud_scale_envshadows_rate: float = 0.01
@export_range(0.01, 1.0) var cloud_speed_envshadows_rate: float = 0.5
@export var wind_amount: int = 100 #Number of wind particles
@export var wind_spawn_ray: float = 25.0 #Horizontal spawn radius (emission box XZ extents)
@export var wind_spawn_height: float = 8.0 #Vertical spawn range (emission box Y extent)
@export var wind_direction: Vector2 = Vector2(0.5, 0.4) #Global wind direction (XZ)
@export var wind_speed: float = 0.2 #Global wind animation speed
@export var wind_scale: float = 0.025 #Global wind noise scale
@export var wind_strength: float = 0.6 #Global wind displacement strength
@export var cloud_scale: float = 0.5 #Cloud noise scale in sky shader
@export var cloud_speed: float = 0.05 #Cloud movement speed in sky shader
@export_range(0.01, 1.0) var cloud_scale_envshadows_rate: float = 0.01 #Cloud scale multiplier for environment shadows
@export_range(0.01, 1.0) var cloud_speed_envshadows_rate: float = 0.5 #Cloud speed multiplier for environment shadows
#Firefly settings (visible only at night)
@export_group("Fireflies")
@export var fireflies_amount: int = 60
@export var fireflies_spawn_ray: float = 20.0
@export var fireflies_spawn_height: float = 3.0
@export var fireflies_amount: int = 60 #Number of firefly particles
@export var fireflies_spawn_ray: float = 20.0 #Horizontal spawn radius
@export var fireflies_spawn_height: float = 3.0 #Vertical spawn range

View File

@@ -1,9 +1,14 @@
[gd_scene format=3 uid="uid://bjkhawylawqof"]
[ext_resource type="PackedScene" uid="uid://cmuvmmp7xam4o" path="res://core/daynight/environment_management.tscn" id="1_daynt"]
[ext_resource type="AudioStream" uid="uid://bfn6kxtpb8b7a" path="res://core/daynight/sound/thunder_1.mp3" id="2_l6e82"]
[ext_resource type="AudioStream" uid="uid://br2ye0dto487h" path="res://core/daynight/sound/thunder_2.mp3" id="3_28c1g"]
[ext_resource type="Shader" uid="uid://bneoex8xpmcm8" path="res://core/daynight/sky.gdshader" id="3_jiovi"]
[ext_resource type="Texture2D" uid="uid://dest0qa7vaid0" path="res://core/daynight/stars_albedo.png" id="4_abyor"]
[ext_resource type="AudioStream" uid="uid://dvabvoqyya0g5" path="res://core/daynight/sound/thunder_3.mp3" id="4_d5ghv"]
[ext_resource type="AudioStream" uid="uid://creenugno7hm" path="res://core/daynight/sound/thunder_4.mp3" id="5_g8vyu"]
[ext_resource type="Script" uid="uid://brcimd12tx3dm" path="res://core/daynight/edge_detection_compositor.gd" id="5_jgh18"]
[ext_resource type="AudioStream" uid="uid://bm6dq4jwsbxf6" path="res://core/daynight/sound/thunder_5.mp3" id="6_iu8wf"]
[ext_resource type="Script" uid="uid://cx2tlvxhvatj5" path="res://docs/museums/daynight/control.gd" id="6_q52t1"]
[ext_resource type="Script" uid="uid://ccdd52apoh4ir" path="res://docs/museums/daynight/camera_3d.gd" id="7_p2t1d"]
[ext_resource type="PackedScene" uid="uid://jj15telqu3rp" path="res://docs/museums/daynight/scenes/grass_test/grass_test.tscn" id="7_pd1r3"]
@@ -94,6 +99,7 @@ size = Vector3(200, 0.08, 200)
[node name="DayNight" parent="." unique_id=1578787116 node_paths=PackedStringArray("camera") instance=ExtResource("1_daynt")]
camera = NodePath("../Camera3D")
thunder_sounds = Array[AudioStream]([ExtResource("2_l6e82"), ExtResource("3_28c1g"), ExtResource("4_d5ghv"), ExtResource("5_g8vyu"), ExtResource("6_iu8wf")])
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=6398994]
environment = SubResource("Environment_icuhg")

View File

@@ -0,0 +1,294 @@
[gd_scene format=3 uid="uid://bjkhawylawqof"]
[ext_resource type="PackedScene" uid="uid://cmuvmmp7xam4o" path="res://core/daynight/environment_management.tscn" id="1_daynt"]
[ext_resource type="AudioStream" uid="uid://bfn6kxtpb8b7a" path="res://core/daynight/sound/thunder_1.mp3" id="2_l6e82"]
[ext_resource type="AudioStream" uid="uid://br2ye0dto487h" path="res://core/daynight/sound/thunder_2.mp3" id="3_28c1g"]
[ext_resource type="Shader" uid="uid://bneoex8xpmcm8" path="res://core/daynight/sky.gdshader" id="3_jiovi"]
[ext_resource type="Texture2D" uid="uid://dest0qa7vaid0" path="res://core/daynight/stars_albedo.png" id="4_abyor"]
[ext_resource type="AudioStream" uid="uid://dvabvoqyya0g5" path="res://core/daynight/sound/thunder_3.mp3" id="4_d5ghv"]
[ext_resource type="AudioStream" uid="uid://creenugno7hm" path="res://core/daynight/sound/thunder_4.mp3" id="5_g8vyu"]
[ext_resource type="Script" uid="uid://brcimd12tx3dm" path="res://core/daynight/edge_detection_compositor.gd" id="5_jgh18"]
[ext_resource type="AudioStream" uid="uid://bm6dq4jwsbxf6" path="res://core/daynight/sound/thunder_5.mp3" id="6_iu8wf"]
[ext_resource type="Script" uid="uid://cx2tlvxhvatj5" path="res://docs/museums/daynight/control.gd" id="6_q52t1"]
[ext_resource type="Script" uid="uid://ccdd52apoh4ir" path="res://docs/museums/daynight/camera_3d.gd" id="7_p2t1d"]
[ext_resource type="PackedScene" uid="uid://jj15telqu3rp" path="res://docs/museums/daynight/scenes/grass_test/grass_test.tscn" id="7_pd1r3"]
[ext_resource type="PackedScene" uid="uid://bonjxfjcdnntt" path="res://docs/museums/daynight/scenes/grain_test/grain_test.tscn" id="7_w3se4"]
[ext_resource type="PackedScene" uid="uid://cahsl77384kf1" path="res://docs/museums/daynight/scenes/chunk_c_f_1/house_muraglione.tscn" id="9_pd1r3"]
[sub_resource type="FastNoiseLite" id="FastNoiseLite_jiovi"]
fractal_lacunarity = 1.915
fractal_gain = 0.53
fractal_weighted_strength = 0.35
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_abyor"]
noise = SubResource("FastNoiseLite_jiovi")
seamless = true
[sub_resource type="ShaderMaterial" id="ShaderMaterial_abyor"]
shader = ExtResource("3_jiovi")
shader_parameter/sky_top_color = Color(0.36438444, 0.6417803, 0.8712311, 1)
shader_parameter/sky_horizon_color = Color(0.75821966, 0.8417803, 0.92534095, 1)
shader_parameter/night_intensity = 0.0
shader_parameter/cloud_noise = SubResource("NoiseTexture2D_abyor")
shader_parameter/sun_color = Color(1, 0.88767046, 0.775341, 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)
shader_parameter/cloud_speed = 0.1
shader_parameter/cloud_scale = 0.5
shader_parameter/cloud_threshold = 0.5
shader_parameter/cloud_edge_thickness = 0.406000019285
shader_parameter/cloud_edge_softness = 0.0
shader_parameter/star_density = 1500.0
shader_parameter/star_rarity = 2500.0
shader_parameter/star_scale_variation = 0.5
shader_parameter/shooting_star_texture = ExtResource("4_abyor")
shader_parameter/shooting_star_color = Color(0.38431373, 0.61960787, 0.23137255, 1)
shader_parameter/shooting_star_density = 1.0
shader_parameter/shooting_star_speed = 1.0
shader_parameter/shooting_star_scale = 5.0
shader_parameter/shooting_star_lifetime = 0.5
shader_parameter/shooting_star_travel_dist = 15.0
[sub_resource type="Sky" id="Sky_50i22"]
sky_material = SubResource("ShaderMaterial_abyor")
[sub_resource type="Environment" id="Environment_icuhg"]
background_mode = 2
sky = SubResource("Sky_50i22")
ambient_light_color = Color(1, 0.88767046, 0.775341, 1)
tonemap_exposure = 0.9979451
ssao_enabled = true
ssao_radius = 0.5
ssao_intensity = 14.0
ssao_detail = 0.0
ssil_enabled = true
glow_enabled = true
glow_levels/4 = 1.0
glow_intensity = 1.1835606
glow_strength = 0.65
glow_bloom = 1.0
fog_enabled = true
fog_mode = 1
fog_light_color = Color(0.75821966, 0.8417803, 0.92534095, 1)
fog_density = 0.004876705
fog_sky_affect = 0.0
[sub_resource type="CompositorEffect" id="CompositorEffect_q52t1"]
resource_local_to_scene = false
resource_name = ""
enabled = true
effect_callback_type = 1
access_resolved_color = false
access_resolved_depth = false
needs_motion_vectors = false
needs_normal_roughness = false
script = ExtResource("5_jgh18")
metadata/_custom_type_script = "uid://brcimd12tx3dm"
[sub_resource type="Compositor" id="Compositor_jbfcc"]
compositor_effects = Array[CompositorEffect]([SubResource("CompositorEffect_q52t1")])
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p2t1d"]
albedo_color = Color(0.135, 0.45, 0.18224995, 1)
[sub_resource type="BoxMesh" id="BoxMesh_p2t1d"]
size = Vector3(200, 0.08, 200)
[node name="Museum" type="Node3D" unique_id=1411616506]
[node name="DayNight" parent="." unique_id=1578787116 node_paths=PackedStringArray("camera") instance=ExtResource("1_daynt")]
camera = NodePath("../Camera3D")
thunder_sounds = Array[AudioStream]([ExtResource("2_l6e82"), ExtResource("3_28c1g"), ExtResource("4_d5ghv"), ExtResource("5_g8vyu"), ExtResource("6_iu8wf")])
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=6398994]
environment = SubResource("Environment_icuhg")
compositor = SubResource("Compositor_jbfcc")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=565189502]
transform = Transform3D(0.7246343, -0.20683524, 0.65736127, 0, 0.95389545, 0.30013812, -0.6891333, -0.21749045, 0.6912255, 0, 0, 0)
light_color = Color(1, 0.88767046, 0.775341, 1)
light_indirect_energy = 0.0
light_volumetric_fog_energy = 0.0
shadow_enabled = true
shadow_bias = 0.2
shadow_normal_bias = 0.0
shadow_opacity = 0.97
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="Terrain" 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
offset_right = 40.0
offset_bottom = 40.0
script = ExtResource("6_q52t1")
[node name="Snow" type="CheckButton" parent="Control" unique_id=1267493556]
layout_mode = 0
offset_left = 21.0
offset_top = 13.0
offset_right = 109.0
offset_bottom = 44.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 = "Snow"
[node name="Rain" type="CheckButton" parent="Control" unique_id=1387886007]
layout_mode = 0
offset_left = 21.0
offset_top = 41.0
offset_right = 109.0
offset_bottom = 72.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 = "Rain"
[node name="Wind" type="CheckButton" parent="Control" unique_id=1160113828]
layout_mode = 0
offset_left = 21.0
offset_top = 91.0
offset_right = 109.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)
theme_override_colors/font_hover_color = Color(0, 0, 0, 1)
theme_override_colors/font_hover_pressed_color = Color(0, 0, 0, 1)
text = "Wind"
[node name="Fireflies" type="CheckButton" parent="Control" unique_id=1177089839]
layout_mode = 0
offset_left = 21.0
offset_top = 115.0
offset_right = 130.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)
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="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"
[node name="DayTimeLabel" type="Label" parent="Control" unique_id=1673596218]
layout_mode = 0
offset_left = 26.0
offset_top = 150.0
offset_right = 135.0
offset_bottom = 173.0
theme_override_colors/font_color = Color(0, 0, 0, 1)
text = "Day Time"
[node name="DayTimeSlider" type="HSlider" parent="Control" unique_id=530788076]
layout_mode = 0
offset_left = 26.0
offset_top = 174.0
offset_right = 205.0
offset_bottom = 190.0
max_value = 1.0
step = 0.01
[node name="Dust" type="CheckButton" parent="Control" unique_id=2023312048]
layout_mode = 0
offset_left = 21.0
offset_top = 250.0
offset_right = 150.0
offset_bottom = 281.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)
button_pressed = true
text = "Dust"
[node name="Blur" type="CheckButton" parent="Control" unique_id=1758807681]
layout_mode = 0
offset_left = 21.0
offset_top = 278.0
offset_right = 150.0
offset_bottom = 309.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)
button_pressed = true
text = "Blur"
[node name="Pause" type="CheckButton" parent="Control" unique_id=156986934]
layout_mode = 0
offset_left = 21.0
offset_top = 189.0
offset_right = 158.0
offset_bottom = 220.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 = "Pause Time"
[node name="Shadows" type="CheckButton" parent="Control" unique_id=1751516495]
layout_mode = 0
offset_left = 21.0
offset_top = 302.0
offset_right = 150.0
offset_bottom = 333.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)
button_pressed = true
text = "Shadows"
[node name="Scene" type="Node" parent="." unique_id=701973010]
[node name="Grass" parent="Scene" unique_id=838519336 instance=ExtResource("7_pd1r3")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, -14)
[node name="Grain" parent="Scene" unique_id=1171350762 instance=ExtResource("7_w3se4")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
[node name="House_Muraglione" parent="Scene" unique_id=1060427946 instance=ExtResource("9_pd1r3")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.41167784, 0)
[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"]
[connection signal="value_changed" from="Control/DayTimeSlider" to="Control" method="_on_day_time_slider_value_changed"]
[connection signal="toggled" from="Control/Dust" to="Control" method="_on_dust_toggled"]
[connection signal="toggled" from="Control/Blur" to="Control" method="_on_blur_toggled"]
[connection signal="toggled" from="Control/Pause" to="Control" method="_on_pause_toggled"]
[connection signal="toggled" from="Control/Shadows" to="Control" method="_on_shadows_toggled"]

View File

@@ -27,7 +27,7 @@ instance_count = 40
mesh = SubResource("QuadMesh_rpt6v")
buffer = PackedFloat32Array(-1.001, 0, 0, -2.8797488, 0, 1.001, -5.966425e-08, -0.7477443, 0, -5.966425e-08, -1.001, -4.2194977, -1.001, 0, 0, -1.7037079, 0, 1.001, -5.966425e-08, -0.7477442, 0, -5.966425e-08, -1.001, -3.2446604, -1.001, 0, 0, 1.2830465, 0, 1.001, -5.966425e-08, -0.7477443, 0, -5.966425e-08, -1.001, -4.557446, -1.001, 0, 0, -5.028355, 0, 1.001, -5.966425e-08, -0.74774426, 0, -5.966425e-08, -1.001, -3.6429324, -1.001, 0, 0, -6.371053, 0, 1.001, -5.966425e-08, -0.7477439, 0, -5.966425e-08, -1.001, 4.1175256, 0, 0, -1.001, -1.5100684, 4.5406587e-08, 1.001, 0, -0.7477439, 1.001, -4.5406587e-08, 0, 4.42225, -1.001, 0, 0, -5.2487645, 0, 1.001, -5.966425e-08, -0.7477441, 0, -5.966425e-08, -1.001, -0.013931215, 0, 0, -1.001, 6.235317, 4.5406587e-08, 1.001, 0, -0.74774384, 1.001, -4.5406587e-08, 0, 6.248699, 0, 0, -1.001, 1.3825206, 4.5406587e-08, 1.001, 0, -0.7477441, 1.001, -4.5406587e-08, 0, 1.1873395, 0, 0, -1.001, 2.780786, 4.5406587e-08, 1.001, 0, -0.747744, 1.001, -4.5406587e-08, 0, 1.1765423, -1.001, 0, 0, 1.0532601, 0, 1.001, -5.966425e-08, -0.74774444, 0, -5.966425e-08, -1.001, -6.5395527, -1.001, 0, 0, -4.3666453, 0, 1.001, -5.966425e-08, -0.747744, 0, -5.966425e-08, -1.001, 1.6017916, -1.001, 0, 0, -1.3377903, 0, 1.001, -5.966425e-08, -0.7477441, 0, -5.966425e-08, -1.001, -0.6376221, 0, 0, -1.001, 5.4567842, 4.5406587e-08, 1.001, 0, -0.7477441, 1.001, -4.5406587e-08, 0, 0.5279622, 0, 0, -1.001, -1.2204466, 4.5406587e-08, 1.001, 0, -0.74774396, 1.001, -4.5406587e-08, 0, 1.4669147, -1.001, 0, 0, -5.0291324, 0, 1.001, -5.966425e-08, -0.74774426, 0, -5.966425e-08, -1.001, -3.9644425, 0, 0, -1.001, 4.144575, 4.5406587e-08, 1.001, 0, -0.7477443, 1.001, -4.5406587e-08, 0, -3.9907537, -1.001, 0, 0, -0.18894172, 0, 1.001, -5.966425e-08, -0.7477443, 0, -5.966425e-08, -1.001, -5.562557, 0, 0, -1.001, 3.410009, 4.5406587e-08, 1.001, 0, -0.74774396, 1.001, -4.5406587e-08, 0, 1.8935597, 0, 0, -1.001, -2.7810845, 4.5406587e-08, 1.001, 0, -0.7477439, 1.001, -4.5406587e-08, 0, 3.808044, -1.001, 0, 0, 0.284374, 0, 1.001, -5.966425e-08, -0.7477441, 0, -5.966425e-08, -1.001, -0.58144546, -1.001, 0, 0, -3.1262631, 0, 1.001, -5.966425e-08, -0.7477442, 0, -5.966425e-08, -1.001, -2.8066845, 0, 0, -1.001, 5.7749968, 4.5406587e-08, 1.001, 0, -0.7477441, 1.001, -4.5406587e-08, 0, 0.935482, -1.001, 0, 0, -5.218869, 0, 1.001, -5.966425e-08, -0.74774426, 0, -5.966425e-08, -1.001, -4.2917852, 0, 0, -1.001, 6.1626782, 4.5406587e-08, 1.001, 0, -0.7477441, 1.001, -4.5406587e-08, 0, 0.21193457, -1.001, 0, 0, 3.9669042, 0, 1.001, -5.966425e-08, -0.7477443, 0, -5.966425e-08, -1.001, -5.853158, 0, 0, -1.001, 2.2436643, 4.5406587e-08, 1.001, 0, -0.74774396, 1.001, -4.5406587e-08, 0, 3.1271167, 0, 0, -1.001, 2.4900956, 4.5406587e-08, 1.001, 0, -0.7477439, 1.001, -4.5406587e-08, 0, 3.9106765, 0, 0, -1.001, 5.5539966, 4.5406587e-08, 1.001, 0, -0.74774384, 1.001, -4.5406587e-08, 0, 6.162884, 0, 0, -1.001, -1.6500849, 4.5406587e-08, 1.001, 0, -0.74774384, 1.001, -4.5406587e-08, 0, 5.425037, 0, 0, -1.001, 1.2913516, 4.5406587e-08, 1.001, 0, -0.7477438, 1.001, -4.5406587e-08, 0, 5.9583297, 0, 0, -1.001, 3.403863, 4.5406587e-08, 1.001, 0, -0.7477441, 1.001, -4.5406587e-08, 0, -1.3604579, 0, 0, -1.001, 2.5133843, 4.5406587e-08, 1.001, 0, -0.7477441, 1.001, -4.5406587e-08, 0, -1.2172651, 0, 0, -1.001, -1.865159, 4.5406587e-08, 1.001, 0, -0.74774396, 1.001, -4.5406587e-08, 0, 2.02114, -1.001, 0, 0, -2.1462004, 0, 1.001, -5.966425e-08, -0.747744, 0, -5.966425e-08, -1.001, 1.2531993, 0, 0, -1.001, 6.005666, 4.5406587e-08, 1.001, 0, -0.747744, 1.001, -4.5406587e-08, 0, 1.2401769, 0, 0, -1.001, 2.402935, 4.5406587e-08, 1.001, 0, -0.7477439, 1.001, -4.5406587e-08, 0, 2.778954, -1.001, 0, 0, -6.482737, 0, 1.001, -5.966425e-08, -0.74774384, 0, -5.966425e-08, -1.001, 5.1091228, -1.001, 0, 0, 0.6619804, 0, 1.001, -5.966425e-08, -0.74774414, 0, -5.966425e-08, -1.001, -1.2692692, -1.001, 0, 0, 3.7678468, 0, 1.001, -5.966425e-08, -0.74774426, 0, -5.966425e-08, -1.001, -4.5863547)
[node name="Grass" unique_id=838519336 groups=["weather_materials", "wind_materials"] instance=ExtResource("1_1rhib")]
[node name="Grass" unique_id=838519336 groups=["wind_materials"] instance=ExtResource("1_1rhib")]
[node name="Leaf" parent="." index="0" unique_id=770569390]
visible = false