fix wind!

This commit is contained in:
2026-04-21 12:40:59 +02:00
parent 7a1ac3b698
commit 9a26a4114b
48 changed files with 2376 additions and 234 deletions

View File

@@ -11,10 +11,15 @@ extends Node3D
@export var eye_line: int = 3 @export var eye_line: int = 3
@export var district_scale: float = 0.05 @export var district_scale: float = 0.05
@export_group("Lamppost")
@export var lamppost_wire_material: ShaderMaterial
@export_range(0.01, 1.0) var wire_thickness: float = 0.05
var board: Dictionary = {} var board: Dictionary = {}
var last_pos_train: Vector2i = Vector2i(999999, 999999) var last_pos_train: Vector2i = Vector2i(999999, 999999)
var noise_generator: FastNoiseLite var noise_generator: FastNoiseLite
var altitude_generator: FastNoiseLite var altitude_generator: FastNoiseLite
var wire_connections: Dictionary = {}
var manual_biome: Biome = null var manual_biome: Biome = null
@@ -51,8 +56,7 @@ func _update_set_pieces() -> void:
var grid_z = roundi(sp.global_position.z / chunk_size) var grid_z = roundi(sp.global_position.z / chunk_size)
local_biome = _get_procedural_biome_name(noise_generator.get_noise_2d(grid_x, grid_z)) local_biome = _get_procedural_biome_name(noise_generator.get_noise_2d(grid_x, grid_z))
print("👉 Analyze: '", sp.name, "' | Need: [", sp.exclusive_biome, "] | Current biome is: [", local_biome, "]") print("Analyze: '", sp.name, "' | Need: [", sp.exclusive_biome, "] | Current biome is: [", local_biome, "]")
if local_biome == sp.exclusive_biome: if local_biome == sp.exclusive_biome:
sp.show() sp.show()
sp.process_mode = Node.PROCESS_MODE_INHERIT sp.process_mode = Node.PROCESS_MODE_INHERIT
@@ -60,23 +64,24 @@ func _update_set_pieces() -> void:
else: else:
sp.hide() sp.hide()
sp.process_mode = Node.PROCESS_MODE_DISABLED sp.process_mode = Node.PROCESS_MODE_DISABLED
print(" ❌ Temple is a invisible ghost.") print(" ❌ Temple is an invisible ghost.")
func _destroy_and_regenrate_world() -> void: func _destroy_and_regenrate_world() -> void:
#1. Turn off old temples #Turn off old temples
_update_set_pieces() _update_set_pieces()
#2. Destroy all models #Destroy all models
for pos in board.keys(): for pos in board.keys():
var cella = board[pos] var cella = board[pos]
if cella["tipo"] == "bioma": if cella["tipo"] == "bioma":
if cella.has("nodo") and is_instance_valid(cella["nodo"]): if cella.has("nodo") and is_instance_valid(cella["nodo"]):
cella["nodo"].queue_free() cella["nodo"].queue_free()
#3. Clean board #Clean board and wire connections
board.clear() board.clear()
wire_connections.clear()
#4. Create train #Create train
last_pos_train = Vector2i(999999, 999999) last_pos_train = Vector2i(999999, 999999)
_train_radar() _train_radar()
last_pos_train = Vector2i(999999, 999999) last_pos_train = Vector2i(999999, 999999)
@@ -96,13 +101,22 @@ func _physics_process(_delta: float) -> void:
_clean_far_chunks(current_pos) _clean_far_chunks(current_pos)
_train_radar() _train_radar()
func _generate_pieces_around_train(centro: Vector2i) -> void: func collect_all_chunkinfo(root: Node, list: Array[Node]) -> void:
if root == null: return
if root.has_method("get_rotated_data") or "have_lamppost" in root:
list.append(root)
for child in root.get_children():
collect_all_chunkinfo(child, list)
func _generate_pieces_around_train(center: Vector2i) -> void:
for x in range(-eye_line, eye_line + 1): for x in range(-eye_line, eye_line + 1):
for z in range(-eye_line, eye_line + 1): for z in range(-eye_line, eye_line + 1):
var grid_pos = centro + Vector2i(x, z) var grid_pos = center + Vector2i(x, z)
if not board.has(grid_pos): if not board.has(grid_pos):
var ce_obstacle = _register_cell_with_laser(grid_pos) var ce_obstacle = _register_cell_with_ray(grid_pos)
if not ce_obstacle: if not ce_obstacle:
_add_compatible_biome(grid_pos) _add_compatible_biome(grid_pos)
@@ -123,7 +137,7 @@ func _get_procedural_biome_name(value: float) -> String:
var index = clamp(int(normalized_value * biome_list.size()), 0, biome_list.size() - 1) var index = clamp(int(normalized_value * biome_list.size()), 0, biome_list.size() - 1)
return biome_list[index].name return biome_list[index].name
func _register_cell_with_laser(grid_pos: Vector2i) -> bool: func _register_cell_with_ray(grid_pos: Vector2i) -> bool:
if board.has(grid_pos): return true if board.has(grid_pos): return true
var world_pos = Vector3(grid_pos.x * chunk_size, 0, grid_pos.y * chunk_size) var world_pos = Vector3(grid_pos.x * chunk_size, 0, grid_pos.y * chunk_size)
@@ -136,28 +150,72 @@ func _register_cell_with_laser(grid_pos: Vector2i) -> bool:
if result.size() > 0: if result.size() > 0:
var collider = result["collider"] var collider = result["collider"]
var current_node = collider var root_chunk = collider
var info_list: Array[Node] = []
#Find parent node
while root_chunk != null and root_chunk != get_tree().root:
collect_all_chunkinfo(root_chunk, info_list)
if info_list.size() > 0:
break
root_chunk = root_chunk.get_parent()
var right_info_node = null
#Find closest chunk to the ray
if info_list.size() > 0:
var min_distance = 999999.0
var center_cell_pos = Vector3(world_pos.x, 0, world_pos.z)
for info in info_list:
if info is Node3D:
var pos_info = Vector3(info.global_position.x, 0, info.global_position.z)
var dist = center_cell_pos.distance_to(pos_info)
if dist < min_distance:
min_distance = dist
right_info_node = info
#If no node is found use first element
if right_info_node == null and info_list.size() > 0:
right_info_node = info_list[0]
var exit_found = {"north": false, "est": false, "south": false, "west": false} var exit_found = {"north": false, "est": false, "south": false, "west": false}
var height_found = {"north": 0, "est": 0, "south": 0, "west": 0} var height_found = {"north": 0, "est": 0, "south": 0, "west": 0}
var have_lamppost = false
while current_node != null and current_node != get_tree().root: #Get node info
if current_node.has_method("get_rotated_data"): if right_info_node != null:
var rotation_steps = roundi(rad_to_deg(current_node.global_rotation.y) / -90.0) if right_info_node.has_method("get_rotated_data"):
var data = current_node.get_rotated_data(rotation_steps) var rotation_steps = roundi(rad_to_deg(right_info_node.global_rotation.y) / -90.0)
var data = right_info_node.get_rotated_data(rotation_steps)
exit_found = data["connections"] exit_found = data["connections"]
height_found = data["heights"] height_found = data["heights"]
break
current_node = current_node.get_parent()
board[grid_pos] = {"type": "obstacle", "exit": exit_found, "heights": height_found} if "have_lamppost" in right_info_node:
have_lamppost = right_info_node.have_lamppost
#Add piece to the grid
board[grid_pos] = {
"type": "obstacle",
"exit": exit_found,
"heights": height_found,
"node": root_chunk,
"info": right_info_node,
"have_lamppost": have_lamppost
}
if have_lamppost:
_connect_lamppost_wires(grid_pos)
return true return true
return false return false
func _add_compatible_biome(grid_pos: Vector2i) -> void: func _add_compatible_biome(grid_pos: Vector2i) -> void:
var req_conn_north = _needed_connections(grid_pos + Vector2i(0, -1), "south") var req_conn_north = _needed_connection(grid_pos + Vector2i(0, -1), "south")
var req_conn_est = _needed_connections(grid_pos + Vector2i(1, 0), "west") var req_conn_est = _needed_connection(grid_pos + Vector2i(1, 0), "west")
var req_conn_south = _needed_connections(grid_pos + Vector2i(0, 1), "north") var req_conn_south = _needed_connection(grid_pos + Vector2i(0, 1), "north")
var req_conn_west = _needed_connections(grid_pos + Vector2i(-1, 0), "est") var req_conn_west = _needed_connection(grid_pos + Vector2i(-1, 0), "est")
var req_height_north = _needed_heights(grid_pos + Vector2i(0, -1), "south") var req_height_north = _needed_heights(grid_pos + Vector2i(0, -1), "south")
var req_height_est = _needed_heights(grid_pos + Vector2i(1, 0), "west") var req_height_est = _needed_heights(grid_pos + Vector2i(1, 0), "west")
@@ -172,8 +230,11 @@ func _add_compatible_biome(grid_pos: Vector2i) -> void:
for scene in zone_catalogue: for scene in zone_catalogue:
var test_chunk = scene.instantiate() var test_chunk = scene.instantiate()
var test_list: Array[Node] = []
collect_all_chunkinfo(test_chunk, test_list)
var info_test = test_list[0] if test_list.size() > 0 else null
if test_chunk.has_method("get_rotated_data"): if info_test != null and info_test.has_method("get_rotated_data"):
for rot in range(4): for rot in range(4):
var data = test_chunk.get_rotated_data(rot) var data = test_chunk.get_rotated_data(rot)
var u_conn = data["connections"] var u_conn = data["connections"]
@@ -221,30 +282,53 @@ func _add_compatible_biome(grid_pos: Vector2i) -> void:
new_chunk.position = Vector3(grid_pos.x * chunk_size, 0, grid_pos.y * chunk_size) new_chunk.position = Vector3(grid_pos.x * chunk_size, 0, grid_pos.y * chunk_size)
new_chunk.rotation.y = choise.rotation * (-PI / 2.0) new_chunk.rotation.y = choise.rotation * (-PI / 2.0)
board[grid_pos] = {"type": "biome", "exit": choise.data["connections"], "heights": choise.data["heights"], "nodo": new_chunk} var new_list: Array[Node] = []
collect_all_chunkinfo(new_chunk, new_list)
var info_new = new_list[0] if new_list.size() > 0 else null
var have_lamppost = false
if info_new != null and "have_lamppost" in new_chunk:
have_lamppost = info_new.have_lamppost
board[grid_pos] = {
"type": "bioma",
"exit": choise.data["connections"],
"heights": choise.data["heights"],
"node": new_chunk,
"info": info_new,
"have_lamppost": have_lamppost
}
if have_lamppost:
_connect_lamppost_wires(grid_pos)
else: else:
push_warning("⚠️ One piece miss for position " + str(grid_pos) + "!")
var fmt_alt = func(req): return str(req) if req != -1 else "Free"
#var fmt_conn = func(req): return "Yes" if req == 1 else ("No" if req == 0 else "Free")
print("We need missed piece -> North: ", fmt_alt.call(req_height_north), " | Est: ", fmt_alt.call(req_height_est), " | South: ", fmt_alt.call(req_height_south), " | West: ", fmt_alt.call(req_height_west))
var backup = zone_catalogue[0].instantiate() var backup = zone_catalogue[0].instantiate()
add_child(backup) add_child(backup)
backup.position = Vector3(grid_pos.x * chunk_size, 0, grid_pos.y * chunk_size) backup.position = Vector3(grid_pos.x * chunk_size, 0, grid_pos.y * chunk_size)
var backup_list: Array[Node] = []
collect_all_chunkinfo(backup, backup_list)
var info_backup = backup_list[0] if backup_list.size() > 0 else null
var safe_heights = { var safe_heights = {
"north": req_height_north if req_height_north != -1 else height_target, "north": req_height_north if req_height_north != -1 else height_target,
"est": req_height_est if req_height_est != -1 else height_target, "est": req_height_est if req_height_est != -1 else height_target,
"south": req_height_south if req_height_south != -1 else height_target, "south": req_height_south if req_height_south != -1 else height_target,
"west": req_height_west if req_height_west != -1 else height_target "west": req_height_west if req_height_west != -1 else height_target
} }
board[grid_pos] = {"type": "biome", "exit": {"north":false, "est":false, "south":false, "west":false}, "heights": safe_heights, "node": backup} board[grid_pos] = {
"type": "biome",
"exit": {"north":false, "est":false, "south":false, "west":false},
"heights": safe_heights,
"node": backup,
"info": info_backup,
"have_lamppost": false
}
func _needed_connections(near_pos: Vector2i, side_needed: String) -> int: func _needed_connection(near_pos: Vector2i, side_needed: String) -> int:
if not board.has(near_pos): if not board.has(near_pos):
_register_cell_with_laser(near_pos) _register_cell_with_ray(near_pos)
if board.has(near_pos) and board[near_pos].has("exit"): if board.has(near_pos) and board[near_pos].has("exit"):
return 1 if board[near_pos]["exit"][side_needed] else 0 return 1 if board[near_pos]["exit"][side_needed] else 0
return -1 return -1
@@ -267,6 +351,8 @@ func _train_radar() -> void:
var current_progress = rail_path.train_progress var current_progress = rail_path.train_progress
var total_length = rail_path.curve.get_baked_length() var total_length = rail_path.curve.get_baked_length()
#var exchange_distance = 0.0
#var next_biome = ""
for step in range(1, 31): for step in range(1, 31):
var next_progress = wrapf(current_progress + (step * chunk_size), 0.0, total_length) var next_progress = wrapf(current_progress + (step * chunk_size), 0.0, total_length)
@@ -275,11 +361,11 @@ func _train_radar() -> void:
var f_x = roundi(next_global_pos.x / chunk_size) var f_x = roundi(next_global_pos.x / chunk_size)
var f_z = roundi(next_global_pos.z / chunk_size) var f_z = roundi(next_global_pos.z / chunk_size)
var next_biome = _get_procedural_biome_name(noise_generator.get_noise_2d(f_x, f_z)) var future_biome = _get_procedural_biome_name(noise_generator.get_noise_2d(f_x, f_z))
if next_biome != current_biome: if future_biome != current_biome:
#distanza_cambio = step * chunk_size #exchange_distance = step * chunk_size
#prossimo_bioma = next_biome #next_biome = future_biome
break break
func _clean_far_chunks(centro_attuale: Vector2i) -> void: func _clean_far_chunks(centro_attuale: Vector2i) -> void:
@@ -300,3 +386,186 @@ func _clean_far_chunks(centro_attuale: Vector2i) -> void:
for pos in cells_to_remove: for pos in cells_to_remove:
board.erase(pos) board.erase(pos)
func _get_lampposts(info_node: Node, side: String) -> Array[Node3D]:
var lampposts: Array[Node3D] = []
if side == "sx":
if "connection_left" in info_node and info_node.connection_left != null:
for p in info_node.connection_left:
if is_instance_valid(p): lampposts.append(p)
#if lampposts.is_empty() and "nodo_attacco_sx" in nodo_info and is_instance_valid(nodo_info.get("nodo_attacco_sx")):
# lampposts.append(nodo_info.get("nodo_attacco_sx"))
else:
if "connection_right" in info_node and info_node.connection_right != null:
for p in info_node.connection_right:
if is_instance_valid(p): lampposts.append(p)
#if lampposts.is_empty() and "nodo_attacco_dx" in nodo_info and is_instance_valid(nodo_info.get("nodo_attacco_dx")):
# lampposts.append(nodo_info.get("nodo_attacco_dx"))
return lampposts
func _connect_lamppost_wires(new_board_pos: Vector2i) -> void:
var new_cell = board[new_board_pos]
var new_root = new_cell["node"]
var new_info = new_cell["info"]
if new_info == null: return
if new_info is Node3D: new_info.force_update_transform()
var new_sx = _get_lampposts(new_info, "sx")
var new_dx = _get_lampposts(new_info, "dx")
if new_sx.is_empty() or new_dx.is_empty(): return
var new_id = new_root.get_instance_id()
if not wire_connections.has(new_id): wire_connections[new_id] = 0
if wire_connections[new_id] >= 2: return
var p_sx_my_best = null; var p_dx_my_best = null
var p_sx_your_best = null; var p_dx_your_best = null
var best_closest_to_root = null
var best_distance = 999999.0
var ray_research = 3
for x in range(-ray_research, ray_research + 1):
for z in range(-ray_research, ray_research + 1):
if x == 0 and z == 0: continue
var closest_post = new_board_pos + Vector2i(x, z)
if board.has(closest_post) and board[closest_post].get("have_lamppost", false):
var closest_root = board[closest_post]["node"]
var closest_info = board[closest_post]["info"]
if not is_instance_valid(closest_root) or closest_root == new_root or closest_info == null: continue
var closest_id = closest_root.get_instance_id()
var closest_connections = wire_connections.get(closest_id, 0)
if closest_connections >= 2: continue
if closest_info is Node3D: closest_info.force_update_transform()
var closest_sx = _get_lampposts(closest_info, "sx")
var closest_dx = _get_lampposts(closest_info, "dx")
if closest_sx.is_empty() or closest_dx.is_empty(): continue
for i_m in range(new_sx.size()):
for i_t in range(closest_sx.size()):
var my_c = (new_sx[i_m].global_position + new_dx[i_m].global_position) / 2.0
var your_c = (closest_sx[i_t].global_position + closest_dx[i_t].global_position) / 2.0
var dist = my_c.distance_to(your_c)
if dist < best_distance:
best_distance = dist
best_closest_to_root = closest_root
p_sx_my_best = new_sx[i_m]
p_dx_my_best = new_dx[i_m]
p_sx_your_best = closest_sx[i_t]
p_dx_your_best = closest_dx[i_t]
if best_closest_to_root == null:
for x in range(-ray_research, ray_research + 1):
for z in range(-ray_research, ray_research + 1):
if x == 0 and z == 0: continue
var closest_pos = new_board_pos + Vector2i(x, z)
if board.has(closest_pos) and board[closest_pos].get("have_lamppost", false):
var closest_root = board[closest_pos]["node"]
var closest_info = board[closest_pos]["info"]
if not is_instance_valid(closest_root) or closest_root == new_root or closest_info == null: continue
if closest_info is Node3D: closest_info.force_update_transform()
var closest_sx = _get_lampposts(closest_info, "sx")
var closest_dx = _get_lampposts(closest_info, "dx")
if closest_sx.is_empty() or closest_dx.is_empty(): continue
for i_m in range(new_sx.size()):
for i_t in range(closest_sx.size()):
var c_mio = (new_sx[i_m].global_position + new_dx[i_m].global_position) / 2.0
var c_tuo = (closest_sx[i_t].global_position + closest_dx[i_t].global_position) / 2.0
var dist = c_mio.distance_to(c_tuo)
if dist < best_distance:
best_distance = dist
best_closest_to_root = closest_root
p_sx_my_best = new_sx[i_m]
p_dx_my_best = new_dx[i_m]
p_sx_your_best = closest_sx[i_t]
p_dx_your_best = closest_dx[i_t]
var max_dist = chunk_size * 8.0
if best_closest_to_root != null and best_distance < max_dist:
var dist_streight = p_sx_my_best.global_position.distance_to(p_sx_your_best.global_position) + p_dx_my_best.global_position.distance_to(p_dx_your_best.global_position)
var dist_cross = p_sx_my_best.global_position.distance_to(p_dx_your_best.global_position) + p_dx_my_best.global_position.distance_to(p_sx_your_best.global_position)
if dist_streight <= dist_cross:
_draw_parable(p_sx_my_best.global_position, p_sx_your_best.global_position, new_root)
_draw_parable(p_dx_my_best.global_position, p_dx_your_best.global_position, new_root)
else:
_draw_parable(p_sx_my_best.global_position, p_dx_your_best.global_position, new_root)
_draw_parable(p_dx_my_best.global_position, p_sx_your_best.global_position, new_root)
wire_connections[new_id] += 1
var closest_id = best_closest_to_root.get_instance_id()
if not wire_connections.has(closest_id): wire_connections[closest_id] = 0
wire_connections[closest_id] += 1
func _draw_parable(p1: Vector3, p2: Vector3, parent: Node3D) -> void:
var segments = 15
var lowering = 1.5
var curve_points = []
var sag_factors = []
for i in range(segments + 1):
var t = float(i) / float(segments)
var global_post = p1.lerp(p2, t)
var gravity = lowering * (1.0 - pow(2.0 * t - 1.0, 2.0))
global_post.y -= gravity
curve_points.append(parent.to_local(global_post))
sag_factors.append(sin(t * PI))
var st = SurfaceTool.new()
st.begin(Mesh.PRIMITIVE_TRIANGLES)
var lati = 4
var ray = wire_thickness / 2.0
for i in range(curve_points.size() - 1):
var p_current = curve_points[i]
var p_next = curve_points[i+1]
var sag_currnet = sag_factors[i]
var sag_next = sag_factors[i+1]
var dir = (p_next - p_current).normalized()
var up = Vector3.UP
var right = dir.cross(up).normalized()
if right.length_squared() < 0.01:
right = dir.cross(Vector3.RIGHT).normalized()
up = right.cross(dir).normalized()
for s in range(lati):
var ang1 = (float(s) / lati) * TAU
var ang2 = (float((s + 1) % lati) / lati) * TAU
var offset1 = (right * cos(ang1) + up * sin(ang1)) * ray
var offset2 = (right * cos(ang2) + up * sin(ang2)) * ray
st.set_color(Color(sag_currnet, 0, 0, 1))
st.add_vertex(p_current + offset1)
st.set_color(Color(sag_currnet, 0, 0, 1))
st.add_vertex(p_current + offset2)
st.set_color(Color(sag_next, 0, 0, 1))
st.add_vertex(p_next + offset1)
st.set_color(Color(sag_currnet, 0, 0, 1))
st.add_vertex(p_current + offset2)
st.set_color(Color(sag_next, 0, 0, 1))
st.add_vertex(p_next + offset2)
st.set_color(Color(sag_next, 0, 0, 1))
st.add_vertex(p_next + offset1)
var wire_node = MeshInstance3D.new()
wire_node.mesh = st.commit()
if lamppost_wire_material: wire_node.material_override = lamppost_wire_material
parent.add_child(wire_node)

