day night cycle tweaking

This commit is contained in:
Derek
2025-03-16 19:11:22 -05:00
parent e3b887d66c
commit b69226938e
4 changed files with 46 additions and 9 deletions

View File

@@ -1,10 +1,18 @@
[gd_scene load_steps=6 format=3 uid="uid://cwy8iv8nlwqrc"]
[gd_scene load_steps=8 format=3 uid="uid://cwy8iv8nlwqrc"]
[ext_resource type="Script" uid="uid://dl780dimuvcms" path="res://scripts/realtime_day_night_cycle.gd" id="1_idjmm"]
[sub_resource type="Gradient" id="Gradient_idjmm"]
offsets = PackedFloat32Array(0.00636943, 0.159236, 0.828025, 1)
colors = PackedColorArray(0.93, 0.7006, 0.2418, 1, 0.97, 0.97, 0.97, 1, 0.98, 0.98, 0.98, 1, 1, 0.666667, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_xp6wm"]
gradient = SubResource("Gradient_idjmm")
width = 24
[sub_resource type="Curve" id="Curve_idjmm"]
_limits = [0.0, 2.0, 0.0, 24.0]
_data = [Vector2(5, 0), 0.0, 0.66, 0, 0, Vector2(12, 2), 0.0, 0.0, 0, 0, Vector2(19, 0), -0.66, 0.0, 0, 0]
_data = [Vector2(5, 0), 0.0, 0.66, 0, 0, Vector2(12, 2), 0.0, 0.0, 0, 0, Vector2(20, 0), -0.66, 0.0, 0, 0]
point_count = 3
[sub_resource type="PhysicalSkyMaterial" id="PhysicalSkyMaterial_xp6wm"]
@@ -19,17 +27,20 @@ background_mode = 2
sky = SubResource("Sky_6g0ku")
ssr_enabled = true
ssao_enabled = true
ssil_enabled = true
sdfgi_enabled = true
glow_enabled = true
fog_density = 0.0005
[node name="Realtime Day Night Cycle" type="Node3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
script = ExtResource("1_idjmm")
sun_color = SubResource("GradientTexture1D_xp6wm")
sun_energy_over_time = SubResource("Curve_idjmm")
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_ml2st")
[node name="Sun" type="DirectionalLight3D" parent="."]
transform = Transform3D(0.603876, -0.0397012, 0.796089, -0.797078, -0.0300781, 0.603127, -2.96845e-10, -0.998759, -0.0498085, 0, 0, 0)
transform = Transform3D(0.969658, -0.064919, 0.235691, -0.0649191, 0.861104, 0.504268, -0.235691, -0.504268, 0.830761, 0, 0, 0)
shadow_enabled = true

View File

@@ -11,6 +11,7 @@ config_version=5
[application]
config/name="First Person Test"
config/tags=PackedStringArray("fps")
run/main_scene="uid://f7e0v1r6ra6c"
config/features=PackedStringArray("4.4", "Forward Plus")
config/icon="res://icon.svg"

View File

@@ -328,6 +328,11 @@ _data = {
[node name="AssetChecker" type="Node3D" groups=["ui"]]
[node name="Realtime Day Night Cycle" parent="." instance=ExtResource("26_qoxo0")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.9891, 1.53028, 4.26966)
set_time = 18.25
north_offset = null
[node name="CSGBox3D" type="CSGBox3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.54059, -4.88213, 0)
material_override = ExtResource("3_pecld")
@@ -579,5 +584,4 @@ libraries = {
}
autoplay = "Menu"
[node name="Realtime Day Night Cycle" parent="." instance=ExtResource("26_qoxo0")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.9891, 1.53028, 4.26966)
[connection signal="property_list_changed" from="Realtime Day Night Cycle" to="Realtime Day Night Cycle" method="_on_property_list_changed"]

View File

@@ -1,17 +1,38 @@
@tool
extends Node3D
@onready var sun: DirectionalLight3D = $Sun
@export var sun_color : GradientTexture1D
@export var realtime : bool = false
@export var set_time = 17.0
@export var north_offset : float
@export var sun_energy_over_time : Curve
@onready var sun: DirectionalLight3D = $Sun
func _ready() -> void:
change_sun()
func change_sun():
var sun_details = sun_angle_from_time()
sun.rotation.x = sun_details["angle"]
sun.rotation.y = north_offset
sun.light_energy = sun_details["energy"]
func sun_angle_from_time():
var time_dict = Time.get_time_dict_from_system()
var current_time = float(time_dict["hour"]) + (float(time_dict["minute"]) / 60)
print("current time: ", current_time)
var current_time
if realtime:
current_time = float(time_dict["hour"]) + (float(time_dict["minute"]) / 60)
else:
current_time = set_time
var angle : float = deg_to_rad((current_time/24.0) * 360.0 + 90.0)
var energy = sun_energy_over_time.sample(current_time)
print("current time: ", current_time)
print("Sun angle : ",rad_to_deg(angle))
return {"angle" : angle, "energy" : energy}
func _on_property_list_changed() -> void:
change_sun()