View File

@@ -1,6 +1,8 @@
[gd_scene format=3 uid="uid://ujv2f1l4d2ps"] [gd_scene format=3 uid="uid://ujv2f1l4d2ps"]
[ext_resource type="Script" uid="uid://ct2k25kslaxe5" path="res://core/biome_generator/biome_generator.gd" id="1_c7ilo"] [ext_resource type="Script" uid="uid://ct2k25kslaxe5" path="res://core/biome_generator/biome_generator.gd" id="1_c7ilo"]
[ext_resource type="Material" uid="uid://b8p1sjxisi522" path="res://core/biome_generator/wires.tres" id="2_w42pm"]
[node name="biome_generator" type="Node3D" unique_id=1861369341] [node name="biome_generator" type="Node3D" unique_id=1861369341]
script = ExtResource("1_c7ilo") script = ExtResource("1_c7ilo")
lamppost_wire_material = ExtResource("2_w42pm")

View File

@@ -12,12 +12,17 @@ class_name ChunkInfo
@export var south: bool = false @export var south: bool = false
@export var west: bool = false @export var west: bool = false
@export_group("Maring heights (level 0, 1, 2)") @export_group("Margin heights (level 0, 1, 2)")
@export var height_north: int = 0 @export var height_north: int = 0
@export var height_est: int = 0 @export var height_est: int = 0
@export var height_south: int = 0 @export var height_south: int = 0
@export var height_west: int = 0 @export var height_west: int = 0
@export_group("Lamppost")
@export var have_lamppost: bool = false
@export var connection_left: Array[Node3D]
@export var connection_right: Array[Node3D]
func _ready() -> void: func _ready() -> void:
if exclusive_biome != "": if exclusive_biome != "":
add_to_group("set_pieces") add_to_group("set_pieces")

View File

@@ -0,0 +1,27 @@
shader_type spatial;
render_mode blend_mix, depth_draw_opaque, cull_disabled;
//Wire color
uniform vec4 albedo_color : source_color = vec4(0.1, 0.1, 0.1, 1.0);
global uniform float global_wind_strength;
global uniform float global_wind_speed;
void vertex() {
//COLOR.r is the drawing. 0 -> lampost (no move); 1.0 is the center of the wire
float movement = COLOR.r;
//Create a wave (based on position and time to be random)
float wind_wave = 0.0;
if (global_wind_speed > 0.0 && global_wind_strength > 0.0) {
wind_wave = sin(TIME * global_wind_speed + NODE_POSITION_WORLD.x * 0.5) * global_wind_strength;
}
VERTEX.x += wind_wave * 0.1 * movement;
VERTEX.z += wind_wave * 0.05 * movement;
}
void fragment() {
ALBEDO = albedo_color.rgb;
ROUGHNESS = 0.9;
}

View File

@@ -0,0 +1 @@
uid://du8cu413q5scy

View File

@@ -0,0 +1,7 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://b8p1sjxisi522"]
[ext_resource type="Shader" uid="uid://du8cu413q5scy" path="res://core/biome_generator/wires.gdshader" id="1_6saq1"]
[resource]
render_priority = 0
shader = ExtResource("1_6saq1")

View File

@@ -1,11 +1,11 @@
shader_type canvas_item; shader_type canvas_item;
uniform sampler2D screen_texture : hint_screen_texture, filter_linear_mipmap; uniform sampler2D screen_texture : hint_screen_texture, filter_linear_mipmap;
global uniform float global_wind_speed;
uniform vec4 dust_color : source_color = vec4(1.0, 0.456, 0.125, 0.6); uniform vec4 dust_color : source_color = vec4(1.0, 0.456, 0.125, 0.6);
//Wind -> negative x = to the left. positive y = to the bottom uniform vec2 wind_speed = vec2(-0.2, 0.05);
uniform vec2 wind_velocity = vec2(-0.2, 0.05);
uniform float wind_oscillation : hint_range(0.0, 1.0) = 0.3; uniform float wind_oscillation : hint_range(0.0, 1.0) = 0.3;
uniform float dust_speed : hint_range(0.01, 1.0) = 0.15; uniform float dust_speed : hint_range(0.01, 1.0) = 0.15;
@@ -30,7 +30,8 @@ void fragment() {
float base_time = TIME * dust_speed; float base_time = TIME * dust_speed;
vec2 osc = vec2(sin(TIME * 0.5), cos(TIME * 0.3)) * wind_oscillation; vec2 osc = vec2(sin(TIME * 0.5), cos(TIME * 0.3)) * wind_oscillation;
vec2 final_wind = (wind_velocity + osc) * dust_speed; float wind_active = step(0.0001, abs(global_wind_speed));
vec2 final_wind = ((wind_speed + osc) * dust_speed) * wind_active;
float final_particle_alpha = 0.0; float final_particle_alpha = 0.0;

View File

@@ -5,7 +5,7 @@
[resource] [resource]
shader = ExtResource("1_80hx2") shader = ExtResource("1_80hx2")
shader_parameter/dust_color = Color(1, 0.9019608, 0.7019608, 0.6) shader_parameter/dust_color = Color(1, 0.9019608, 0.7019608, 0.6)
shader_parameter/wind_velocity = Vector2(-1, 0.5) shader_parameter/wind_speed = Vector2(-0.2, 0.05)
shader_parameter/wind_oscillation = 0.0150000007125 shader_parameter/wind_oscillation = 0.0150000007125
shader_parameter/dust_speed = 0.15 shader_parameter/dust_speed = 0.15
shader_parameter/size_min = 0.010000000475 shader_parameter/size_min = 0.010000000475

View File

@@ -14,19 +14,6 @@
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ruhh7"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_ruhh7"]
render_priority = 0 render_priority = 0
shader = ExtResource("2_i3hjl") shader = ExtResource("2_i3hjl")
shader_parameter/cloud_scale = 0.05
shader_parameter/cloud_speed = 0.05
shader_parameter/direction = Vector2(0.5, 0.2)
shader_parameter/sun_angle = Vector2(0.5, 0.5)
shader_parameter/cloud_density = 0.4
shader_parameter/center_sharpness = 0.14
shader_parameter/shadow_color = Color(0, 0, 0, 1)
shader_parameter/opacity_center = 0.5
shader_parameter/opacity_edge = 0.2
shader_parameter/fade_start = 150.0
shader_parameter/fade_end = 300.0
shader_parameter/height_fade_start = 10.0
shader_parameter/height_fade_end = 50.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r4tfj"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r4tfj"]
transparency = 2 transparency = 2

View File

@@ -70,8 +70,22 @@ func _ready() -> void:
func ApplyWindNoiseToMaterials(): func ApplyWindNoiseToMaterials():
var noise_tex = preload("res://core/daynight/noise.tres") var noise_tex = preload("res://core/daynight/noise.tres")
for node in get_tree().get_nodes_in_group("wind_node"): for node in get_tree().get_nodes_in_group("wind_node"):
if node is GeometryInstance3D and node.material_override != null: _apply_wind_noise_to_node(node, noise_tex)
node.material_override.set_shader_parameter("wind_noise", noise_tex)
func _apply_wind_noise_to_node(node: Node, noise_tex: Texture2D) -> void:
if node is GeometryInstance3D:
var material_override := node.material_override as ShaderMaterial
if material_override:
material_override.set_shader_parameter("wind_noise", noise_tex)
if node is MeshInstance3D:
for surface_index in node.get_surface_override_material_count():
var surface_material := node.get_surface_override_material(surface_index) as ShaderMaterial
if surface_material:
surface_material.set_shader_parameter("wind_noise", noise_tex)
for child in node.get_children():
_apply_wind_noise_to_node(child, noise_tex)
func ApplyWeatherShaderToMaterials(): func ApplyWeatherShaderToMaterials():
var weather_shader = preload("res://core/daynight/weather_overlay.tres") var weather_shader = preload("res://core/daynight/weather_overlay.tres")

View File

@@ -0,0 +1,134 @@
shader_type spatial;
render_mode specular_disabled, cull_disabled, ambient_light_disabled;
// --- GLOBAL UNIFORMS (Vento e Neve) ---
global uniform float global_wind_scale;
global uniform float global_wind_speed;
global uniform float global_wind_strength;
global uniform vec2 global_wind_direction;
//global uniform sampler2D global_wind_noise : filter_linear_mipmap;
global uniform float global_snow_amount;
// --- PARAMETRI ESTETICI ---
uniform bool billboard_enabled = true;
uniform bool wind_enabled = true;
uniform vec4 base_color : source_color = vec4(0.2, 0.6, 0.3, 1.0);
uniform sampler2D alpha_texture : source_color, filter_nearest;
uniform float leaves_scale = 1.0;
uniform float rotation_degrees = 0.0;
uniform vec2 texture_offset = vec2(0.0, 0.0);
uniform float opacity : hint_range(0.0, 1.0) = 1.0;
// ---> NUOVI PARAMETRI PER VARIAZIONE ERBA <---
group_uniforms Grass_Variance;
uniform sampler2D color_variance_noise : filter_linear_mipmap; // Trascina qui un FastNoiseLite
uniform float variance_scale = 0.1; // Grandezza delle chiazze (più basso = chiazze più grandi)
uniform vec4 variance_color : source_color = vec4(0.3, 0.5, 0.2, 1.0); // Colore delle chiazze (es: verde più scuro o giallastro)
uniform float variance_intensity : hint_range(0.0, 1.0) = 0.4; // Quanto si vedono le chiazze
uniform vec4 snow_color : source_color = vec4(0.85, 0.9, 0.95, 1.0);
// --- CONTROLLO GRADIENTE E RANDOM ---
uniform float height_min = 0.0;
uniform float height_max = 5.0;
uniform float shadow_intensity : hint_range(0.0, 1.0) = 0.5;
uniform float highlight_intensity : hint_range(0.0, 1.0) = 0.3;
uniform float light_steps : hint_range(1.0, 10.0) = 4.0;
uniform float random_mix : hint_range(0.0, 1.0) = 0.3;
uniform float cast_shadow_strength : hint_range(0.0, 1.0) = 0.6;
varying vec3 v_final_color;
varying float v_shade_factor;
varying vec3 v_world_pos; // Passiamo la posizione mondo per il rumore
float hash(vec3 p) {
p = fract(p * 0.1031);
p += dot(p, p.yzx + 33.33);
return fract((p.x + p.y) * p.z);
}
void vertex() {
vec3 instance_pos = MODEL_MATRIX[3].xyz;
v_world_pos = instance_pos; // Salviamo la posizione dell'istanza
// --- LOGICA VENTO ---
float total_angle = radians(rotation_degrees);
if (wind_enabled) {
float time = TIME * global_wind_speed;
vec2 noise_uv = (instance_pos.xz * global_wind_scale) + (time * global_wind_direction.xy * 0.5);
//float noise_val = textureLod(wind_noise, noise_uv, 2.0).r;
//float sway = sin(time + (noise_val * 10.0));
float sway = sin(time + (0.1 * 10.0));
total_angle += (sway * global_wind_strength);
}
// --- CALCOLO COLORE ---
float h_factor = clamp((instance_pos.y - height_min) / (height_max - height_min), 0.0, 1.0);
float leaf_rand = hash(instance_pos);
float combined_factor = mix(h_factor, leaf_rand, random_mix);
combined_factor = ceil(combined_factor * light_steps) / light_steps;
v_shade_factor = combined_factor;
vec3 dark_color = base_color.rgb * (1.0 - shadow_intensity);
vec3 light_color = base_color.rgb + (vec3(1.0) - base_color.rgb) * highlight_intensity;
v_final_color = mix(dark_color, light_color, combined_factor);
// --- LOGICA TRASFORMAZIONE ---
if (billboard_enabled) {
vec3 view_pos_origin = (VIEW_MATRIX * vec4(instance_pos, 1.0)).xyz;
vec2 offset = (UV - 0.5) * leaves_scale;
float c = cos(total_angle);
float s = sin(total_angle);
vec2 rotated_offset = vec2(offset.x * c - offset.y * s, offset.x * s + offset.y * c);
vec3 final_pos = view_pos_origin + vec3(rotated_offset.x, rotated_offset.y, 0.0);
MODELVIEW_MATRIX = mat4(1.0);
MODELVIEW_MATRIX[3].xyz = final_pos;
VERTEX = vec3(0.0);
} else {
float c = cos(total_angle);
float s = sin(total_angle);
vec2 local_v = (VERTEX.xy) * leaves_scale;
VERTEX.x = local_v.x * c - local_v.y * s;
VERTEX.y = local_v.x * s + local_v.y * c;
}
}
void fragment() {
vec2 shifted_uv = UV + texture_offset;
vec4 tex = texture(alpha_texture, shifted_uv);
// ---> LOGICA VARIAZIONE COLORE MONDO <---
// Usiamo la posizione XZ del mondo per campionare il rumore
float noise_sample = texture(color_variance_noise, v_world_pos.xz * variance_scale).r;
// Applichiamo la variazione al colore finale dell'erba
vec3 varied_grass_color = mix(v_final_color, variance_color.rgb, noise_sample * variance_intensity);
float top_mask = 1.0 - shifted_uv.y;
float snow_mask = smoothstep(1.0 - global_snow_amount, 1.2 - global_snow_amount, top_mask);
snow_mask *= step(0.01, global_snow_amount);
vec3 dark_snow = snow_color.rgb * (1.0 - shadow_intensity);
vec3 shaded_snow = mix(dark_snow, snow_color.rgb, v_shade_factor);
// Mescoliamo il colore variato con la neve
vec3 final_albedo = mix(varied_grass_color, shaded_snow, snow_mask);
ALBEDO = final_albedo;
ALPHA = tex.r * opacity;
ALPHA_SCISSOR_THRESHOLD = 0.5;
ROUGHNESS = 0.02;
}
void light() {
float shadow_factor = mix(1.0 - cast_shadow_strength, 1.0, ATTENUATION);
float cutoff_mask = smoothstep(0.0, 0.05, ATTENUATION);
DIFFUSE_LIGHT += (shadow_factor * LIGHT_COLOR) * cutoff_mask;
}

View File

@@ -0,0 +1 @@
uid://8l8glwvvs7fb

View File

@@ -43,7 +43,7 @@ void vertex() {
vec3 instance_pos = MODEL_MATRIX[3].xyz; vec3 instance_pos = MODEL_MATRIX[3].xyz;
float total_angle = radians(rotation_degrees); float total_angle = radians(rotation_degrees);
if (wind_enabled) { if (wind_enabled && global_wind_speed > 0.0 && global_wind_strength > 0.0) {
float time = TIME * global_wind_speed; float time = TIME * global_wind_speed;
vec2 noise_uv = (instance_pos.xz * global_wind_scale) + (time * global_wind_direction * 0.5); vec2 noise_uv = (instance_pos.xz * global_wind_scale) + (time * global_wind_direction * 0.5);
float noise_val = textureLod(wind_noise, noise_uv, 2.0).r; float noise_val = textureLod(wind_noise, noise_uv, 2.0).r;

View File

@@ -0,0 +1,101 @@
shader_type spatial;
render_mode blend_mix, depth_draw_always;
// --- PARAMETRI COLORI ACQUA ---
uniform vec4 deep_water_color : source_color = vec4(0.0, 0.1, 0.2, 1.0);
uniform vec4 shallow_water_color : source_color = vec4(0.0, 0.4, 0.7, 1.0);
// Impostato a 5.0 come piace a te per un'acqua super profonda!
uniform float beer_law_factor : hint_range(0.0, 10.0) = 5.0;
// ---> PARAMETRI FAKE REFLECTION (SPECCHIATA) <---
group_uniforms Fake_Reflection_Proximity;
uniform sampler2D screen_texture : hint_screen_texture, filter_linear_mipmap;
uniform float reflection_strength : hint_range(0.0, 1.0) = 0.6;
uniform float reflection_offset : hint_range(-0.5, 0.5) = 0.05; // Offset base
// LA MAGIA DELLO SPECCHIO: Valori positivi (es. 0.1 o 0.2) capovolgeranno l'immagine
uniform float reflection_stretch : hint_range(-1.0, 1.0) = 0.1;
uniform float max_reflection_distance : hint_range(0.1, 10.0) = 1.5;
// ---> PARAMETRI RIPPLES <---
group_uniforms Ripple_Settings;
uniform vec4 ripple_color : source_color = vec4(1.0, 1.0, 1.0, 0.7);
uniform float ripple_density : hint_range(0.0, 1.0) = 0.05;
uniform float ripple_scale : hint_range(0.5, 20.0) = 3.0;
uniform float ripple_speed : hint_range(0.1, 5.0) = 0.8;
uniform float ripple_thickness : hint_range(0.001, 0.1) = 0.02;
uniform sampler2D depth_texture : hint_depth_texture, filter_linear_mipmap;
varying vec2 world_pos_xz;
varying vec2 local_uv;
void vertex() {
// Salviamo la posizione XZ e la UV locale per l'effetto specchio
world_pos_xz = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xz;
local_uv = UV;
}
void fragment() {
// --- 1. LOGICA PROFONDITÀ (Beer's Law) ---
float depth = texture(depth_texture, SCREEN_UV).r;
vec3 ndc = vec3(SCREEN_UV * 2.0 - 1.0, depth);
vec4 view = INV_PROJECTION_MATRIX * vec4(ndc, 1.0);
view.xyz /= view.w;
float linear_depth = -view.z;
float depth_difference = linear_depth + VERTEX.z;
float water_depth_gradient = exp(-depth_difference * beer_law_factor);
vec4 base_water = mix(deep_water_color, shallow_water_color, water_depth_gradient);
// --- 2. LOGICA RIPPLES CASUALI ---
vec2 pos = world_pos_xz * ripple_scale;
vec2 cell = floor(pos);
vec2 local_pos = fract(pos) - 0.5;
float random_val = fract(sin(dot(cell, vec2(12.9898, 78.233))) * 43758.5453);
float is_active_cell = step(1.0 - ripple_density, random_val);
float ring = 0.0;
if (is_active_cell > 0.0) {
float local_time = fract(TIME * ripple_speed + random_val * 10.0);
float dist = length(local_pos);
ring = smoothstep(local_time - ripple_thickness, local_time, dist)
- smoothstep(local_time, local_time + ripple_thickness, dist);
ring *= (1.0 - local_time);
}
// --- 3. FAKE REFLECTION SPECCHIATA E A CORTO RAGGIO ---
vec2 ref_uv = SCREEN_UV;
// Il trucco per "capovolgere" il riflesso usando l'UV del piano dell'acqua
ref_uv.y -= reflection_offset + (local_uv.y * reflection_stretch);
// Distorciamo il riflesso dove ci sono i ripples
ref_uv += ring * 0.01;
vec3 screen_ref = textureLod(screen_texture, ref_uv, 0.0).rgb;
// Maschera di distanza (limita il riflesso solo alle cose vicine)
float ref_depth_raw = texture(depth_texture, ref_uv).r;
vec3 ref_ndc = vec3(ref_uv * 2.0 - 1.0, ref_depth_raw);
vec4 ref_view = INV_PROJECTION_MATRIX * vec4(ref_ndc, 1.0);
ref_view.xyz /= ref_view.w;
float ref_linear_depth = -ref_view.z;
float distance_from_water = abs(ref_linear_depth - (-VERTEX.z));
float reflection_mask = 1.0 - smoothstep(0.0, max_reflection_distance, distance_from_water);
float is_sky = step(ref_depth_raw, 0.00001); // Protezione anti-cielo
reflection_mask *= (1.0 - is_sky);
// --- 4. MIX FINALE ---
vec3 final_rgb = mix(base_water.rgb, screen_ref, reflection_strength * reflection_mask);
final_rgb = mix(final_rgb, ripple_color.rgb, ring * ripple_color.a);
ALBEDO = final_rgb;
// Alpha base dell'acqua + opacità dei ripples per farli sempre risaltare
ALPHA = mix(0.98, 0.4, water_depth_gradient);
ALPHA = clamp(ALPHA + (ring * ripple_color.a), 0.0, 1.0);
ROUGHNESS = 1.0;
SPECULAR = 0.0;
}

View File

@@ -0,0 +1 @@
uid://064bybt6le3h

View File

@@ -66,15 +66,15 @@ func _init(wind: GPUParticles3D, snow: GPUParticles3D,
thunder_sounds = thundersounds thunder_sounds = thundersounds
rain_sounds = rainsounds rain_sounds = rainsounds
set_rain() init_rain()
set_fireflies() init_fireflies()
set_wind() init_wind()
set_snow() init_snow()
set_lightning() init_lightning()
create_sound_players() create_sound_players()
@@ -124,7 +124,7 @@ func _process(delta: float) -> void:
timer_next_lightning -= delta timer_next_lightning -= delta
if timer_next_lightning <= 0.0: if timer_next_lightning <= 0.0:
start_lightning() start_lightning()
set_lightning_timer() init_lightning_timer()
else: else:
rain_intensity = move_toward(rain_intensity, 0.0, delta * 0.5) rain_intensity = move_toward(rain_intensity, 0.0, delta * 0.5)
@@ -281,7 +281,7 @@ func toggle_fireflies(value: bool):
particles_fireflies.emitting = thereare_fireflies and is_night particles_fireflies.emitting = thereare_fireflies and is_night
#disable fireflies and set default values and materials #disable fireflies and set default values and materials
func set_fireflies(): func init_fireflies():
if particles_fireflies: if particles_fireflies:
particles_fireflies.visible = true particles_fireflies.visible = true
particles_fireflies.emitting = false particles_fireflies.emitting = false
@@ -299,8 +299,10 @@ func toggle_wind(value: bool):
if particles_wind: if particles_wind:
particles_wind.emitting = is_windy particles_wind.emitting = is_windy
_apply_wind_state()
#disable wind and set default values and materials #disable wind and set default values and materials
func set_wind(): func init_wind():
if particles_wind: if particles_wind:
particles_wind.visible = true particles_wind.visible = true
particles_wind.emitting = false particles_wind.emitting = false
@@ -312,12 +314,11 @@ func set_wind():
if environment_config: if environment_config:
_apply_cloud_config() _apply_cloud_config()
_apply_wind_config() _apply_wind_config()
_apply_dust_config()
func _apply_wind_config() -> void: func _apply_wind_config() -> void:
RenderingServer.global_shader_parameter_set("global_wind_speed", environment_config.wind_speed)
RenderingServer.global_shader_parameter_set("global_wind_direction", environment_config.wind_direction) RenderingServer.global_shader_parameter_set("global_wind_direction", environment_config.wind_direction)
RenderingServer.global_shader_parameter_set("global_wind_scale", environment_config.wind_scale) RenderingServer.global_shader_parameter_set("global_wind_scale", environment_config.wind_scale)
RenderingServer.global_shader_parameter_set("global_wind_strength", environment_config.wind_strength)
if particles_wind: if particles_wind:
var proc_mat_wind = particles_wind.process_material as ParticleProcessMaterial var proc_mat_wind = particles_wind.process_material as ParticleProcessMaterial
if proc_mat_wind: if proc_mat_wind:
@@ -333,6 +334,17 @@ func _apply_wind_config() -> void:
proc_mat_wind.direction = wind_axis proc_mat_wind.direction = wind_axis
particles_wind.global_transform = Transform3D(Basis(wind_cross, wind_axis, wind_up), particles_wind.global_position) particles_wind.global_transform = Transform3D(Basis(wind_cross, wind_axis, wind_up), particles_wind.global_position)
_apply_wind_state()
func _apply_wind_state() -> void:
if environment_config == null:
return
var active_wind_speed := environment_config.wind_speed if is_windy else 0.0
var active_wind_strength := environment_config.wind_strength if is_windy else 0.0
RenderingServer.global_shader_parameter_set("global_wind_speed", active_wind_speed)
RenderingServer.global_shader_parameter_set("global_wind_strength", active_wind_strength)
func _apply_cloud_config() -> void: func _apply_cloud_config() -> void:
var dir = environment_config.wind_direction var dir = environment_config.wind_direction
var cloud_scale = environment_config.cloud_scale var cloud_scale = environment_config.cloud_scale
@@ -366,7 +378,7 @@ func toggle_storm(value: bool):
is_storm = value is_storm = value
#set lightning #set lightning
func set_lightning(): func init_lightning():
lightning_light.name = "Lightning Light" lightning_light.name = "Lightning Light"
lightning_light.transform = Transform3D( lightning_light.transform = Transform3D(
Vector3(-0.6238797, -0.342596, 0.7024259), # asse X Vector3(-0.6238797, -0.342596, 0.7024259), # asse X
@@ -381,7 +393,7 @@ func set_lightning():
add_child(lightning_light) add_child(lightning_light)
create_lightning_sprite() create_lightning_sprite()
set_lightning_timer() init_lightning_timer()
func create_lightning_sprite(): func create_lightning_sprite():
lightning_sprite = Sprite3D.new() lightning_sprite = Sprite3D.new()
@@ -406,7 +418,7 @@ func create_lightning_sprite():
add_child(lightning_sprite) add_child(lightning_sprite)
#set next lightning timer #set next lightning timer
func set_lightning_timer(): func init_lightning_timer():
timer_next_lightning = randf_range(environment_config.lightning_min_time, environment_config.lightning_max_time) timer_next_lightning = randf_range(environment_config.lightning_min_time, environment_config.lightning_max_time)
func start_lightning(): func start_lightning():
@@ -460,7 +472,7 @@ func _play_thunder_delayed(delay: float):
#region Rain #region Rain
#disable rain #disable rain
func set_rain(): func init_rain():
if particles_rain: if particles_rain:
particles_rain.visible = true particles_rain.visible = true
particles_rain.emitting = false particles_rain.emitting = false
@@ -607,10 +619,10 @@ func toggle_snow(value: bool):
if snow_tween and snow_tween.is_valid(): if snow_tween and snow_tween.is_valid():
snow_tween.kill() snow_tween.kill()
snow_tween = create_tween() snow_tween = create_tween()
snow_tween.tween_method(set_snow_amount, actual_snow_amount, target_snow_amount, environment_config.snow_transaction_time) snow_tween.tween_method(init_snow_amount, actual_snow_amount, target_snow_amount, environment_config.snow_transaction_time)
#disable snow and set default values and shader #disable snow and set default values and shader
func set_snow(value: float = 0.0): func init_snow(value: float = 0.0):
actual_snow_amount = value actual_snow_amount = value
RenderingServer.global_shader_parameter_set("global_snow_amount", value) RenderingServer.global_shader_parameter_set("global_snow_amount", value)
@@ -625,7 +637,7 @@ func set_snow(value: float = 0.0):
RenderingServer.global_shader_parameter_set("global_snow_start_time", -1.0) RenderingServer.global_shader_parameter_set("global_snow_start_time", -1.0)
RenderingServer.global_shader_parameter_set("global_snow_melt_time", -1.0) RenderingServer.global_shader_parameter_set("global_snow_melt_time", -1.0)
func set_snow_amount(value: float): func init_snow_amount(value: float):
actual_snow_amount = value actual_snow_amount = value
RenderingServer.global_shader_parameter_set("global_snow_amount", value) RenderingServer.global_shader_parameter_set("global_snow_amount", value)
@@ -663,4 +675,20 @@ func ApplyPostProcessBlurConfig() -> void:
if blur_material: if blur_material:
blur_material.set_shader_parameter("blur_amount", environment_config.blur_amount) blur_material.set_shader_parameter("blur_amount", environment_config.blur_amount)
func _apply_dust_config() -> void:
var dust_color: Color = environment_config.dust_color
var dust_speed: float = environment_config.dust_speed
var dust_density: float = environment_config.dust_density
var dust_size_min: float = environment_config.dust_size_min
var dust_size_max: float = environment_config.dust_size_max
if environment_dust:
var dust_mat = environment_dust.material as ShaderMaterial
if dust_mat:
dust_mat.set_shader_parameter("dust_color", dust_color)
dust_mat.set_shader_parameter("dust_speed", dust_speed)
dust_mat.set_shader_parameter("dust_density", dust_density)
dust_mat.set_shader_parameter("dust_size_min", dust_size_min)
dust_mat.set_shader_parameter("dust_size_max", dust_size_max)
#endregion #endregion

View File

@@ -85,6 +85,13 @@ extends Resource
@export var enable_environment_shadows: bool = true #Cloud shadow projection on terrain @export var enable_environment_shadows: bool = true #Cloud shadow projection on terrain
@export var blur_amount: float = 0.6 @export var blur_amount: float = 0.6
@export_group("Dust")
@export var dust_color: Color = Color(1.0, 0.456, 0.125, 0.6) #dust color
@export var dust_speed: float = 0.15 #dust speed
@export var dust_density: float = 1.0 #dust density
@export var dust_size_min: float = 0.02; #dust min size
@export var dust_size_max: float = 0.2; #dust max size
#Shader materials used by weather and sky systems #Shader materials used by weather and sky systems
@export_group("Environment Materials") @export_group("Environment Materials")
@export var material_fog: ShaderMaterial #Fog overlay shader material @export var material_fog: ShaderMaterial #Fog overlay shader material

View File

@@ -15,6 +15,7 @@
[ext_resource type="PackedScene" uid="uid://bi12g5nj421jv" path="res://docs/museums/daynight/scenes/chunk_f_e_1/chunk_f_e_1.tscn" id="8_qe84w"] [ext_resource type="PackedScene" uid="uid://bi12g5nj421jv" path="res://docs/museums/daynight/scenes/chunk_f_e_1/chunk_f_e_1.tscn" id="8_qe84w"]
[ext_resource type="PackedScene" uid="uid://dn1btv0e0ses7" path="res://core/fireworks.tscn" id="8_xtogr"] [ext_resource type="PackedScene" uid="uid://dn1btv0e0ses7" path="res://core/fireworks.tscn" id="8_xtogr"]
[ext_resource type="PackedScene" uid="uid://cpebna545ihfh" path="res://docs/museums/daynight/scenes/chunk_f_l_2/chunk_f_l_2.tscn" id="9_3qrd0"] [ext_resource type="PackedScene" uid="uid://cpebna545ihfh" path="res://docs/museums/daynight/scenes/chunk_f_l_2/chunk_f_l_2.tscn" id="9_3qrd0"]
[ext_resource type="PackedScene" uid="uid://xebpudhewwwj" path="res://docs/museums/daynight/scenes/chunk_c_l_2/chunk_c_l_2.tscn" id="9_sw7bt"]
[ext_resource type="PackedScene" uid="uid://cmuvmmp7xam4o" path="res://core/daynight/environment_management.tscn" id="16_c7mkj"] [ext_resource type="PackedScene" uid="uid://cmuvmmp7xam4o" path="res://core/daynight/environment_management.tscn" id="16_c7mkj"]
[ext_resource type="AudioStream" uid="uid://dvabvoqyya0g5" path="res://core/daynight/sounds/thunder_3.mp3" id="17_sw7bt"] [ext_resource type="AudioStream" uid="uid://dvabvoqyya0g5" path="res://core/daynight/sounds/thunder_3.mp3" id="17_sw7bt"]
[ext_resource type="AudioStream" uid="uid://creenugno7hm" path="res://core/daynight/sounds/thunder_4.mp3" id="18_2l6dd"] [ext_resource type="AudioStream" uid="uid://creenugno7hm" path="res://core/daynight/sounds/thunder_4.mp3" id="18_2l6dd"]
@@ -101,7 +102,7 @@ compositor_effects = Array[CompositorEffect]([SubResource("CompositorEffect_q52t
[sub_resource type="Resource" id="Resource_3qrd0"] [sub_resource type="Resource" id="Resource_3qrd0"]
script = ExtResource("5_2wjys") script = ExtResource("5_2wjys")
name = "countryside" name = "countryside"
available_chunks = Array[PackedScene]([ExtResource("6_21usy"), ExtResource("7_qe84w")]) available_chunks = Array[PackedScene]([ExtResource("6_21usy"), ExtResource("7_qe84w"), ExtResource("9_sw7bt")])
metadata/_custom_type_script = "uid://wv6kcqkibium" metadata/_custom_type_script = "uid://wv6kcqkibium"
[sub_resource type="Resource" id="Resource_2qks6"] [sub_resource type="Resource" id="Resource_2qks6"]
@@ -149,7 +150,7 @@ mesh = SubResource("BoxMesh_xtogr")
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 28.635147, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 28.635147, 0)
[node name="rails" type="Path3D" parent="." unique_id=1302444918 node_paths=PackedStringArray("cameras")] [node name="rails" type="Path3D" parent="." unique_id=1302444918 node_paths=PackedStringArray("cameras")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
curve = SubResource("Curve3D_xtogr") curve = SubResource("Curve3D_xtogr")
script = ExtResource("6_pypsn") script = ExtResource("6_pypsn")
train_model = ExtResource("6_wjpfq") train_model = ExtResource("6_wjpfq")
@@ -330,7 +331,7 @@ theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
button_pressed = true button_pressed = true
text = "Shadows" text = "Shadows"
[node name="guide" type="Label" parent="Control" unique_id=2121474959] [node name="Guide" type="Label" parent="Control" unique_id=2121474959]
layout_mode = 0 layout_mode = 0
offset_left = 26.0 offset_left = 26.0
offset_top = 347.0 offset_top = 347.0
@@ -340,7 +341,8 @@ text = "R-> Reset isometric camera
C-> Toggle cinematic mode C-> Toggle cinematic mode
Z-> soft zoom Z-> soft zoom
Manual controls (1-5) Manual controls (1-5)
" T -> go to next stop
F -> fireworks"
[connection signal="toggled" from="Control/Snow" to="Control" method="_on_snow_toggled"] [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/Rain" to="Control" method="_on_rain_toggled"]

View File

@@ -8,7 +8,7 @@
[ext_resource type="PackedScene" uid="uid://dsh55bqjfrqfp" path="res://docs/museums/daynight/scenes/chunk_c_f_1/chunk_c_f_1.fbx" id="6_4h5ax"] [ext_resource type="PackedScene" uid="uid://dsh55bqjfrqfp" path="res://docs/museums/daynight/scenes/chunk_c_f_1/chunk_c_f_1.fbx" id="6_4h5ax"]
[ext_resource type="Shader" uid="uid://btf3qpe7kwqig" path="res://core/snow.gdshader" id="7_wr3vc"] [ext_resource type="Shader" uid="uid://btf3qpe7kwqig" path="res://core/snow.gdshader" id="7_wr3vc"]
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/chunk_c_f_1/sentiero.tres" id="7_y2p7p"] [ext_resource type="Material" path="res://docs/museums/daynight/scenes/chunk_c_f_1/sentiero.tres" id="7_y2p7p"]
[ext_resource type="PackedScene" path="res://docs/museums/daynight/scenes/chunk_c_f_1/tori_gate.tscn" id="9_ji5rd"] [ext_resource type="PackedScene" uid="uid://dyolu5m0lgqm2" path="res://docs/museums/daynight/scenes/chunk_c_f_1/tori_gate.tscn" id="9_ji5rd"]
[ext_resource type="PackedScene" uid="uid://jj15telqu3rp" path="res://docs/museums/daynight/scenes/grass_test/grass_test.tscn" id="9_s470o"] [ext_resource type="PackedScene" uid="uid://jj15telqu3rp" path="res://docs/museums/daynight/scenes/grass_test/grass_test.tscn" id="9_s470o"]
[ext_resource type="PackedScene" uid="uid://d12t04rs47jq3" path="res://docs/museums/daynight/scenes/grain_test/tree_v1.tscn" id="10_ji5rd"] [ext_resource type="PackedScene" uid="uid://d12t04rs47jq3" path="res://docs/museums/daynight/scenes/grain_test/tree_v1.tscn" id="10_ji5rd"]
[ext_resource type="PackedScene" uid="uid://b6f7gaoatj420" path="res://docs/museums/daynight/scenes/chunk_f_l_2/column_blockout.tscn" id="11_4n1py"] [ext_resource type="PackedScene" uid="uid://b6f7gaoatj420" path="res://docs/museums/daynight/scenes/chunk_f_l_2/column_blockout.tscn" id="11_4n1py"]
@@ -35,20 +35,9 @@ shader_parameter/glint_sharpness = 32.0
shader_parameter/emission_color = Color(0, 0, 0, 1) shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0 shader_parameter/emission_energy = 0.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_fim7w"]
render_priority = 0
shader = ExtResource("7_wr3vc")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_jqd13"]
render_priority = 0
shader = ExtResource("7_wr3vc")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_cvr4e"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_cvr4e"]
render_priority = 0 render_priority = 0
shader = ExtResource("7_wr3vc") shader = ExtResource("7_wr3vc")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0uwhb"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0uwhb"]
resource_name = "Material" resource_name = "Material"
@@ -88,15 +77,9 @@ _surfaces = [{
blend_shape_mode = 0 blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_v3qhc") shadow_mesh = SubResource("ArrayMesh_v3qhc")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_1sygh"]
render_priority = 0
shader = ExtResource("7_wr3vc")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_8kcs0"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_8kcs0"]
render_priority = 0 render_priority = 0
shader = ExtResource("7_wr3vc") shader = ExtResource("7_wr3vc")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1)
[sub_resource type="ArrayMesh" id="ArrayMesh_7ona5"] [sub_resource type="ArrayMesh" id="ArrayMesh_7ona5"]
_surfaces = [{ _surfaces = [{
@@ -133,13 +116,13 @@ shadow_mesh = SubResource("ArrayMesh_7ona5")
[sub_resource type="BoxShape3D" id="BoxShape3D_lunjj"] [sub_resource type="BoxShape3D" id="BoxShape3D_lunjj"]
size = Vector3(20, 10, 20) size = Vector3(20, 10, 20)
[node name="Chunk_C_E_1" unique_id=1874739368 instance=ExtResource("1_jpp2r")] [node name="Chunk_C_E_1" unique_id=1874739368 groups=["weather_node"] instance=ExtResource("1_jpp2r")]
script = ExtResource("2_02kkq") script = ExtResource("2_02kkq")
nord = true north = true
est = true est = true
ovest = true west = true
[node name="Chunk_026" parent="." index="0" unique_id=1014258190] [node name="Chunk_026" parent="." index="0" unique_id=1723380962]
material_override = SubResource("ShaderMaterial_sqcol") material_override = SubResource("ShaderMaterial_sqcol")
[node name="House_Muraglione" parent="." index="1" unique_id=1060427946 instance=ExtResource("4_lunjj")] [node name="House_Muraglione" parent="." index="1" unique_id=1060427946 instance=ExtResource("4_lunjj")]
@@ -151,42 +134,18 @@ transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, 0
visible = false visible = false
[node name="Chunk_C_L_1" parent="." index="3" unique_id=47126446 instance=ExtResource("6_4h5ax")] [node name="Chunk_C_L_1" parent="." index="3" unique_id=47126446 instance=ExtResource("6_4h5ax")]
nord = true
est = true
sud = false
[node name="Chunk_005" parent="Chunk_C_L_1" index="0" unique_id=1711954451] [node name="Chunk_039" type="MeshInstance3D" parent="Chunk_C_L_1" index="1" unique_id=311921996]
visible = false
material_overlay = SubResource("ShaderMaterial_fim7w")
[node name="Chunk_036" parent="Chunk_C_L_1" index="1" unique_id=2006258110]
material_overlay = SubResource("ShaderMaterial_jqd13")
[node name="Chunk_039" type="MeshInstance3D" parent="Chunk_C_L_1" index="2" unique_id=311921996]
transform = Transform3D(100, 0, 0, 0, -1.1920929e-05, 99.99999, 0, -99.99999, -1.1920929e-05, 11.507141, 0, 0) transform = Transform3D(100, 0, 0, 0, -1.1920929e-05, 99.99999, 0, -99.99999, -1.1920929e-05, 11.507141, 0, 0)
material_override = ExtResource("7_y2p7p") material_override = ExtResource("7_y2p7p")
material_overlay = SubResource("ShaderMaterial_cvr4e") material_overlay = SubResource("ShaderMaterial_cvr4e")
mesh = SubResource("ArrayMesh_db63l") mesh = SubResource("ArrayMesh_db63l")
skeleton = NodePath("")
[node name="Chunk_037" parent="Chunk_C_L_1" index="3" unique_id=553462979] [node name="Chunk_038" type="MeshInstance3D" parent="Chunk_C_L_1" index="2" unique_id=300529289]
material_overlay = SubResource("ShaderMaterial_1sygh")
[node name="Chunk_038" type="MeshInstance3D" parent="Chunk_C_L_1" index="4" unique_id=300529289]
transform = Transform3D(100, 0, 0, 0, -1.1920929e-05, 99.99999, 0, -99.99999, -1.1920929e-05, 0, 0, -8.492352) transform = Transform3D(100, 0, 0, 0, -1.1920929e-05, 99.99999, 0, -99.99999, -1.1920929e-05, 0, 0, -8.492352)
material_override = ExtResource("7_y2p7p") material_override = ExtResource("7_y2p7p")
material_overlay = SubResource("ShaderMaterial_8kcs0") material_overlay = SubResource("ShaderMaterial_8kcs0")
mesh = SubResource("ArrayMesh_vall4") mesh = SubResource("ArrayMesh_vall4")
skeleton = NodePath("")
[node name="Cube_030" parent="Chunk_C_L_1" index="5" unique_id=209419507]
visible = false
[node name="Cube_031" parent="Chunk_C_L_1" index="6" unique_id=498063843]
visible = false
[node name="Cube_034" parent="Chunk_C_L_1" index="7" unique_id=2029406114]
visible = false
[node name="StaticBody3D" type="StaticBody3D" parent="." index="4" unique_id=1294838844] [node name="StaticBody3D" type="StaticBody3D" parent="." index="4" unique_id=1294838844]

View File

@@ -0,0 +1,24 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://cs7owfgg600jg"]
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="1_smvye"]
[resource]
render_priority = 0
shader = ExtResource("1_smvye")
shader_parameter/albedo_color = Color(0.2509804, 0.34901962, 0.14901961, 1)
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 10.0
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/use_ghibli_glint = true
shader_parameter/glint_color = Color(1, 0.95, 0.85, 1)
shader_parameter/glint_intensity = 1.0
shader_parameter/glint_sharpness = 32.0
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://urkdndr42opv"
path="res://.godot/imported/chunk_c_l_2.fbx-6175b56c35dcf4fc314aefd5ead0ad09.scn"
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_c_l_2/chunk_c_l_2.fbx"
dest_files=["res://.godot/imported/chunk_c_l_2.fbx-6175b56c35dcf4fc314aefd5ead0ad09.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,7 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://c4f4kkaosra1q"]
[ext_resource type="Shader" uid="uid://8l8glwvvs7fb" path="res://core/daynight/grass_leaves.gdshader" id="1_b31b8"]
[resource]
render_priority = 0
shader = ExtResource("1_b31b8")

View File

@@ -0,0 +1,7 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://jygb1hcokks5"]
[ext_resource type="Shader" uid="uid://8l8glwvvs7fb" path="res://core/daynight/grass_leaves.gdshader" id="1_ou76s"]
[resource]
render_priority = 0
shader = ExtResource("1_ou76s")

View File

@@ -0,0 +1,24 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://cit5uciejjoou"]
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="1_8emj4"]
[resource]
render_priority = 0
shader = ExtResource("1_8emj4")
shader_parameter/albedo_color = Color(0.27946612, 0.3904863, 0.19377232, 1)
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 10.0
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/use_ghibli_glint = true
shader_parameter/glint_color = Color(1, 0.95, 0.85, 1)
shader_parameter/glint_intensity = 1.0
shader_parameter/glint_sharpness = 32.0
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://171egmud4ota"
path.s3tc="res://.godot/imported/grass_round.png-d82881dc87cc979f1549d2f0459fe0f8.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_c_l_2/grass_round.png"
dest_files=["res://.godot/imported/grass_round.png-d82881dc87cc979f1549d2f0459fe0f8.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://dqpvvakfo1x4q"
path="res://.godot/imported/house_c_2.fbx-9c49f7f95ee726719d87b3554d5ec1cb.scn"
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_c_l_2/house_c_2.fbx"
dest_files=["res://.godot/imported/house_c_2.fbx-9c49f7f95ee726719d87b3554d5ec1cb.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

View File

@@ -0,0 +1,33 @@
[gd_scene format=3 uid="uid://d18n7qknm8wpy"]
[ext_resource type="PackedScene" uid="uid://dqpvvakfo1x4q" path="res://docs/museums/daynight/scenes/chunk_c_l_2/house_c_2.fbx" id="1_sex0v"]
[ext_resource type="Shader" uid="uid://btf3qpe7kwqig" path="res://core/snow.gdshader" id="2_hrpm1"]
[ext_resource type="Material" uid="uid://biaudrjlfoflm" path="res://docs/museums/daynight/scenes/chunk_c_f_1/house.tres" id="3_njk5y"]
[ext_resource type="Material" uid="uid://dbmyfi5t0yfy" path="res://docs/museums/daynight/scenes/chunk_c_f_1/house_emissiv.tres" id="4_wxydh"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_14x62"]
render_priority = 0
shader = ExtResource("2_hrpm1")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1)
[sub_resource type="Gradient" id="Gradient_n4qy2"]
offsets = PackedFloat32Array(0.9980237, 1)
colors = PackedColorArray(0, 0, 0, 0.5882353, 0, 0, 0, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_sex0v"]
gradient = SubResource("Gradient_n4qy2")
fill = 2
fill_from = Vector2(0.5, 0.5)
fill_to = Vector2(0.9017094, 0.12820514)
[node name="House_C_2" unique_id=2048054000 instance=ExtResource("1_sex0v")]
[node name="Cube_390" parent="." index="0" unique_id=856222663]
material_overlay = SubResource("ShaderMaterial_14x62")
surface_material_override/0 = ExtResource("3_njk5y")
surface_material_override/1 = ExtResource("4_wxydh")
[node name="Shadow" type="Decal" parent="." index="1" unique_id=1602288970]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.059038162, 0.11803889, 0)
size = Vector3(8.5, 0.5, 13.5)
texture_albedo = SubResource("GradientTexture2D_sex0v")

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

View File

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cjd56jcb8n670"
path.s3tc="res://.godot/imported/leaf_test.png-580c212bf92831dc4cf0ba70460573c4.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_c_l_2/leaf_test.png"
dest_files=["res://.godot/imported/leaf_test.png-580c212bf92831dc4cf0ba70460573c4.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b1rkjv3g17cbe"
path.s3tc="res://.godot/imported/level_7.png-fb040dec35faa37f96ee9e3a4d9786fe.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_c_l_2/level_7.png"
dest_files=["res://.godot/imported/level_7.png-fb040dec35faa37f96ee9e3a4d9786fe.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://c87qfar8b0ak0"
path="res://.godot/imported/palo_luce.fbx-6a36359752871a9bb6591069602e47dd.scn"
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_c_l_2/palo_luce.fbx"
dest_files=["res://.godot/imported/palo_luce.fbx-6a36359752871a9bb6591069602e47dd.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

View File

@@ -0,0 +1,59 @@
[gd_scene format=3 uid="uid://bgb4pfflokl5s"]
[ext_resource type="PackedScene" uid="uid://c87qfar8b0ak0" path="res://docs/museums/daynight/scenes/chunk_c_l_2/palo_luce.fbx" id="1_jxwpf"]
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="2_3fmep"]
[ext_resource type="Shader" uid="uid://btf3qpe7kwqig" path="res://core/snow.gdshader" id="2_wpudh"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ffi7j"]
render_priority = 0
shader = ExtResource("2_wpudh")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_wpudh"]
render_priority = 0
shader = ExtResource("2_3fmep")
shader_parameter/albedo_color = Color(0.35906908, 0.35906908, 0.35906908, 1)
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 10.0
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/use_ghibli_glint = true
shader_parameter/glint_color = Color(1, 0.95, 0.85, 1)
shader_parameter/glint_intensity = 1.0
shader_parameter/glint_sharpness = 32.0
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_q1sqc"]
render_priority = 0
shader = ExtResource("2_3fmep")
shader_parameter/albedo_color = Color(0.35056442, 0.17908111, 0.051149555, 1)
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 10.0
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/use_ghibli_glint = true
shader_parameter/glint_color = Color(1, 0.95, 0.85, 1)
shader_parameter/glint_intensity = 1.0
shader_parameter/glint_sharpness = 32.0
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0
[node name="PaloLuce" unique_id=1542979535 instance=ExtResource("1_jxwpf")]
[node name="Cube" parent="." index="0" unique_id=885327009]
material_overlay = SubResource("ShaderMaterial_ffi7j")
surface_material_override/0 = SubResource("ShaderMaterial_wpudh")
surface_material_override/1 = SubResource("ShaderMaterial_q1sqc")

View File

@@ -0,0 +1,9 @@
[gd_scene format=3 uid="uid://cnk16oeotexu1"]
[ext_resource type="PackedScene" uid="uid://ct864lh4dpikw" path="res://docs/museums/daynight/scenes/chunk_c_l_2/rock2.glb" id="1_d6mi0"]
[ext_resource type="Material" uid="uid://bu8wmlp0ffark" path="res://docs/museums/biome_generator/train3.tres" id="2_nhdef"]
[node name="rock22" unique_id=544527618 instance=ExtResource("1_d6mi0")]
[node name="rock2" parent="." index="0" unique_id=2134750116]
material_override = ExtResource("2_nhdef")

Binary file not shown.

View File

@@ -0,0 +1,42 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://ct864lh4dpikw"
path="res://.godot/imported/rock2.glb-9d49361b2eac2105c587f37c5425e81e.scn"
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_c_l_2/rock2.glb"
dest_files=["res://.godot/imported/rock2.glb-9d49361b2eac2105c587f37c5425e81e.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
gltf/naming_version=2
gltf/embedded_image_handling=1

View File

@@ -0,0 +1,23 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://768v64kvq6ho"]
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="1_maih5"]
[resource]
render_priority = 0
shader = ExtResource("1_maih5")
shader_parameter/albedo_color = Color(0.42462158, 0.28316185, 0.14912051, 1)
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 10.0
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/specular_size = 60.0
shader_parameter/specular_softness = 0.01
shader_parameter/specular_intensity_multiplier = 0.5
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://bavwumq7gdfe7"
path="res://.godot/imported/sk_mannequin.fbx-f9551e14ca823ed7a0d7a5cae0ed792f.scn"
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_c_l_2/sk_mannequin.fbx"
dest_files=["res://.godot/imported/sk_mannequin.fbx-f9551e14ca823ed7a0d7a5cae0ed792f.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

View File

@@ -0,0 +1,19 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://ce0bdk3mx2xao"]
[ext_resource type="Shader" uid="uid://064bybt6le3h" path="res://core/daynight/water_ripple.gdshader" id="1_hul6x"]
[resource]
render_priority = 1
shader = ExtResource("1_hul6x")
shader_parameter/deep_water_color = Color(0.22383842, 0.51606375, 0.43509763, 1)
shader_parameter/shallow_water_color = Color(0, 0.4, 0.7, 1)
shader_parameter/beer_law_factor = 5.0
shader_parameter/reflection_strength = 0.400000019
shader_parameter/reflection_offset = 2.3749999966682367e-08
shader_parameter/reflection_stretch = 0.05600005015999998
shader_parameter/max_reflection_distance = 3.0000001392401203
shader_parameter/ripple_color = Color(1, 1, 1, 1)
shader_parameter/ripple_density = 0.02000000095
shader_parameter/ripple_scale = 2.00000007125
shader_parameter/ripple_speed = 0.60000002524012
shader_parameter/ripple_thickness = 0.06000000285

View File

@@ -8,10 +8,10 @@
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pynx0"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pynx0"]
albedo_color = Color(0.3882353, 0.52156866, 0.20784314, 1) albedo_color = Color(0.3882353, 0.52156866, 0.20784314, 1)
[node name="Chunk_C_E_1" unique_id=1874739368 instance=ExtResource("1_anwxh")] [node name="Chunk_C_E_1" unique_id=1874739368 groups=["weather_node"] instance=ExtResource("1_anwxh")]
script = ExtResource("2_scq5d") script = ExtResource("2_scq5d")
[node name="Chunk_026" parent="." index="0" unique_id=1559745184] [node name="Chunk_026" parent="." index="0" unique_id=1048980551]
material_override = SubResource("StandardMaterial3D_pynx0") material_override = SubResource("StandardMaterial3D_pynx0")
[node name="TreeTest3" parent="." index="1" unique_id=838519336 instance=ExtResource("5_vyg4h")] [node name="TreeTest3" parent="." index="1" unique_id=838519336 instance=ExtResource("5_vyg4h")]

View File

@@ -17,18 +17,56 @@
[ext_resource type="PackedScene" uid="uid://igbtt2ypx0ks" path="res://docs/museums/daynight/scenes/fences.tscn" id="14_sg641"] [ext_resource type="PackedScene" uid="uid://igbtt2ypx0ks" path="res://docs/museums/daynight/scenes/fences.tscn" id="14_sg641"]
[ext_resource type="Material" uid="uid://wkegx4a21x7u" path="res://docs/museums/daynight/scenes/fences.tres" id="15_u5vqi"] [ext_resource type="Material" uid="uid://wkegx4a21x7u" path="res://docs/museums/daynight/scenes/fences.tres" id="15_u5vqi"]
[ext_resource type="PackedScene" uid="uid://d12t04rs47jq3" path="res://docs/museums/daynight/scenes/grain_test/tree_v1.tscn" id="16_w82ua"] [ext_resource type="PackedScene" uid="uid://d12t04rs47jq3" path="res://docs/museums/daynight/scenes/grain_test/tree_v1.tscn" id="16_w82ua"]
[ext_resource type="PackedScene" path="res://docs/museums/daynight/scenes/chunk_f_l_2/house_test_4.tscn" id="17_r7got"] [ext_resource type="PackedScene" uid="uid://mj15bepbgy02" path="res://docs/museums/daynight/scenes/chunk_f_l_2/house_test_4.tscn" id="17_r7got"]
[ext_resource type="PackedScene" path="res://docs/museums/daynight/scenes/chunk_f_l_2/column_blockout.tscn" id="19_jqp0n"] [ext_resource type="PackedScene" uid="uid://b6f7gaoatj420" path="res://docs/museums/daynight/scenes/chunk_f_l_2/column_blockout.tscn" id="19_jqp0n"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_xt73x"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_xt73x"]
render_priority = 0
shader = ExtResource("4_r7got") shader = ExtResource("4_r7got")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1) shader_parameter/sky_top_color = Color(0, 0, 0, 1)
shader_parameter/sky_horizon_color = Color(0, 0, 0, 1)
shader_parameter/night_intensity = 0.0
shader_parameter/sun_color = Color(1, 1, 1, 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.1
shader_parameter/cloud_edge_softness = 0.05
shader_parameter/star_density = 1500.0
shader_parameter/star_rarity = 2500.0
shader_parameter/star_scale_variation = 0.5
shader_parameter/shooting_star_color = Color(1, 0.9, 0.7, 1)
shader_parameter/shooting_star_density = 0.3
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="ShaderMaterial" id="ShaderMaterial_jqp0n"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_jqp0n"]
render_priority = 0
shader = ExtResource("4_r7got") shader = ExtResource("4_r7got")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1) shader_parameter/sky_top_color = Color(0, 0, 0, 1)
shader_parameter/sky_horizon_color = Color(0, 0, 0, 1)
shader_parameter/night_intensity = 0.0
shader_parameter/sun_color = Color(1, 1, 1, 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.1
shader_parameter/cloud_edge_softness = 0.05
shader_parameter/star_density = 1500.0
shader_parameter/star_rarity = 2500.0
shader_parameter/star_scale_variation = 0.5
shader_parameter/shooting_star_color = Color(1, 0.9, 0.7, 1)
shader_parameter/shooting_star_density = 0.3
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="StandardMaterial3D" id="StandardMaterial3D_ofhgo"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ofhgo"]
resource_name = "Material" resource_name = "Material"
@@ -69,9 +107,28 @@ blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_h7yuw") shadow_mesh = SubResource("ArrayMesh_h7yuw")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_gsd23"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_gsd23"]
render_priority = 0
shader = ExtResource("4_r7got") shader = ExtResource("4_r7got")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1) shader_parameter/sky_top_color = Color(0, 0, 0, 1)
shader_parameter/sky_horizon_color = Color(0, 0, 0, 1)
shader_parameter/night_intensity = 0.0
shader_parameter/sun_color = Color(1, 1, 1, 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.1
shader_parameter/cloud_edge_softness = 0.05
shader_parameter/star_density = 1500.0
shader_parameter/star_rarity = 2500.0
shader_parameter/star_scale_variation = 0.5
shader_parameter/shooting_star_color = Color(1, 0.9, 0.7, 1)
shader_parameter/shooting_star_density = 0.3
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="StandardMaterial3D" id="StandardMaterial3D_15ugy"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_15ugy"]
albedo_color = Color(0.9811998, 0.8347986, 0.569528, 1) albedo_color = Color(0.9811998, 0.8347986, 0.569528, 1)
@@ -80,9 +137,28 @@ uv1_scale = Vector3(1.845, 2.325, 1)
uv1_offset = Vector3(-0.335, 0, 0) uv1_offset = Vector3(-0.335, 0, 0)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_pfoxn"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_pfoxn"]
render_priority = 0
shader = ExtResource("4_r7got") shader = ExtResource("4_r7got")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1) shader_parameter/sky_top_color = Color(0, 0, 0, 1)
shader_parameter/sky_horizon_color = Color(0, 0, 0, 1)
shader_parameter/night_intensity = 0.0
shader_parameter/sun_color = Color(1, 1, 1, 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.1
shader_parameter/cloud_edge_softness = 0.05
shader_parameter/star_density = 1500.0
shader_parameter/star_rarity = 2500.0
shader_parameter/star_scale_variation = 0.5
shader_parameter/shooting_star_color = Color(1, 0.9, 0.7, 1)
shader_parameter/shooting_star_density = 0.3
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="ShaderMaterial" id="ShaderMaterial_i4sa2"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_i4sa2"]
render_priority = 0 render_priority = 0
@@ -98,27 +174,60 @@ shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1) shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0 shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6 shader_parameter/cast_shadow_strength = 0.6
shader_parameter/specular_size = 60.0 shader_parameter/use_ghibli_glint = true
shader_parameter/specular_softness = 0.01 shader_parameter/glint_color = Color(1, 0.95, 0.85, 1)
shader_parameter/specular_intensity_multiplier = 0.5 shader_parameter/glint_intensity = 1.0
shader_parameter/rim_color = Color(1, 1, 1, 1) shader_parameter/glint_sharpness = 32.0
shader_parameter/rim_size = 0.4
shader_parameter/rim_softness = 0.05
shader_parameter/rim_intensity = 1.0
shader_parameter/rim_spread = 0.5
shader_parameter/rim_ambient = 0.1
shader_parameter/emission_color = Color(0, 0, 0, 1) shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0 shader_parameter/emission_energy = 0.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_7wsa6"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_7wsa6"]
render_priority = 0
shader = ExtResource("4_r7got") shader = ExtResource("4_r7got")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1) shader_parameter/sky_top_color = Color(0, 0, 0, 1)
shader_parameter/sky_horizon_color = Color(0, 0, 0, 1)
shader_parameter/night_intensity = 0.0
shader_parameter/sun_color = Color(1, 1, 1, 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.1
shader_parameter/cloud_edge_softness = 0.05
shader_parameter/star_density = 1500.0
shader_parameter/star_rarity = 2500.0
shader_parameter/star_scale_variation = 0.5
shader_parameter/shooting_star_color = Color(1, 0.9, 0.7, 1)
shader_parameter/shooting_star_density = 0.3
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="ShaderMaterial" id="ShaderMaterial_6vw5y"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_6vw5y"]
render_priority = 0
shader = ExtResource("4_r7got") shader = ExtResource("4_r7got")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1) shader_parameter/sky_top_color = Color(0, 0, 0, 1)
shader_parameter/sky_horizon_color = Color(0, 0, 0, 1)
shader_parameter/night_intensity = 0.0
shader_parameter/sun_color = Color(1, 1, 1, 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.1
shader_parameter/cloud_edge_softness = 0.05
shader_parameter/star_density = 1500.0
shader_parameter/star_rarity = 2500.0
shader_parameter/star_scale_variation = 0.5
shader_parameter/shooting_star_color = Color(1, 0.9, 0.7, 1)
shader_parameter/shooting_star_density = 0.3
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="ShaderMaterial" id="ShaderMaterial_odndq"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_odndq"]
render_priority = 0 render_priority = 0
@@ -131,7 +240,6 @@ shader_parameter/leaves_scale = 0.79
shader_parameter/rotation_degrees = 180.0 shader_parameter/rotation_degrees = 180.0
shader_parameter/texture_offset = Vector2(0, 0) shader_parameter/texture_offset = Vector2(0, 0)
shader_parameter/opacity = 1.0 shader_parameter/opacity = 1.0
shader_parameter/snow_color = Color(0.85, 0.9, 0.95, 1)
shader_parameter/height_min = 0.0 shader_parameter/height_min = 0.0
shader_parameter/height_max = 5.0 shader_parameter/height_max = 5.0
shader_parameter/shadow_intensity = 0.5 shader_parameter/shadow_intensity = 0.5
@@ -139,6 +247,7 @@ shader_parameter/highlight_intensity = 0.0
shader_parameter/light_steps = 10.0 shader_parameter/light_steps = 10.0
shader_parameter/random_mix = 0.010000000475 shader_parameter/random_mix = 0.010000000475
shader_parameter/cast_shadow_strength = 0.6 shader_parameter/cast_shadow_strength = 0.6
shader_parameter/wetness_darkening = 0.25
[sub_resource type="ShaderMaterial" id="ShaderMaterial_bp8uq"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_bp8uq"]
render_priority = 0 render_priority = 0
@@ -151,7 +260,6 @@ shader_parameter/leaves_scale = 0.7
shader_parameter/rotation_degrees = 180.0 shader_parameter/rotation_degrees = 180.0
shader_parameter/texture_offset = Vector2(0, 0) shader_parameter/texture_offset = Vector2(0, 0)
shader_parameter/opacity = 1.0 shader_parameter/opacity = 1.0
shader_parameter/snow_color = Color(0.85, 0.9, 0.95, 1)
shader_parameter/height_min = 0.0 shader_parameter/height_min = 0.0
shader_parameter/height_max = 5.0 shader_parameter/height_max = 5.0
shader_parameter/shadow_intensity = 0.5 shader_parameter/shadow_intensity = 0.5
@@ -159,6 +267,7 @@ shader_parameter/highlight_intensity = 0.0
shader_parameter/light_steps = 10.0 shader_parameter/light_steps = 10.0
shader_parameter/random_mix = 0.010000000475 shader_parameter/random_mix = 0.010000000475
shader_parameter/cast_shadow_strength = 0.6 shader_parameter/cast_shadow_strength = 0.6
shader_parameter/wetness_darkening = 0.25
[sub_resource type="ShaderMaterial" id="ShaderMaterial_xlq82"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_xlq82"]
render_priority = 0 render_priority = 0
@@ -171,7 +280,6 @@ shader_parameter/leaves_scale = 0.7
shader_parameter/rotation_degrees = 180.0 shader_parameter/rotation_degrees = 180.0
shader_parameter/texture_offset = Vector2(0, 0) shader_parameter/texture_offset = Vector2(0, 0)
shader_parameter/opacity = 1.0 shader_parameter/opacity = 1.0
shader_parameter/snow_color = Color(0.85, 0.9, 0.95, 1)
shader_parameter/height_min = 0.0 shader_parameter/height_min = 0.0
shader_parameter/height_max = 5.0 shader_parameter/height_max = 5.0
shader_parameter/shadow_intensity = 0.5 shader_parameter/shadow_intensity = 0.5
@@ -179,6 +287,7 @@ shader_parameter/highlight_intensity = 0.0
shader_parameter/light_steps = 10.0 shader_parameter/light_steps = 10.0
shader_parameter/random_mix = 0.010000000475 shader_parameter/random_mix = 0.010000000475
shader_parameter/cast_shadow_strength = 0.6 shader_parameter/cast_shadow_strength = 0.6
shader_parameter/wetness_darkening = 0.25
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ac5is"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ac5is"]
resource_name = "lambert48" resource_name = "lambert48"
@@ -220,12 +329,12 @@ _surfaces = [{
blend_shape_mode = 0 blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_gwoio") shadow_mesh = SubResource("ArrayMesh_gwoio")
[node name="Test_Chunk_C_L_2" unique_id=386843590 instance=ExtResource("1_sr7sh")] [node name="Test_Chunk_C_L_2" unique_id=386843590 groups=["weather_node"] instance=ExtResource("1_sr7sh")]
script = ExtResource("2_5cl6b") script = ExtResource("2_5cl6b")
sud = true south = true
ovest = true west = true
[node name="Chunk_002" parent="." index="0" unique_id=1455965802] [node name="Chunk_002" parent="." index="0" unique_id=2047084561]
transform = Transform3D(8.198544e-06, -100, -4.371139e-06, 0, -4.371139e-06, 100, -108.593, -7.54979e-06, -3.3001182e-13, 0, 0.041, -0.84952193) transform = Transform3D(8.198544e-06, -100, -4.371139e-06, 0, -4.371139e-06, 100, -108.593, -7.54979e-06, -3.3001182e-13, 0, 0.041, -0.84952193)
material_override = ExtResource("3_hj70d") material_override = ExtResource("3_hj70d")
material_overlay = SubResource("ShaderMaterial_xt73x") material_overlay = SubResource("ShaderMaterial_xt73x")
@@ -235,54 +344,51 @@ transform = Transform3D(1.1920928e-05, -67.78416, -1.4901162e-05, -2.980232e-06,
material_override = ExtResource("3_hj70d") material_override = ExtResource("3_hj70d")
material_overlay = SubResource("ShaderMaterial_jqp0n") material_overlay = SubResource("ShaderMaterial_jqp0n")
mesh = SubResource("ArrayMesh_s4u17") mesh = SubResource("ArrayMesh_s4u17")
skeleton = NodePath("")
[node name="Chunk_007" type="MeshInstance3D" parent="." index="2" unique_id=1021549662] [node name="Chunk_007" type="MeshInstance3D" parent="." index="2" unique_id=1021549662]
transform = Transform3D(19.377419, 2.072737, 8.354379e-07, -5.7840185e-07, -4.407152e-06, 100, 1.0881187, -36.91172, -1.4877721e-05, 2.7383292, 0, 6.3970623) transform = Transform3D(19.377419, 2.072737, 8.354379e-07, -5.7840185e-07, -4.407152e-06, 100, 1.0881187, -36.91172, -1.4877721e-05, 2.7383292, 0, 6.3970623)
material_override = ExtResource("3_hj70d") material_override = ExtResource("3_hj70d")
material_overlay = SubResource("ShaderMaterial_gsd23") material_overlay = SubResource("ShaderMaterial_gsd23")
mesh = SubResource("ArrayMesh_s4u17") mesh = SubResource("ArrayMesh_s4u17")
skeleton = NodePath("")
[node name="Chunk_006" type="MeshInstance3D" parent="." index="3" unique_id=1766076384] [node name="Chunk_006" type="MeshInstance3D" parent="." index="3" unique_id=1766076384]
transform = Transform3D(-70.80811, 6.212535e-06, 3.821371e-13, 0, -3.1062675e-06, 100.00001, 6.1902415e-06, 71.06311, 4.371139e-06, 2.4387622, -0.023403406, 0.024760723) transform = Transform3D(-70.80811, 6.212535e-06, 3.821371e-13, 0, -3.1062675e-06, 100.00001, 6.1902415e-06, 71.06311, 4.371139e-06, 2.4387622, -0.023403406, 0.024760723)
material_override = SubResource("StandardMaterial3D_15ugy") material_override = SubResource("StandardMaterial3D_15ugy")
material_overlay = SubResource("ShaderMaterial_pfoxn") material_overlay = SubResource("ShaderMaterial_pfoxn")
mesh = SubResource("ArrayMesh_s4u17") mesh = SubResource("ArrayMesh_s4u17")
skeleton = NodePath("")
[node name="Chunk_004" parent="." index="4" unique_id=2103650482] [node name="Chunk_004" parent="." index="4" unique_id=2018326798]
material_override = SubResource("ShaderMaterial_i4sa2") material_override = SubResource("ShaderMaterial_i4sa2")
material_overlay = SubResource("ShaderMaterial_7wsa6") material_overlay = SubResource("ShaderMaterial_7wsa6")
[node name="Chunk_038" parent="." index="5" unique_id=476922148] [node name="Chunk_038" parent="." index="5" unique_id=1208857050]
material_override = ExtResource("3_hj70d") material_override = ExtResource("3_hj70d")
material_overlay = SubResource("ShaderMaterial_6vw5y") material_overlay = SubResource("ShaderMaterial_6vw5y")
[node name="Cube_016" parent="." index="6" unique_id=117542775] [node name="Cube_016" parent="." index="6" unique_id=1832934747]
visible = false visible = false
[node name="Cube_017" parent="." index="7" unique_id=1756376932] [node name="Cube_017" parent="." index="7" unique_id=1277982416]
visible = false visible = false
[node name="Cube_019" parent="." index="8" unique_id=1580622513] [node name="Cube_019" parent="." index="8" unique_id=1762033576]
visible = false visible = false
[node name="Cube_020" parent="." index="9" unique_id=2036193462] [node name="Cube_020" parent="." index="9" unique_id=123022325]
visible = false visible = false
[node name="Cube_032" parent="." index="10" unique_id=768764430] [node name="Cube_032" parent="." index="10" unique_id=785542282]
visible = false visible = false
[node name="Cube_033" parent="." index="11" unique_id=245689535] [node name="Cube_033" parent="." index="11" unique_id=2063066472]
transform = Transform3D(1.1920929e-05, -100, -1.4901161e-05, -2.9802322e-06, -1.1920929e-05, 99.99999, -100, -5.9604645e-06, 0, 0.6881552, 0, 2.5324297) transform = Transform3D(1.1920929e-05, -100, -1.4901161e-05, -2.9802322e-06, -1.1920929e-05, 99.99999, -100, -5.9604645e-06, 0, 0.6881552, 0, 2.5324297)
visible = false visible = false
material_override = ExtResource("5_wgav2") material_override = ExtResource("5_wgav2")
[node name="Cube_035" parent="." index="12" unique_id=1334292460] [node name="Cube_035" parent="." index="12" unique_id=978937628]
visible = false visible = false
[node name="Cube_053" parent="." index="13" unique_id=1612072202] [node name="Cube_053" parent="." index="13" unique_id=511273756]
visible = false visible = false
[node name="Grass4" parent="." index="14" unique_id=1987777413 instance=ExtResource("6_lt21y")] [node name="Grass4" parent="." index="14" unique_id=1987777413 instance=ExtResource("6_lt21y")]
@@ -352,67 +458,58 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.168, 0, -5.1774583)
[node name="MSH_Staccionate2" parent="." index="32" unique_id=118332436 instance=ExtResource("14_sg641")] [node name="MSH_Staccionate2" parent="." index="32" unique_id=118332436 instance=ExtResource("14_sg641")]
transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, 0.75776386, 0, 9.171503) transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, 0.75776386, 0, 9.171503)
[node name="MSH_Staccioanta_3" parent="MSH_Staccionate2" index="0" unique_id=1218567814] [node name="MSH_Staccioanta_3" parent="MSH_Staccionate2" index="0" unique_id=518174525]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 0.61059964, 0, -0.48803043) transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 0.61059964, 0, -0.48803043)
[node name="MSH_Staccioanta_1" parent="MSH_Staccionate2" index="3" unique_id=1140003948] [node name="MSH_Staccioanta_1" parent="MSH_Staccionate2" index="3" unique_id=1389585160]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 0.6117797, 0, -4.2981853) transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 0.6117797, 0, -4.2981853)
[node name="MSH_Staccioanta_7" type="MeshInstance3D" parent="MSH_Staccionate2" index="4" unique_id=2131335904] [node name="MSH_Staccioanta_7" type="MeshInstance3D" parent="MSH_Staccionate2" index="4" unique_id=2131335904]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 0.6117797, 0, -5.2866135) transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 0.6117797, 0, -5.2866135)
material_override = ExtResource("15_u5vqi") material_override = ExtResource("15_u5vqi")
mesh = SubResource("ArrayMesh_ir84x") mesh = SubResource("ArrayMesh_ir84x")
skeleton = NodePath("")
[node name="MSH_Staccioanta_8" type="MeshInstance3D" parent="MSH_Staccionate2" index="5" unique_id=426420792] [node name="MSH_Staccioanta_8" type="MeshInstance3D" parent="MSH_Staccionate2" index="5" unique_id=426420792]
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 1.0782298, 0, -5.750946) transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 1.0782298, 0, -5.750946)
material_override = ExtResource("15_u5vqi") material_override = ExtResource("15_u5vqi")
mesh = SubResource("ArrayMesh_ir84x") mesh = SubResource("ArrayMesh_ir84x")
skeleton = NodePath("")
[node name="MSH_Staccioanta_9" type="MeshInstance3D" parent="MSH_Staccionate2" index="6" unique_id=346456244] [node name="MSH_Staccioanta_9" type="MeshInstance3D" parent="MSH_Staccionate2" index="6" unique_id=346456244]
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 2.0315967, 0, -5.750946) transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 2.0315967, 0, -5.750946)
material_override = ExtResource("15_u5vqi") material_override = ExtResource("15_u5vqi")
mesh = SubResource("ArrayMesh_ir84x") mesh = SubResource("ArrayMesh_ir84x")
skeleton = NodePath("")
[node name="MSH_Staccioanta_10" type="MeshInstance3D" parent="MSH_Staccionate2" index="7" unique_id=2016893685] [node name="MSH_Staccioanta_10" type="MeshInstance3D" parent="MSH_Staccionate2" index="7" unique_id=2016893685]
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 3.1042657, 0, -5.750946) transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 3.1042657, 0, -5.750946)
material_override = ExtResource("15_u5vqi") material_override = ExtResource("15_u5vqi")
mesh = SubResource("ArrayMesh_ir84x") mesh = SubResource("ArrayMesh_ir84x")
skeleton = NodePath("")
[node name="MSH_Staccioanta_12" type="MeshInstance3D" parent="MSH_Staccionate2" index="8" unique_id=327841375] [node name="MSH_Staccioanta_12" type="MeshInstance3D" parent="MSH_Staccionate2" index="8" unique_id=327841375]
transform = Transform3D(-4.3711385e-08, 0, 0.99999994, 0, 1, 0, -0.99999994, 0, -4.3711385e-08, 4.349199, 0, -5.2948666) transform = Transform3D(-4.3711385e-08, 0, 0.99999994, 0, 1, 0, -0.99999994, 0, -4.3711385e-08, 4.349199, 0, -5.2948666)
material_override = ExtResource("15_u5vqi") material_override = ExtResource("15_u5vqi")
mesh = SubResource("ArrayMesh_ir84x") mesh = SubResource("ArrayMesh_ir84x")
skeleton = NodePath("")
[node name="MSH_Staccioanta_13" type="MeshInstance3D" parent="MSH_Staccionate2" index="9" unique_id=1060150728] [node name="MSH_Staccioanta_13" type="MeshInstance3D" parent="MSH_Staccionate2" index="9" unique_id=1060150728]
transform = Transform3D(-4.3711385e-08, 0, 0.99999994, 0, 1, 0, -0.99999994, 0, -4.3711385e-08, 4.349199, 0, -4.266531) transform = Transform3D(-4.3711385e-08, 0, 0.99999994, 0, 1, 0, -0.99999994, 0, -4.3711385e-08, 4.349199, 0, -4.266531)
material_override = ExtResource("15_u5vqi") material_override = ExtResource("15_u5vqi")
mesh = SubResource("ArrayMesh_ir84x") mesh = SubResource("ArrayMesh_ir84x")
skeleton = NodePath("")
[node name="MSH_Staccioanta_11" type="MeshInstance3D" parent="MSH_Staccionate2" index="10" unique_id=2037753845] [node name="MSH_Staccioanta_11" type="MeshInstance3D" parent="MSH_Staccionate2" index="10" unique_id=2037753845]
transform = Transform3D(-0.7882868, 0, 8.742278e-08, 0, 1, 0, -6.891422e-08, 0, -1, 4.026463, 0, -5.750946) transform = Transform3D(-0.7882868, 0, 8.742278e-08, 0, 1, 0, -6.891422e-08, 0, -1, 4.026463, 0, -5.750946)
material_override = ExtResource("15_u5vqi") material_override = ExtResource("15_u5vqi")
mesh = SubResource("ArrayMesh_ir84x") mesh = SubResource("ArrayMesh_ir84x")
skeleton = NodePath("")
[node name="MSH_Staccioanta_5" type="MeshInstance3D" parent="MSH_Staccionate2" index="11" unique_id=2058245282] [node name="MSH_Staccioanta_5" type="MeshInstance3D" parent="MSH_Staccionate2" index="11" unique_id=2058245282]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 0.6117797, 0, -2.2385662) transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 0.6117797, 0, -2.2385662)
material_override = ExtResource("15_u5vqi") material_override = ExtResource("15_u5vqi")
mesh = SubResource("ArrayMesh_ir84x") mesh = SubResource("ArrayMesh_ir84x")
skeleton = NodePath("")
[node name="MSH_Staccioanta_6" type="MeshInstance3D" parent="MSH_Staccionate2" index="12" unique_id=2072152824] [node name="MSH_Staccioanta_6" type="MeshInstance3D" parent="MSH_Staccionate2" index="12" unique_id=2072152824]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 0.6117797, 0, -3.2790153) transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 0.6117797, 0, -3.2790153)
material_override = ExtResource("15_u5vqi") material_override = ExtResource("15_u5vqi")
mesh = SubResource("ArrayMesh_ir84x") mesh = SubResource("ArrayMesh_ir84x")
skeleton = NodePath("")
[node name="AnimationPlayer" parent="MSH_Staccionate2" index="13" unique_id=929358565] [node name="AnimationPlayer" parent="MSH_Staccionate2" index="13" unique_id=1334260899]
root_node = NodePath("../../MSH_Staccionate2") root_node = NodePath("../../MSH_Staccionate2")
[node name="TreeTest3" parent="." index="33" unique_id=838519336 instance=ExtResource("16_w82ua")] [node name="TreeTest3" parent="." index="33" unique_id=838519336 instance=ExtResource("16_w82ua")]

View File

@@ -23,9 +23,10 @@ shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1) shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0 shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6 shader_parameter/cast_shadow_strength = 0.6
shader_parameter/specular_size = 60.0 shader_parameter/use_ghibli_glint = true
shader_parameter/specular_softness = 0.01 shader_parameter/glint_color = Color(1, 0.95, 0.85, 1)
shader_parameter/specular_intensity_multiplier = 0.5 shader_parameter/glint_intensity = 1.0
shader_parameter/glint_sharpness = 32.0
shader_parameter/emission_color = Color(0, 0, 0, 1) shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0 shader_parameter/emission_energy = 0.0
@@ -76,97 +77,91 @@ shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1) shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0 shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6 shader_parameter/cast_shadow_strength = 0.6
shader_parameter/specular_size = 60.0 shader_parameter/use_ghibli_glint = true
shader_parameter/specular_softness = 0.01 shader_parameter/glint_color = Color(1, 0.95, 0.85, 1)
shader_parameter/specular_intensity_multiplier = 0.5 shader_parameter/glint_intensity = 1.0
shader_parameter/glint_sharpness = 32.0
shader_parameter/emission_color = Color(0, 0, 0, 1) shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0 shader_parameter/emission_energy = 0.0
[node name="Chunck_M_N-O-E-S1" unique_id=515911998 instance=ExtResource("1_anh2f")] [node name="Chunck_M_N-O-E-S1" unique_id=515911998 groups=["weather_node"] instance=ExtResource("1_anh2f")]
script = ExtResource("2_2wsw6") script = ExtResource("2_2wsw6")
altezza_nord = 1 height_north = 1
altezza_est = 1 height_est = 1
altezza_sud = 1 height_south = 1
altezza_ovest = 1 height_west = 1
[node name="Chunk_059" parent="." index="0" unique_id=2099343421] [node name="Chunk_059" parent="." index="0" unique_id=1796113506]
surface_material_override/0 = ExtResource("3_grv42") surface_material_override/0 = ExtResource("3_grv42")
[node name="Orto_Big_003" parent="." index="1" unique_id=1086972900] [node name="Orto_Big_003" parent="." index="1" unique_id=1388275167]
visible = false visible = false
material_override = ExtResource("4_0s706") material_override = ExtResource("4_0s706")
[node name="Orto_Big_004" parent="." index="2" unique_id=802928204] [node name="Orto_Big_004" parent="." index="2" unique_id=1889714249]
visible = false visible = false
material_override = ExtResource("4_0s706") material_override = ExtResource("4_0s706")
[node name="Orto_Big_006" parent="." index="4" unique_id=1448199652] [node name="Orto_Big_006" parent="." index="4" unique_id=1022684461]
visible = false visible = false
material_override = ExtResource("5_e6288") material_override = ExtResource("5_e6288")
[node name="Orto_Big_007" parent="." index="5" unique_id=891591826] [node name="Orto_Big_007" parent="." index="5" unique_id=1859700060]
visible = false visible = false
material_override = ExtResource("4_0s706") material_override = ExtResource("4_0s706")
[node name="Orto_Big_008" parent="." index="6" unique_id=1331556355] [node name="Orto_Big_008" parent="." index="6" unique_id=92425089]
visible = false visible = false
[node name="Orto_Big_009" parent="." index="7" unique_id=1202989086] [node name="Orto_Big_009" parent="." index="7" unique_id=874796098]
visible = false visible = false
material_override = ExtResource("5_e6288") material_override = ExtResource("5_e6288")
[node name="Orto_Big_010" parent="." index="8" unique_id=1821355826] [node name="Orto_Big_010" parent="." index="8" unique_id=1528640742]
visible = false visible = false
material_override = ExtResource("4_0s706") material_override = ExtResource("4_0s706")
[node name="Orto_Big_011" parent="." index="9" unique_id=611082346] [node name="Orto_Big_011" parent="." index="9" unique_id=578430188]
visible = false visible = false
[node name="rock17" type="MeshInstance3D" parent="." index="10" unique_id=1326861948] [node name="rock17" type="MeshInstance3D" parent="." index="10" unique_id=1326861948]
transform = Transform3D(8.425, 0, 0, 0, 28.28, 0, 0, 0, 8.425, 0, 3.0042515, -0.34401035) transform = Transform3D(8.425, 0, 0, 0, 28.28, 0, 0, 0, 8.425, 0, 3.0042515, -0.34401035)
material_override = SubResource("ShaderMaterial_e6288") material_override = SubResource("ShaderMaterial_e6288")
mesh = SubResource("ArrayMesh_sf63q") mesh = SubResource("ArrayMesh_sf63q")
skeleton = NodePath("")
surface_material_override/0 = SubResource("ShaderMaterial_am2a4") surface_material_override/0 = SubResource("ShaderMaterial_am2a4")
[node name="rock18" type="MeshInstance3D" parent="." index="11" unique_id=321722626] [node name="rock18" type="MeshInstance3D" parent="." index="11" unique_id=321722626]
transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, 4.6011515, 3.0042515, 4.2182083) transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, 4.6011515, 3.0042515, 4.2182083)
material_override = SubResource("ShaderMaterial_e6288") material_override = SubResource("ShaderMaterial_e6288")
mesh = SubResource("ArrayMesh_sf63q") mesh = SubResource("ArrayMesh_sf63q")
skeleton = NodePath("")
surface_material_override/0 = SubResource("ShaderMaterial_am2a4") surface_material_override/0 = SubResource("ShaderMaterial_am2a4")
[node name="rock19" type="MeshInstance3D" parent="." index="12" unique_id=1217722920] [node name="rock19" type="MeshInstance3D" parent="." index="12" unique_id=1217722920]
transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, 4.9510026, 3.0042515, -1.9219375) transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, 4.9510026, 3.0042515, -1.9219375)
material_override = SubResource("ShaderMaterial_e6288") material_override = SubResource("ShaderMaterial_e6288")
mesh = SubResource("ArrayMesh_sf63q") mesh = SubResource("ArrayMesh_sf63q")
skeleton = NodePath("")
surface_material_override/0 = SubResource("ShaderMaterial_am2a4") surface_material_override/0 = SubResource("ShaderMaterial_am2a4")
[node name="rock20" type="MeshInstance3D" parent="." index="13" unique_id=1505508041] [node name="rock20" type="MeshInstance3D" parent="." index="13" unique_id=1505508041]
transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, 1.9908776, 3.0042515, -4.2711177) transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, 1.9908776, 3.0042515, -4.2711177)
material_override = SubResource("ShaderMaterial_e6288") material_override = SubResource("ShaderMaterial_e6288")
mesh = SubResource("ArrayMesh_sf63q") mesh = SubResource("ArrayMesh_sf63q")
skeleton = NodePath("")
surface_material_override/0 = SubResource("ShaderMaterial_am2a4") surface_material_override/0 = SubResource("ShaderMaterial_am2a4")
[node name="rock21" type="MeshInstance3D" parent="." index="14" unique_id=369205689] [node name="rock21" type="MeshInstance3D" parent="." index="14" unique_id=369205689]
transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, -4.7941666, 3.0042515, -4.4119973) transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, -4.7941666, 3.0042515, -4.4119973)
material_override = SubResource("ShaderMaterial_e6288") material_override = SubResource("ShaderMaterial_e6288")
mesh = SubResource("ArrayMesh_sf63q") mesh = SubResource("ArrayMesh_sf63q")
skeleton = NodePath("")
surface_material_override/0 = SubResource("ShaderMaterial_am2a4") surface_material_override/0 = SubResource("ShaderMaterial_am2a4")
[node name="rock22" type="MeshInstance3D" parent="." index="15" unique_id=406332215] [node name="rock22" type="MeshInstance3D" parent="." index="15" unique_id=406332215]
transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, -4.748951, 3.0042515, 1.0487113) transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, -4.748951, 3.0042515, 1.0487113)
material_override = SubResource("ShaderMaterial_e6288") material_override = SubResource("ShaderMaterial_e6288")
mesh = SubResource("ArrayMesh_sf63q") mesh = SubResource("ArrayMesh_sf63q")
skeleton = NodePath("")
surface_material_override/0 = SubResource("ShaderMaterial_am2a4") surface_material_override/0 = SubResource("ShaderMaterial_am2a4")
[node name="rock23" type="MeshInstance3D" parent="." index="16" unique_id=1395308700] [node name="rock23" type="MeshInstance3D" parent="." index="16" unique_id=1395308700]
transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, -4.718422, 3.0042515, 4.200246) transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, -4.718422, 3.0042515, 4.200246)
material_override = SubResource("ShaderMaterial_e6288") material_override = SubResource("ShaderMaterial_e6288")
mesh = SubResource("ArrayMesh_sf63q") mesh = SubResource("ArrayMesh_sf63q")
skeleton = NodePath("")
surface_material_override/0 = SubResource("ShaderMaterial_am2a4") surface_material_override/0 = SubResource("ShaderMaterial_am2a4")