Compare commits
23 Commits
8fb89a6e14
...
daynight_t
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d8496f4cc7 | ||
|
|
84538679f3 | ||
|
|
b868584b78 | ||
| d668804038 | |||
| e8f2c4db84 | |||
| 72c933ba73 | |||
| 8f02afa796 | |||
| 211455f5da | |||
| ab87c7f478 | |||
| b95e8598b2 | |||
|
|
5ddf363368 | ||
| fda8188102 | |||
| 7470937b49 | |||
| 35618b5656 | |||
| 8b2cbab23b | |||
| 174ae98242 | |||
| f3120c6972 | |||
| 8505fcbe40 | |||
| 464f405091 | |||
| edb96d6a89 | |||
| 5fe96068a4 | |||
| 77aaf92104 | |||
| f5a38bd8a0 |
@@ -6,17 +6,17 @@ class_name ChunkInfo
|
|||||||
@export_group("Set Piece Rules (Unique pieces)")
|
@export_group("Set Piece Rules (Unique pieces)")
|
||||||
@export var exclusive_biome: String = "" # Es: "Forest"
|
@export var exclusive_biome: String = "" # Es: "Forest"
|
||||||
|
|
||||||
@export_group("Base exit (no roation)")
|
@export_group("Base exit")
|
||||||
@export var north: bool = false
|
@export var north: bool = false
|
||||||
@export var est: bool = false
|
@export var est: bool = false
|
||||||
@export var south: bool = false
|
@export var south: bool = false
|
||||||
@export var west: bool = false
|
@export var west: bool = false
|
||||||
|
|
||||||
@export_group("Margin heights (level 0, 1, 2)")
|
@export_group("Margin heights (level 0, 1, 2)")
|
||||||
@export var height_north: int = 0
|
@export_range(0, 2, 1) var height_north: int = 0
|
||||||
@export var height_est: int = 0
|
@export_range(0, 2, 1) var height_est: int = 0
|
||||||
@export var height_south: int = 0
|
@export_range(0, 2, 1) var height_south: int = 0
|
||||||
@export var height_west: int = 0
|
@export_range(0, 2, 1) var height_west: int = 0
|
||||||
|
|
||||||
@export_group("Lamppost")
|
@export_group("Lamppost")
|
||||||
@export var have_lamppost: bool = false
|
@export var have_lamppost: bool = false
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ extends Path3D
|
|||||||
@export var axes_distance: float = 3.0
|
@export var axes_distance: float = 3.0
|
||||||
@export var rail_distance: float = 1.2
|
@export var rail_distance: float = 1.2
|
||||||
@export var cameras: Node3D
|
@export var cameras: Node3D
|
||||||
@export_range(0.0, 1.0) var basic_swing: float = 0.5
|
@export_range(0.0, 1.0) var basic_swing: float = 0.1
|
||||||
|
|
||||||
@export_group("Rails Bulding")
|
@export_group("Rails Bulding")
|
||||||
@export var sleepers_distance: float = 1.0
|
@export var sleepers_distance: float = 1.0
|
||||||
@@ -37,6 +37,8 @@ var fireworks_colors: Array[Color] = [
|
|||||||
var train_instance: Node3D
|
var train_instance: Node3D
|
||||||
var train_progress: float = 0.0
|
var train_progress: float = 0.0
|
||||||
var swing_time: float = 0.0
|
var swing_time: float = 0.0
|
||||||
|
var curve_roll: float = 0.0
|
||||||
|
var curve_pitch: float = 0.0
|
||||||
|
|
||||||
var stop_offset: Array[float] = []
|
var stop_offset: Array[float] = []
|
||||||
var stops_position: Array[Vector3] = []
|
var stops_position: Array[Vector3] = []
|
||||||
@@ -45,14 +47,111 @@ var next_stop_index: int = 0
|
|||||||
var stop_multiply: float = 1.0
|
var stop_multiply: float = 1.0
|
||||||
var is_restarting: bool = false
|
var is_restarting: bool = false
|
||||||
var tween_restart: Tween
|
var tween_restart: Tween
|
||||||
|
var environment_config: EnvironmentConfig
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
_cache_environment_config()
|
||||||
if curve != null and curve.get_baked_length() > 0:
|
if curve != null and curve.get_baked_length() > 0:
|
||||||
build_rails()
|
build_rails()
|
||||||
build_train()
|
build_train()
|
||||||
_plan_stops()
|
_plan_stops()
|
||||||
|
_apply_initial_train_start()
|
||||||
else:
|
else:
|
||||||
print("WARNING: Draw your Path3D!")
|
print("WARNING: Draw Path3D for rails!")
|
||||||
|
|
||||||
|
func _cache_environment_config() -> void:
|
||||||
|
var parent_node: Node = get_parent()
|
||||||
|
if parent_node != null:
|
||||||
|
var day_night_node := parent_node.get_node_or_null("DayNight") as EnvironmentManagerRoot
|
||||||
|
if day_night_node != null:
|
||||||
|
environment_config = day_night_node.environment_config
|
||||||
|
return
|
||||||
|
|
||||||
|
var current_scene: Node = get_tree().current_scene
|
||||||
|
if current_scene == null:
|
||||||
|
return
|
||||||
|
|
||||||
|
for child in current_scene.get_children():
|
||||||
|
var environment_manager := child as EnvironmentManagerRoot
|
||||||
|
if environment_manager != null:
|
||||||
|
environment_config = environment_manager.environment_config
|
||||||
|
return
|
||||||
|
|
||||||
|
func _apply_initial_train_start() -> void:
|
||||||
|
if train_instance == null or curve == null:
|
||||||
|
return
|
||||||
|
|
||||||
|
var total_length: float = curve.get_baked_length()
|
||||||
|
if total_length <= 0.0:
|
||||||
|
return
|
||||||
|
|
||||||
|
#start from a random position
|
||||||
|
if environment_config != null and environment_config.train_start_from_random_position:
|
||||||
|
train_progress = randf() * total_length
|
||||||
|
_update_next_stop_index_from_progress()
|
||||||
|
elif environment_config != null and not stop_offset.is_empty():
|
||||||
|
#start from a specific stop
|
||||||
|
var stop_index: int = clampi(environment_config.train_start_stop_index, 0, stop_offset.size() - 1)
|
||||||
|
train_progress = stop_offset[stop_index]
|
||||||
|
_set_next_stop_index_from_current(stop_index)
|
||||||
|
else:
|
||||||
|
train_progress = wrapf(train_progress, 0.0, total_length)
|
||||||
|
_update_next_stop_index_from_progress()
|
||||||
|
|
||||||
|
_snap_train_to_progress()
|
||||||
|
|
||||||
|
func _set_next_stop_index_from_current(current_stop_index: int) -> void:
|
||||||
|
if stop_offset.is_empty():
|
||||||
|
next_stop_index = 0
|
||||||
|
return
|
||||||
|
|
||||||
|
if train_speed >= 0.0:
|
||||||
|
next_stop_index = (current_stop_index + 1) % stop_offset.size()
|
||||||
|
else:
|
||||||
|
next_stop_index = current_stop_index - 1
|
||||||
|
if next_stop_index < 0:
|
||||||
|
next_stop_index = stop_offset.size() - 1
|
||||||
|
|
||||||
|
func _update_next_stop_index_from_progress() -> void:
|
||||||
|
if stop_offset.is_empty():
|
||||||
|
next_stop_index = 0
|
||||||
|
return
|
||||||
|
|
||||||
|
if train_speed >= 0.0:
|
||||||
|
next_stop_index = 0
|
||||||
|
for i in range(stop_offset.size()):
|
||||||
|
if stop_offset[i] > train_progress + 0.001:
|
||||||
|
next_stop_index = i
|
||||||
|
return
|
||||||
|
return
|
||||||
|
|
||||||
|
next_stop_index = stop_offset.size() - 1
|
||||||
|
for i in range(stop_offset.size() - 1, -1, -1):
|
||||||
|
if stop_offset[i] < train_progress - 0.001:
|
||||||
|
next_stop_index = i
|
||||||
|
return
|
||||||
|
|
||||||
|
func _snap_train_to_progress() -> void:
|
||||||
|
if train_instance == null or curve == null:
|
||||||
|
return
|
||||||
|
|
||||||
|
var total_length: float = curve.get_baked_length()
|
||||||
|
if total_length <= 0.0:
|
||||||
|
return
|
||||||
|
|
||||||
|
train_progress = wrapf(train_progress, 0.0, total_length)
|
||||||
|
var center_position: Vector3 = to_global(curve.sample_baked(train_progress, true))
|
||||||
|
var prog_forward: float = wrapf(train_progress + 2.0, 0.0, total_length)
|
||||||
|
var forward_position: Vector3 = to_global(curve.sample_baked(prog_forward, true))
|
||||||
|
|
||||||
|
train_instance.global_position = center_position
|
||||||
|
if center_position.distance_to(forward_position) > 0.01:
|
||||||
|
train_instance.look_at(forward_position, Vector3.UP)
|
||||||
|
train_instance.rotate_y(PI)
|
||||||
|
|
||||||
|
if cameras:
|
||||||
|
cameras.global_position = center_position
|
||||||
|
cameras.global_basis = train_instance.global_basis
|
||||||
|
|
||||||
func build_rails() -> void:
|
func build_rails() -> void:
|
||||||
var mat_wood = StandardMaterial3D.new()
|
var mat_wood = StandardMaterial3D.new()
|
||||||
@@ -112,16 +211,16 @@ func build_rails() -> void:
|
|||||||
rail_piece.add_child(rail_dx)
|
rail_piece.add_child(rail_dx)
|
||||||
|
|
||||||
func _plan_stops() -> void:
|
func _plan_stops() -> void:
|
||||||
var currnet_stops = []
|
var current_stops = []
|
||||||
for child in get_children():
|
for child in get_children():
|
||||||
if child is Marker3D:
|
if child is Marker3D:
|
||||||
var offset = curve.get_closest_offset(child.position)
|
var offset = curve.get_closest_offset(child.position)
|
||||||
currnet_stops.append({
|
current_stops.append({
|
||||||
"offset": offset,
|
"offset": offset,
|
||||||
"position": child.global_position
|
"position": child.global_position
|
||||||
})
|
})
|
||||||
currnet_stops.sort_custom(func(a, b): return a["offset"] < b["offset"])
|
current_stops.sort_custom(func(a, b): return a["offset"] < b["offset"])
|
||||||
for data in currnet_stops:
|
for data in current_stops:
|
||||||
stop_offset.append(data["offset"])
|
stop_offset.append(data["offset"])
|
||||||
stops_position.append(data["position"])
|
stops_position.append(data["position"])
|
||||||
|
|
||||||
@@ -130,9 +229,9 @@ func _input(event: InputEvent) -> void:
|
|||||||
if event.keycode == KEY_T:
|
if event.keycode == KEY_T:
|
||||||
_goto_next_stop()
|
_goto_next_stop()
|
||||||
elif event.keycode == KEY_F:
|
elif event.keycode == KEY_F:
|
||||||
_test_manual_fires()
|
_test_manual_fireworks()
|
||||||
|
|
||||||
func _test_manual_fires() -> void:
|
func _test_manual_fireworks() -> void:
|
||||||
if fireworks_scene == null or train_instance == null: return
|
if fireworks_scene == null or train_instance == null: return
|
||||||
|
|
||||||
var firework_number = randi_range(5, 8)
|
var firework_number = randi_range(5, 8)
|
||||||
@@ -146,8 +245,8 @@ func _test_manual_fires() -> void:
|
|||||||
|
|
||||||
if fire_root.has_method("set_color"):
|
if fire_root.has_method("set_color"):
|
||||||
fire_root.set_color(fireworks_colors.pick_random())
|
fire_root.set_color(fireworks_colors.pick_random())
|
||||||
if fire_root.has_method("turnon"):
|
if fire_root.has_method("turn_on"):
|
||||||
fire_root.turnon()
|
fire_root.turn_on()
|
||||||
|
|
||||||
await get_tree().create_timer(randf_range(0.2, 0.6)).timeout
|
await get_tree().create_timer(randf_range(0.2, 0.6)).timeout
|
||||||
|
|
||||||
@@ -168,6 +267,8 @@ func input_controls_management(delta: float) -> void:
|
|||||||
train_speed += manual_acceleration * delta
|
train_speed += manual_acceleration * delta
|
||||||
elif Input.is_action_pressed("ui_down"):
|
elif Input.is_action_pressed("ui_down"):
|
||||||
train_speed -= manual_acceleration * delta
|
train_speed -= manual_acceleration * delta
|
||||||
|
elif Input.is_action_pressed("ui_text_backspace"):
|
||||||
|
train_speed = 0
|
||||||
train_speed = clamp(train_speed, speed_min, speed_max)
|
train_speed = clamp(train_speed, speed_min, speed_max)
|
||||||
|
|
||||||
func train_move(delta: float) -> void:
|
func train_move(delta: float) -> void:
|
||||||
@@ -209,6 +310,8 @@ func train_move(delta: float) -> void:
|
|||||||
if stop_offset.size() > 0: next_stop_index = stop_offset.size() - 1
|
if stop_offset.size() > 0: next_stop_index = stop_offset.size() - 1
|
||||||
|
|
||||||
var center_position = to_global(curve.sample_baked(train_progress, true))
|
var center_position = to_global(curve.sample_baked(train_progress, true))
|
||||||
|
var prog_back = wrapf(train_progress - 2.0, 0.0, total_length)
|
||||||
|
var back_position = to_global(curve.sample_baked(prog_back, true))
|
||||||
var prog_forward = wrapf(train_progress + 2.0, 0.0, total_length)
|
var prog_forward = wrapf(train_progress + 2.0, 0.0, total_length)
|
||||||
var forward_position = to_global(curve.sample_baked(prog_forward, true))
|
var forward_position = to_global(curve.sample_baked(prog_forward, true))
|
||||||
|
|
||||||
@@ -217,17 +320,32 @@ func train_move(delta: float) -> void:
|
|||||||
train_instance.look_at(forward_position, Vector3.UP)
|
train_instance.look_at(forward_position, Vector3.UP)
|
||||||
train_instance.rotate_y(PI)
|
train_instance.rotate_y(PI)
|
||||||
|
|
||||||
if cameras:
|
if cameras:
|
||||||
cameras.global_position = center_position
|
cameras.global_position = center_position
|
||||||
cameras.global_basis = train_instance.global_basis
|
cameras.global_basis = train_instance.global_basis
|
||||||
|
|
||||||
|
var real_speed = abs(train_speed * stop_multiply)
|
||||||
|
var speed_factor = clamp(real_speed / max(speed_max, 0.001), 0.0, 1.0)
|
||||||
|
var dir_prev = (center_position - back_position).normalized()
|
||||||
|
var dir_next = (forward_position - center_position).normalized()
|
||||||
|
var signed_curve = dir_prev.cross(dir_next).y
|
||||||
|
var curve_amount = clamp(abs(signed_curve) * 8.0, 0.0, 1.0)
|
||||||
|
|
||||||
|
curve_roll = lerp(curve_roll, (-signed_curve * 0.08) * speed_factor, delta * 4.0)
|
||||||
|
curve_pitch = lerp(curve_pitch, curve_amount * 0.012 * speed_factor, delta * 4.0)
|
||||||
|
|
||||||
if not stop_ongoing:
|
if not stop_ongoing:
|
||||||
var real_speed = abs(train_speed * stop_multiply)
|
swing_time += delta * real_speed * (2.0 + curve_amount)
|
||||||
swing_time += delta * real_speed * 2.0
|
|
||||||
var amplitude_z = 0.006 * basic_swing
|
var amplitude_z = 0.006 * basic_swing
|
||||||
var amplitude_x = 0.004 * basic_swing
|
var amplitude_x = 0.004 * basic_swing
|
||||||
|
var curve_sway = sin(swing_time * 1.35) * 0.01 * curve_amount * speed_factor
|
||||||
train_instance.rotation.z += sin(swing_time) * amplitude_z
|
train_instance.rotation.z += sin(swing_time) * amplitude_z
|
||||||
train_instance.rotation.x += cos(swing_time * 0.8) * amplitude_x
|
train_instance.rotation.x += cos(swing_time * 0.8) * amplitude_x
|
||||||
|
train_instance.rotation.z += curve_roll + curve_sway
|
||||||
|
train_instance.rotation.x += curve_pitch
|
||||||
|
else:
|
||||||
|
train_instance.rotation.z += curve_roll
|
||||||
|
train_instance.rotation.x += curve_pitch
|
||||||
|
|
||||||
func _execute_stop(go_forward: bool = true) -> void:
|
func _execute_stop(go_forward: bool = true) -> void:
|
||||||
stop_ongoing = true
|
stop_ongoing = true
|
||||||
@@ -258,8 +376,8 @@ func _execute_stop(go_forward: bool = true) -> void:
|
|||||||
|
|
||||||
if fire_root.has_method("set_color"):
|
if fire_root.has_method("set_color"):
|
||||||
fire_root.set_color(fireworks_colors.pick_random())
|
fire_root.set_color(fireworks_colors.pick_random())
|
||||||
if fire_root.has_method("turnon"):
|
if fire_root.has_method("turn_on"):
|
||||||
fire_root.turnon()
|
fire_root.turn_on()
|
||||||
|
|
||||||
await get_tree().create_timer(randf_range(0.3, 0.8)).timeout
|
await get_tree().create_timer(randf_range(0.3, 0.8)).timeout
|
||||||
|
|
||||||
@@ -6,19 +6,24 @@ 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_strength;
|
||||||
global uniform float global_wind_speed;
|
global uniform float global_wind_speed;
|
||||||
|
global uniform float global_wind_fade;
|
||||||
|
|
||||||
void vertex() {
|
void vertex() {
|
||||||
//COLOR.r is the drawing. 0 -> lampost (no move); 1.0 is the center of the wire
|
//COLOR.r is the drawing. 0 -> lampost (no move); 1.0 is the center of the wire
|
||||||
float movement = COLOR.r;
|
float movement = COLOR.r;
|
||||||
|
float wind_amount = global_wind_strength * global_wind_fade;
|
||||||
|
|
||||||
//Create a wave (based on position and time to be random)
|
//Create a wave (based on position and time to be random)
|
||||||
float wind_wave = 0.0;
|
float wind_wave = 0.0;
|
||||||
if (global_wind_speed > 0.0 && global_wind_strength > 0.0) {
|
float vertical_wave = 0.0;
|
||||||
wind_wave = sin(TIME * global_wind_speed + NODE_POSITION_WORLD.x * 0.5) * global_wind_strength;
|
if (global_wind_speed > 0.0 && wind_amount > 0.0) {
|
||||||
|
wind_wave = sin(TIME * global_wind_speed + NODE_POSITION_WORLD.x * 0.5 + NODE_POSITION_WORLD.z * 0.35) * wind_amount;
|
||||||
|
vertical_wave = sin(TIME * global_wind_speed * 0.7 + NODE_POSITION_WORLD.z * 0.35) * wind_amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
VERTEX.x += wind_wave * 0.1 * movement;
|
VERTEX.x += wind_wave * 0.28 * movement;
|
||||||
VERTEX.z += wind_wave * 0.05 * movement;
|
VERTEX.y += vertical_wave * 0.125 * movement;
|
||||||
|
VERTEX.z += wind_wave * 0.24 * movement;
|
||||||
}
|
}
|
||||||
|
|
||||||
void fragment() {
|
void fragment() {
|
||||||
|
|||||||
@@ -1,9 +1,17 @@
|
|||||||
shader_type canvas_item;
|
shader_type canvas_item;
|
||||||
|
|
||||||
|
// Cattura tutto quello che c'è sotto questo nodo
|
||||||
uniform sampler2D screen_texture : hint_screen_texture, filter_linear_mipmap;
|
uniform sampler2D screen_texture : hint_screen_texture, filter_linear_mipmap;
|
||||||
|
|
||||||
uniform float blur_amount : hint_range(0.0, 5.0) = 2.5;
|
uniform float blur_amount : hint_range(0.0, 5.0) = 2.5;
|
||||||
|
uniform float focus_size : hint_range(0.0, 1.0) = 0.4;
|
||||||
|
uniform float transition_softness : hint_range(0.01, 1.0) = 0.3;
|
||||||
|
|
||||||
void fragment() {
|
void fragment() {
|
||||||
COLOR = textureLod(screen_texture, SCREEN_UV, blur_amount);
|
float dist_from_center = abs(SCREEN_UV.y - 0.5);
|
||||||
|
float mask = smoothstep(focus_size / 2.0, (focus_size / 2.0) + transition_softness, dist_from_center);
|
||||||
|
|
||||||
|
// Applica il blur
|
||||||
|
vec4 blurred_screen = textureLod(screen_texture, SCREEN_UV, blur_amount * mask);
|
||||||
|
COLOR = blurred_screen;
|
||||||
}
|
}
|
||||||
@@ -1,16 +1,21 @@
|
|||||||
class_name DayNightController
|
class_name DayNightController
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
|
const TIME_OPTION_SUNRISE: int = 0
|
||||||
|
const TIME_OPTION_DAY: int = 1
|
||||||
|
const TIME_OPTION_SUNSET: int = 2
|
||||||
|
const TIME_OPTION_NIGHT: int = 3
|
||||||
|
|
||||||
var environment_config: EnvironmentConfig
|
var environment_config: EnvironmentConfig
|
||||||
|
|
||||||
#Multiply for debug
|
#Multiply for debug
|
||||||
@export var time_scale: float = 1.0
|
@export var time_scale: float = 1.0
|
||||||
|
|
||||||
@export var paused: bool = false
|
@export var paused: bool = false
|
||||||
|
|
||||||
signal time_changed(time: float)
|
signal time_changed(time: float)
|
||||||
|
|
||||||
var current_time: float = 0.0
|
var current_time: float = 0.0
|
||||||
|
var _current_time_option_index: int = -1
|
||||||
|
|
||||||
func _init(environmentconfig: EnvironmentConfig) -> void:
|
func _init(environmentconfig: EnvironmentConfig) -> void:
|
||||||
environment_config = environmentconfig
|
environment_config = environmentconfig
|
||||||
@@ -19,6 +24,7 @@ func _ready() -> void:
|
|||||||
#connect events
|
#connect events
|
||||||
UIEvents.set_day_time.connect(_on_set_day_time)
|
UIEvents.set_day_time.connect(_on_set_day_time)
|
||||||
UIEvents.toggle_pause_daytime.connect(_on_toggle_pause_daytime)
|
UIEvents.toggle_pause_daytime.connect(_on_toggle_pause_daytime)
|
||||||
|
UIEvents.time_option_item_changed.connect(_time_option_changed)
|
||||||
|
|
||||||
current_time = environment_config.start_time
|
current_time = environment_config.start_time
|
||||||
update_time(current_time)
|
update_time(current_time)
|
||||||
@@ -44,9 +50,34 @@ func set_time(t: float) -> void:
|
|||||||
update_time(current_time)
|
update_time(current_time)
|
||||||
|
|
||||||
func update_time(currtime: float) -> void:
|
func update_time(currtime: float) -> void:
|
||||||
|
var time_option_index: int = get_time_option_index(currtime)
|
||||||
|
if time_option_index != _current_time_option_index:
|
||||||
|
_current_time_option_index = time_option_index
|
||||||
|
UIEvents.day_time_option_changed.emit(time_option_index)
|
||||||
|
|
||||||
emit_signal("time_changed", currtime)
|
emit_signal("time_changed", currtime)
|
||||||
UIEvents.day_time_changed.emit(currtime, get_time_string())
|
UIEvents.day_time_changed.emit(currtime, get_time_string())
|
||||||
|
|
||||||
|
func get_time_option_index(currtime: float) -> int:
|
||||||
|
if currtime >= environment_config.night or currtime < environment_config.sunrise:
|
||||||
|
return TIME_OPTION_NIGHT
|
||||||
|
if currtime < environment_config.day:
|
||||||
|
return TIME_OPTION_SUNRISE
|
||||||
|
if currtime < environment_config.sunset:
|
||||||
|
return TIME_OPTION_DAY
|
||||||
|
return TIME_OPTION_SUNSET
|
||||||
|
|
||||||
|
func _time_option_changed(index: int) -> void:
|
||||||
|
match index:
|
||||||
|
TIME_OPTION_SUNRISE:
|
||||||
|
set_time(environment_config.sunrise)
|
||||||
|
TIME_OPTION_DAY:
|
||||||
|
set_time(environment_config.day)
|
||||||
|
TIME_OPTION_SUNSET:
|
||||||
|
set_time(environment_config.sunset)
|
||||||
|
TIME_OPTION_NIGHT:
|
||||||
|
set_time(environment_config.night)
|
||||||
|
|
||||||
func _on_set_day_time(value: float) -> void:
|
func _on_set_day_time(value: float) -> void:
|
||||||
set_time(value)
|
set_time(value)
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ 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;
|
global uniform float global_wind_speed;
|
||||||
|
global uniform float global_wind_fade;
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
@@ -30,7 +31,7 @@ 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;
|
||||||
float wind_active = step(0.0001, abs(global_wind_speed));
|
float wind_active = global_wind_fade * step(0.0001, abs(global_wind_speed));
|
||||||
vec2 final_wind = ((wind_speed + osc) * dust_speed) * wind_active;
|
vec2 final_wind = ((wind_speed + osc) * dust_speed) * wind_active;
|
||||||
|
|
||||||
float final_particle_alpha = 0.0;
|
float final_particle_alpha = 0.0;
|
||||||
|
|||||||
@@ -40,9 +40,55 @@ shader_parameter/sun_color = Color(0.2841828, 0.2023238, 0.27953526, 1)
|
|||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_r4tfj"]
|
[sub_resource type="Resource" id="Resource_r4tfj"]
|
||||||
script = ExtResource("2_h6hjk")
|
script = ExtResource("2_h6hjk")
|
||||||
|
morning_color = Color(0.93333334, 0.78039217, 0.6039216, 1)
|
||||||
|
afternoon_color = Color(0.9490196, 0.62352943, 0.38039216, 1)
|
||||||
|
night_color = Color(0.18431373, 0.18431373, 0.4862745, 1)
|
||||||
|
sun_rotation_morning = Vector3(-50, -90, 0)
|
||||||
|
sun_rotation_afternoon = Vector3(-120, -90, 0)
|
||||||
|
sun_rotation_night = Vector3(-130, -90, 0)
|
||||||
|
night_light_energy = 1.0
|
||||||
|
exposure_morning = 0.8
|
||||||
|
exposure_afternoon = 0.7
|
||||||
|
exposure_night = 0.7
|
||||||
|
sky_top_morning = Color(0.11764706, 0.35686275, 0.5411765, 1)
|
||||||
|
sky_top_afternoon = Color(0.7019608, 0.4509804, 0.2, 1)
|
||||||
|
sky_top_night = Color(0.050980393, 0.050980393, 0.14901961, 1)
|
||||||
|
sky_horizon_morning = Color(0.4627451, 0.6745098, 0.8627451, 1)
|
||||||
|
sky_horizon_afternoon = Color(0.93333334, 0.6, 0.8039216, 1)
|
||||||
|
sky_horizon_night = Color(0.14901961, 0.101960786, 0.2509804, 1)
|
||||||
|
grad_top_morning = Color(0.7921569, 0.8784314, 0.95686275, 1)
|
||||||
|
grad_top_afternoon = Color(0.8627451, 0.24313726, 0.5411765, 1)
|
||||||
|
grad_top_night = Color(0.16470589, 0.16470589, 0.26666668, 1)
|
||||||
|
grad_bot_morning = Color(0.05882353, 0.078431375, 0.21568628, 1)
|
||||||
|
grad_bot_afternoon = Color(0.2509804, 0.019607844, 0.043137256, 1)
|
||||||
|
grad_intensity_morning = 0.05
|
||||||
|
grad_intensity_afternoon = 0.1
|
||||||
|
grad_intensity_night = 0.5
|
||||||
|
fog_color_morning = Color(0.7490196, 0.8509804, 0.9490196, 1)
|
||||||
|
fog_color_afternoon = Color(0.9647059, 0.5882353, 0.7607843, 1)
|
||||||
|
fog_color_night = Color(0.14901961, 0.101960786, 0.2509804, 1)
|
||||||
|
fog_density_morning = 0.01
|
||||||
|
fog_density_afternoon = 0.02
|
||||||
|
glow_morning = 0.4
|
||||||
|
glow_night = 0.6
|
||||||
material_fog = SubResource("ShaderMaterial_b5atu")
|
material_fog = SubResource("ShaderMaterial_b5atu")
|
||||||
material_drops = SubResource("StandardMaterial3D_r4tfj")
|
material_drops = SubResource("StandardMaterial3D_r4tfj")
|
||||||
material_clouds = SubResource("ShaderMaterial_ruhh7")
|
material_clouds = SubResource("ShaderMaterial_ruhh7")
|
||||||
|
lightning_color = Color(1, 0.9843137, 0.4627451, 1)
|
||||||
|
lightning_min = 2
|
||||||
|
lightning_max = 4
|
||||||
|
lightning_scale_min = 2.0
|
||||||
|
lightning_scale_max = 5.0
|
||||||
|
godray_max_rain = 60
|
||||||
|
godray_spawn_radius = 100.0
|
||||||
|
godray_spawn_offset = Vector3(20, 80, 20)
|
||||||
|
godray_rotation_degrees = Vector3(50, 30, 0)
|
||||||
|
godray_scale = Vector3(2, 25, 50)
|
||||||
|
snow_amount = 2000.0
|
||||||
|
wind_amount = 50
|
||||||
|
cloud_speed = 0.01
|
||||||
|
fireflies_amount = 550
|
||||||
|
fireflies_spawn_ray = 60.0
|
||||||
metadata/_custom_type_script = "uid://butda6k2tli3o"
|
metadata/_custom_type_script = "uid://butda6k2tli3o"
|
||||||
|
|
||||||
[sub_resource type="Gradient" id="Gradient_i3hjl"]
|
[sub_resource type="Gradient" id="Gradient_i3hjl"]
|
||||||
@@ -85,7 +131,7 @@ gradient = SubResource("Gradient_djqkg")
|
|||||||
lifetime_randomness = 0.5
|
lifetime_randomness = 0.5
|
||||||
emission_shape_scale = Vector3(5, 5, 5)
|
emission_shape_scale = Vector3(5, 5, 5)
|
||||||
emission_shape = 3
|
emission_shape = 3
|
||||||
emission_box_extents = Vector3(25, 5, 25)
|
emission_box_extents = Vector3(1, 1, 1)
|
||||||
direction = Vector3(0, 1, 0)
|
direction = Vector3(0, 1, 0)
|
||||||
initial_velocity_min = 6.0
|
initial_velocity_min = 6.0
|
||||||
initial_velocity_max = 6.0
|
initial_velocity_max = 6.0
|
||||||
@@ -99,10 +145,9 @@ point_count = 3
|
|||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_cer0u"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_cer0u"]
|
||||||
render_priority = 0
|
render_priority = 0
|
||||||
shader = ExtResource("5_djqkg")
|
shader = ExtResource("5_djqkg")
|
||||||
shader_parameter/wave_frequency = 1.0
|
shader_parameter/time_scale = 3.065
|
||||||
shader_parameter/base_amplitude = 0.5
|
shader_parameter/wave_amplitude = 0.3
|
||||||
shader_parameter/secondary_ratio = 0.6
|
shader_parameter/wave_frequency = 0.25
|
||||||
shader_parameter/time_scale_base = 3.0
|
|
||||||
|
|
||||||
[sub_resource type="TubeTrailMesh" id="TubeTrailMesh_vo82p"]
|
[sub_resource type="TubeTrailMesh" id="TubeTrailMesh_vo82p"]
|
||||||
material = SubResource("ShaderMaterial_cer0u")
|
material = SubResource("ShaderMaterial_cer0u")
|
||||||
@@ -174,7 +219,9 @@ size = Vector2(0.05, 0.8)
|
|||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_kavln"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_kavln"]
|
||||||
shader = ExtResource("9_amaf0")
|
shader = ExtResource("9_amaf0")
|
||||||
shader_parameter/blur_amount = 0.6000000285
|
shader_parameter/blur_amount = 0.50000002375
|
||||||
|
shader_parameter/focus_size = 0.54400002584
|
||||||
|
shader_parameter/transition_softness = 0.00999999977648
|
||||||
|
|
||||||
[sub_resource type="QuadMesh" id="QuadMesh_sxgg7"]
|
[sub_resource type="QuadMesh" id="QuadMesh_sxgg7"]
|
||||||
size = Vector2(2, 2)
|
size = Vector2(2, 2)
|
||||||
@@ -184,12 +231,12 @@ noise = ExtResource("11_yn8v8")
|
|||||||
seamless = true
|
seamless = true
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_oqt1s"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_oqt1s"]
|
||||||
render_priority = 0
|
render_priority = -1
|
||||||
shader = ExtResource("10_tuauy")
|
shader = ExtResource("10_tuauy")
|
||||||
shader_parameter/noise_texture = SubResource("NoiseTexture2D_0fcg4")
|
shader_parameter/noise_texture = SubResource("NoiseTexture2D_0fcg4")
|
||||||
shader_parameter/cloud_scale = 0.0070000003325
|
shader_parameter/cloud_scale = 0.0070000003325
|
||||||
shader_parameter/cloud_speed = 0.0030000001425
|
shader_parameter/cloud_speed = 0.0030000001425
|
||||||
shader_parameter/direction = Vector2(0.5, 0.2)
|
shader_parameter/direction = Vector2(0.1, 0.025)
|
||||||
shader_parameter/sun_angle = Vector2(0.5, 0.5)
|
shader_parameter/sun_angle = Vector2(0.5, 0.5)
|
||||||
shader_parameter/cloud_density = 0.400000019
|
shader_parameter/cloud_density = 0.400000019
|
||||||
shader_parameter/center_sharpness = 0.138000006555
|
shader_parameter/center_sharpness = 0.138000006555
|
||||||
@@ -222,9 +269,9 @@ process_material = SubResource("ParticleProcessMaterial_i3hjl")
|
|||||||
draw_pass_1 = SubResource("QuadMesh_b5atu")
|
draw_pass_1 = SubResource("QuadMesh_b5atu")
|
||||||
|
|
||||||
[node name="Particles_Wind" type="GPUParticles3D" parent="." unique_id=1238214694]
|
[node name="Particles_Wind" type="GPUParticles3D" parent="." unique_id=1238214694]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 50, 0)
|
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 50, 0)
|
||||||
emitting = false
|
cast_shadow = 0
|
||||||
amount = 100
|
amount = 25
|
||||||
lifetime = 3.0
|
lifetime = 3.0
|
||||||
fixed_fps = 60
|
fixed_fps = 60
|
||||||
process_material = SubResource("ParticleProcessMaterial_ruhh7")
|
process_material = SubResource("ParticleProcessMaterial_ruhh7")
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
class_name EnvironmentManagerRoot
|
class_name EnvironmentManagerRoot
|
||||||
extends Node3D
|
extends Node3D
|
||||||
|
|
||||||
|
const NOISE_TEXTURE: Texture2D = preload("res://core/daynight/noise.tres")
|
||||||
|
const WEATHER_SHADER: Material = preload("res://core/daynight/weather_overlay.tres")
|
||||||
|
const WEATHER_PLAIN_SHADER: Material = preload("res://core/daynight/weather_plain_shader.tres")
|
||||||
|
|
||||||
@export var environment_config: EnvironmentConfig
|
@export var environment_config: EnvironmentConfig
|
||||||
|
|
||||||
@export_group("Camera")
|
@export_group("Camera")
|
||||||
@@ -33,6 +37,9 @@ var day_time: float = 0.0
|
|||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
|
||||||
|
#connect shader when new node is added
|
||||||
|
get_tree().node_added.connect(_on_tree_node_added)
|
||||||
|
|
||||||
#set noise texture 2d to materials in special group
|
#set noise texture 2d to materials in special group
|
||||||
ApplyWindNoiseToMaterials()
|
ApplyWindNoiseToMaterials()
|
||||||
#set weather overlay (snow + rain) to materials in special group
|
#set weather overlay (snow + rain) to materials in special group
|
||||||
@@ -67,10 +74,26 @@ func _ready() -> void:
|
|||||||
weather_controller.name = "WeatherController"
|
weather_controller.name = "WeatherController"
|
||||||
add_child(weather_controller)
|
add_child(weather_controller)
|
||||||
|
|
||||||
|
func _on_tree_node_added(node: Node) -> void:
|
||||||
|
if node.is_in_group("wind_node") or node.is_in_group("weather_node") or node.is_in_group("weather_vegetables_node"):
|
||||||
|
call_deferred("_apply_dynamic_environment_materials", node)
|
||||||
|
|
||||||
|
func _apply_dynamic_environment_materials(node: Node) -> void:
|
||||||
|
if not is_instance_valid(node):
|
||||||
|
return
|
||||||
|
|
||||||
|
if node.is_in_group("wind_node"):
|
||||||
|
_apply_wind_noise_to_node(node, NOISE_TEXTURE)
|
||||||
|
|
||||||
|
if node.is_in_group("weather_node"):
|
||||||
|
_apply_weather_overlay_to_node(node, WEATHER_SHADER)
|
||||||
|
|
||||||
|
if node.is_in_group("weather_vegetables_node"):
|
||||||
|
_apply_weather_overlay_to_node(node, WEATHER_PLAIN_SHADER)
|
||||||
|
|
||||||
func ApplyWindNoiseToMaterials():
|
func ApplyWindNoiseToMaterials():
|
||||||
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"):
|
||||||
_apply_wind_noise_to_node(node, noise_tex)
|
_apply_wind_noise_to_node(node, NOISE_TEXTURE)
|
||||||
|
|
||||||
func _apply_wind_noise_to_node(node: Node, noise_tex: Texture2D) -> void:
|
func _apply_wind_noise_to_node(node: Node, noise_tex: Texture2D) -> void:
|
||||||
if node is GeometryInstance3D:
|
if node is GeometryInstance3D:
|
||||||
@@ -88,15 +111,18 @@ func _apply_wind_noise_to_node(node: Node, noise_tex: Texture2D) -> void:
|
|||||||
_apply_wind_noise_to_node(child, noise_tex)
|
_apply_wind_noise_to_node(child, noise_tex)
|
||||||
|
|
||||||
func ApplyWeatherShaderToMaterials():
|
func ApplyWeatherShaderToMaterials():
|
||||||
var weather_shader = preload("res://core/daynight/weather_overlay.tres")
|
|
||||||
|
|
||||||
for node in get_tree().get_nodes_in_group("weather_node"):
|
for node in get_tree().get_nodes_in_group("weather_node"):
|
||||||
if node is GeometryInstance3D:
|
_apply_weather_overlay_to_node(node, WEATHER_SHADER)
|
||||||
node.material_overlay = weather_shader
|
|
||||||
else:
|
for node in get_tree().get_nodes_in_group("weather_vegetables_node"):
|
||||||
for child in node.get_children():
|
_apply_weather_overlay_to_node(node, WEATHER_PLAIN_SHADER)
|
||||||
if child is GeometryInstance3D:
|
|
||||||
child.material_overlay = weather_shader
|
func _apply_weather_overlay_to_node(node: Node, material: Material) -> void:
|
||||||
|
if node is GeometryInstance3D:
|
||||||
|
node.material_overlay = material
|
||||||
|
|
||||||
|
for child in node.get_children():
|
||||||
|
_apply_weather_overlay_to_node(child, material)
|
||||||
|
|
||||||
func select_day_time(normalized_time: float) -> void:
|
func select_day_time(normalized_time: float) -> void:
|
||||||
#set show_day_time_debug = true to show debug on screen
|
#set show_day_time_debug = true to show debug on screen
|
||||||
|
|||||||
@@ -8,7 +8,10 @@ global uniform float global_wind_speed;
|
|||||||
global uniform float global_wind_strength;
|
global uniform float global_wind_strength;
|
||||||
global uniform vec2 global_wind_direction;
|
global uniform vec2 global_wind_direction;
|
||||||
//global uniform sampler2D global_wind_noise : filter_linear_mipmap;
|
//global uniform sampler2D global_wind_noise : filter_linear_mipmap;
|
||||||
global uniform float global_snow_amount;
|
global uniform float global_snow_start_time;
|
||||||
|
global uniform float global_snow_accumulation_speed;
|
||||||
|
global uniform float global_snow_melt_time;
|
||||||
|
global uniform float global_snow_melt_speed;
|
||||||
|
|
||||||
// --- PARAMETRI ESTETICI ---
|
// --- PARAMETRI ESTETICI ---
|
||||||
uniform bool billboard_enabled = true;
|
uniform bool billboard_enabled = true;
|
||||||
@@ -110,9 +113,18 @@ void fragment() {
|
|||||||
// Applichiamo la variazione al colore finale dell'erba
|
// Applichiamo la variazione al colore finale dell'erba
|
||||||
vec3 varied_grass_color = mix(v_final_color, variance_color.rgb, noise_sample * variance_intensity);
|
vec3 varied_grass_color = mix(v_final_color, variance_color.rgb, noise_sample * variance_intensity);
|
||||||
|
|
||||||
|
float snow_amount = 0.0;
|
||||||
|
if (global_snow_start_time >= 0.0) {
|
||||||
|
snow_amount = clamp((TIME - global_snow_start_time) * global_snow_accumulation_speed, 0.0, 1.0);
|
||||||
|
}
|
||||||
|
if (global_snow_melt_time >= 0.0) {
|
||||||
|
float melt = clamp((TIME - global_snow_melt_time) * global_snow_melt_speed, 0.0, 1.0);
|
||||||
|
snow_amount *= (1.0 - melt);
|
||||||
|
}
|
||||||
|
|
||||||
float top_mask = 1.0 - shifted_uv.y;
|
float top_mask = 1.0 - shifted_uv.y;
|
||||||
float snow_mask = smoothstep(1.0 - global_snow_amount, 1.2 - global_snow_amount, top_mask);
|
float snow_mask = smoothstep(1.0 - snow_amount, 1.2 - snow_amount, top_mask);
|
||||||
snow_mask *= step(0.01, global_snow_amount);
|
snow_mask *= step(0.01, snow_amount);
|
||||||
|
|
||||||
vec3 dark_snow = snow_color.rgb * (1.0 - shadow_intensity);
|
vec3 dark_snow = snow_color.rgb * (1.0 - shadow_intensity);
|
||||||
vec3 shaded_snow = mix(dark_snow, snow_color.rgb, v_shade_factor);
|
vec3 shaded_snow = mix(dark_snow, snow_color.rgb, v_shade_factor);
|
||||||
|
|||||||
114
core/daynight/snow_cap.gd
Normal file
114
core/daynight/snow_cap.gd
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
## Procedural snow cap geometry for flat roofs and vehicles.
|
||||||
|
extends Node3D
|
||||||
|
|
||||||
|
enum PlacementMode {
|
||||||
|
AUTO_TARGET_AABB,
|
||||||
|
MANUAL_SURFACE,
|
||||||
|
}
|
||||||
|
|
||||||
|
const SNOW_CAP_SHADER: Shader = preload("res://core/daynight/snow_cap.gdshader")
|
||||||
|
|
||||||
|
@export var placement_mode: PlacementMode = PlacementMode.AUTO_TARGET_AABB
|
||||||
|
@export var target_path: NodePath
|
||||||
|
@export var size_inset: Vector2 = Vector2(0.25, 1.0)
|
||||||
|
@export var position_offset: Vector3 = Vector3(0.0, -0.08, 0.0)
|
||||||
|
@export var max_snow_height: float = 0.2
|
||||||
|
@export_range(1, 24) var subdivide_width: int = 6
|
||||||
|
@export_range(1, 24) var subdivide_depth: int = 18
|
||||||
|
@export var manual_surface_center: Vector3 = Vector3.ZERO
|
||||||
|
@export var manual_surface_size: Vector2 = Vector2(2.0, 6.0)
|
||||||
|
|
||||||
|
var _mesh_instance: MeshInstance3D
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
add_to_group("weather_overlay_ignore")
|
||||||
|
_ensure_mesh_instance()
|
||||||
|
_rebuild()
|
||||||
|
|
||||||
|
|
||||||
|
func rebuild() -> void:
|
||||||
|
_rebuild()
|
||||||
|
|
||||||
|
|
||||||
|
func _ensure_mesh_instance() -> void:
|
||||||
|
_mesh_instance = get_node_or_null("SnowCapMesh") as MeshInstance3D
|
||||||
|
if _mesh_instance != null:
|
||||||
|
return
|
||||||
|
|
||||||
|
_mesh_instance = MeshInstance3D.new()
|
||||||
|
_mesh_instance.name = "SnowCapMesh"
|
||||||
|
_mesh_instance.add_to_group("weather_overlay_ignore")
|
||||||
|
add_child(_mesh_instance)
|
||||||
|
|
||||||
|
|
||||||
|
func _rebuild() -> void:
|
||||||
|
var cap_width: float = 0.0
|
||||||
|
var cap_depth: float = 0.0
|
||||||
|
var cap_surface_center := Vector3.ZERO
|
||||||
|
|
||||||
|
if placement_mode == PlacementMode.MANUAL_SURFACE:
|
||||||
|
cap_width = manual_surface_size.x
|
||||||
|
cap_depth = manual_surface_size.y
|
||||||
|
cap_surface_center = manual_surface_center
|
||||||
|
else:
|
||||||
|
var target_mesh: MeshInstance3D = get_node_or_null(target_path) as MeshInstance3D
|
||||||
|
if target_mesh == null:
|
||||||
|
if _mesh_instance:
|
||||||
|
_mesh_instance.visible = false
|
||||||
|
return
|
||||||
|
|
||||||
|
var target_aabb: AABB = _get_target_aabb(target_mesh)
|
||||||
|
cap_width = max(target_aabb.size.x - size_inset.x, 0.1)
|
||||||
|
cap_depth = max(target_aabb.size.z - size_inset.y, 0.1)
|
||||||
|
cap_surface_center = Vector3(
|
||||||
|
target_aabb.position.x + target_aabb.size.x * 0.5,
|
||||||
|
target_aabb.position.y + target_aabb.size.y,
|
||||||
|
target_aabb.position.z + target_aabb.size.z * 0.5
|
||||||
|
)
|
||||||
|
|
||||||
|
var cap_center := cap_surface_center + Vector3(0.0, max_snow_height * 0.5, 0.0)
|
||||||
|
|
||||||
|
var box_mesh := BoxMesh.new()
|
||||||
|
box_mesh.size = Vector3(cap_width, max_snow_height, cap_depth)
|
||||||
|
box_mesh.subdivide_width = subdivide_width
|
||||||
|
box_mesh.subdivide_depth = subdivide_depth
|
||||||
|
_mesh_instance.mesh = box_mesh
|
||||||
|
_mesh_instance.position = cap_center + position_offset
|
||||||
|
_mesh_instance.material_override = _build_material(cap_width, cap_depth)
|
||||||
|
_mesh_instance.visible = true
|
||||||
|
|
||||||
|
|
||||||
|
func _build_material(cap_width: float, cap_depth: float) -> ShaderMaterial:
|
||||||
|
var material := ShaderMaterial.new()
|
||||||
|
material.shader = SNOW_CAP_SHADER
|
||||||
|
material.set_shader_parameter("max_height", max_snow_height)
|
||||||
|
material.set_shader_parameter("half_width", cap_width * 0.5)
|
||||||
|
material.set_shader_parameter("half_depth", cap_depth * 0.5)
|
||||||
|
return material
|
||||||
|
|
||||||
|
|
||||||
|
func _get_target_aabb(target_mesh: MeshInstance3D) -> AABB:
|
||||||
|
var points: Array[Vector3] = []
|
||||||
|
for point in _get_aabb_points(target_mesh.get_aabb()):
|
||||||
|
points.append(target_mesh.transform * point)
|
||||||
|
|
||||||
|
var merged := AABB(points[0], Vector3.ZERO)
|
||||||
|
for point in points:
|
||||||
|
merged = merged.expand(point)
|
||||||
|
return merged
|
||||||
|
|
||||||
|
|
||||||
|
func _get_aabb_points(aabb: AABB) -> Array[Vector3]:
|
||||||
|
var p: Vector3 = aabb.position
|
||||||
|
var s: Vector3 = aabb.size
|
||||||
|
return [
|
||||||
|
p,
|
||||||
|
p + Vector3(s.x, 0.0, 0.0),
|
||||||
|
p + Vector3(0.0, s.y, 0.0),
|
||||||
|
p + Vector3(0.0, 0.0, s.z),
|
||||||
|
p + Vector3(s.x, s.y, 0.0),
|
||||||
|
p + Vector3(s.x, 0.0, s.z),
|
||||||
|
p + Vector3(0.0, s.y, s.z),
|
||||||
|
p + s,
|
||||||
|
]
|
||||||
1
core/daynight/snow_cap.gd.uid
Normal file
1
core/daynight/snow_cap.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://bxc6ketfgedxw
|
||||||
114
core/daynight/snow_cap.gdshader
Normal file
114
core/daynight/snow_cap.gdshader
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
shader_type spatial;
|
||||||
|
render_mode blend_mix, cull_back, depth_draw_opaque;
|
||||||
|
|
||||||
|
global uniform float global_snow_start_time = -1.0;
|
||||||
|
global uniform float global_snow_accumulation_speed = 0.1;
|
||||||
|
global uniform float global_snow_melt_time = -1.0;
|
||||||
|
global uniform float global_snow_melt_speed = 0.1;
|
||||||
|
global uniform vec4 global_snow_color = vec4(0.92, 0.96, 1.0, 1.0);
|
||||||
|
|
||||||
|
uniform float max_height : hint_range(0.02, 1.0) = 0.2;
|
||||||
|
uniform float half_width : hint_range(0.01, 20.0) = 1.0;
|
||||||
|
uniform float half_depth : hint_range(0.01, 20.0) = 1.0;
|
||||||
|
uniform float noise_scale : hint_range(0.05, 2.0) = 0.35;
|
||||||
|
uniform float noise_strength : hint_range(0.0, 0.4) = 0.18;
|
||||||
|
uniform float edge_rounding : hint_range(0.0, 0.3) = 0.12;
|
||||||
|
uniform float side_shade : hint_range(0.2, 1.0) = 0.82;
|
||||||
|
uniform float sparkle_strength : hint_range(0.0, 0.1) = 0.03;
|
||||||
|
|
||||||
|
varying float v_snow_amount;
|
||||||
|
varying float v_noise;
|
||||||
|
|
||||||
|
float hash(vec2 p) {
|
||||||
|
return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123);
|
||||||
|
}
|
||||||
|
|
||||||
|
float value_noise(vec2 p) {
|
||||||
|
vec2 i = floor(p);
|
||||||
|
vec2 f = fract(p);
|
||||||
|
vec2 u = f * f * (3.0 - 2.0 * f);
|
||||||
|
|
||||||
|
float a = hash(i);
|
||||||
|
float b = hash(i + vec2(1.0, 0.0));
|
||||||
|
float c = hash(i + vec2(0.0, 1.0));
|
||||||
|
float d = hash(i + vec2(1.0, 1.0));
|
||||||
|
|
||||||
|
return mix(mix(a, b, u.x), mix(c, d, u.x), u.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
float fbm(vec2 p) {
|
||||||
|
float value = 0.0;
|
||||||
|
float amplitude = 0.5;
|
||||||
|
float frequency = 1.0;
|
||||||
|
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
value += value_noise(p * frequency) * amplitude;
|
||||||
|
frequency *= 2.0;
|
||||||
|
amplitude *= 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
return clamp(value, 0.0, 1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
float get_snow_amount() {
|
||||||
|
float snow_amount = 0.0;
|
||||||
|
if (global_snow_start_time >= 0.0) {
|
||||||
|
snow_amount = clamp(
|
||||||
|
(TIME - global_snow_start_time) * global_snow_accumulation_speed,
|
||||||
|
0.0,
|
||||||
|
1.0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (global_snow_melt_time >= 0.0) {
|
||||||
|
float melt = clamp((TIME - global_snow_melt_time) * global_snow_melt_speed, 0.0, 1.0);
|
||||||
|
snow_amount *= (1.0 - melt);
|
||||||
|
}
|
||||||
|
return snow_amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
void vertex() {
|
||||||
|
vec3 base_vertex = VERTEX;
|
||||||
|
vec3 world_pos = (MODEL_MATRIX * vec4(base_vertex, 1.0)).xyz;
|
||||||
|
float snow_amount = get_snow_amount();
|
||||||
|
float noise_val = fbm(world_pos.xz * noise_scale);
|
||||||
|
float thickness = max_height * snow_amount * mix(
|
||||||
|
1.0 - noise_strength,
|
||||||
|
1.0 + noise_strength,
|
||||||
|
noise_val
|
||||||
|
);
|
||||||
|
float footprint_growth = smoothstep(0.0, 0.35, snow_amount);
|
||||||
|
|
||||||
|
float from_bottom = clamp((base_vertex.y + max_height * 0.5) / max_height, 0.0, 1.0);
|
||||||
|
VERTEX.y = -max_height * 0.5 + thickness * from_bottom;
|
||||||
|
VERTEX.x *= mix(0.92, 1.0, footprint_growth);
|
||||||
|
VERTEX.z *= mix(0.94, 1.0, footprint_growth);
|
||||||
|
|
||||||
|
float edge_x = abs(base_vertex.x) / max(half_width, 0.001);
|
||||||
|
float edge_z = abs(base_vertex.z) / max(half_depth, 0.001);
|
||||||
|
float edge_mask = smoothstep(0.55, 1.0, max(edge_x, edge_z));
|
||||||
|
float top_mask = smoothstep(0.6, 1.0, from_bottom) * snow_amount;
|
||||||
|
float round_factor = edge_rounding * edge_mask * top_mask;
|
||||||
|
VERTEX.x *= 1.0 - round_factor;
|
||||||
|
VERTEX.z *= 1.0 - round_factor;
|
||||||
|
|
||||||
|
v_snow_amount = snow_amount;
|
||||||
|
v_noise = noise_val;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
if (v_snow_amount <= 0.001) {
|
||||||
|
ALPHA = 0.0;
|
||||||
|
ALBEDO = global_snow_color.rgb;
|
||||||
|
ROUGHNESS = 1.0;
|
||||||
|
SPECULAR = 0.0;
|
||||||
|
} else {
|
||||||
|
float facing_up = clamp(NORMAL.y, 0.0, 1.0);
|
||||||
|
float shade = mix(-sparkle_strength, sparkle_strength, v_noise);
|
||||||
|
vec3 snow_albedo = clamp(global_snow_color.rgb + vec3(shade), 0.0, 1.0);
|
||||||
|
|
||||||
|
ALBEDO = mix(snow_albedo * side_shade, snow_albedo, facing_up);
|
||||||
|
ROUGHNESS = mix(0.95, 0.72, facing_up);
|
||||||
|
SPECULAR = 0.18;
|
||||||
|
ALPHA = smoothstep(0.0, 0.28, v_snow_amount);
|
||||||
|
}
|
||||||
|
}
|
||||||
1
core/daynight/snow_cap.gdshader.uid
Normal file
1
core/daynight/snow_cap.gdshader.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://c7js7ytvewmab
|
||||||
@@ -5,11 +5,13 @@ global uniform float global_wind_speed;
|
|||||||
global uniform vec2 global_wind_direction;
|
global uniform vec2 global_wind_direction;
|
||||||
global uniform float global_wind_scale;
|
global uniform float global_wind_scale;
|
||||||
global uniform float global_wind_strength;
|
global uniform float global_wind_strength;
|
||||||
|
global uniform float global_wind_fade;
|
||||||
|
/*
|
||||||
global uniform float global_snow_start_time;
|
global uniform float global_snow_start_time;
|
||||||
global uniform float global_snow_accumulation_speed;
|
global uniform float global_snow_accumulation_speed;
|
||||||
global uniform float global_snow_melt_time;
|
global uniform float global_snow_melt_time;
|
||||||
global uniform float global_snow_melt_speed;
|
global uniform float global_snow_melt_speed;
|
||||||
global uniform vec4 global_snow_color;
|
global uniform vec4 global_snow_color;*/
|
||||||
global uniform float global_rain_intensity;
|
global uniform float global_rain_intensity;
|
||||||
|
|
||||||
uniform sampler2D wind_noise : filter_linear_mipmap;
|
uniform sampler2D wind_noise : filter_linear_mipmap;
|
||||||
@@ -43,12 +45,12 @@ 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 && global_wind_speed > 0.0 && global_wind_strength > 0.0) {
|
if (wind_enabled && global_wind_speed > 0.0 && global_wind_strength > 0.0 && global_wind_fade > 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;
|
||||||
float sway = sin(time + (noise_val * 10.0));
|
float sway = sin(time + (noise_val * 10.0));
|
||||||
total_angle += (sway * global_wind_strength);
|
total_angle += (sway * global_wind_strength * global_wind_fade);
|
||||||
}
|
}
|
||||||
|
|
||||||
float h_factor = clamp((instance_pos.y - height_min) / (height_max - height_min), 0.0, 1.0);
|
float h_factor = clamp((instance_pos.y - height_min) / (height_max - height_min), 0.0, 1.0);
|
||||||
@@ -86,23 +88,24 @@ void fragment() {
|
|||||||
vec2 shifted_uv = UV + texture_offset;
|
vec2 shifted_uv = UV + texture_offset;
|
||||||
vec4 tex = texture(alpha_texture, shifted_uv);
|
vec4 tex = texture(alpha_texture, shifted_uv);
|
||||||
|
|
||||||
// Snow accumulation
|
//// Snow accumulation
|
||||||
float snow_amount = 0.0;
|
//float snow_amount = 0.0;
|
||||||
if (global_snow_start_time >= 0.0) {
|
//if (global_snow_start_time >= 0.0) {
|
||||||
snow_amount = clamp((TIME - global_snow_start_time) * global_snow_accumulation_speed, 0.0, 1.0);
|
//snow_amount = clamp((TIME - global_snow_start_time) * global_snow_accumulation_speed, 0.0, 1.0);
|
||||||
}
|
//}
|
||||||
if (global_snow_melt_time >= 0.0) {
|
//if (global_snow_melt_time >= 0.0) {
|
||||||
float melt = clamp((TIME - global_snow_melt_time) * global_snow_melt_speed, 0.0, 1.0);
|
//float melt = clamp((TIME - global_snow_melt_time) * global_snow_melt_speed, 0.0, 1.0);
|
||||||
snow_amount *= (1.0 - melt);
|
//snow_amount *= (1.0 - melt);
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
|
//float top_mask = 1.0 - shifted_uv.y;
|
||||||
|
//float snow_mask = smoothstep(1.0 - snow_amount, 1.2 - snow_amount, top_mask);
|
||||||
|
//snow_mask *= step(0.01, snow_amount);
|
||||||
|
|
||||||
float top_mask = 1.0 - shifted_uv.y;
|
//vec3 dark_snow = global_snow_color.rgb * (1.0 - shadow_intensity);
|
||||||
float snow_mask = smoothstep(1.0 - snow_amount, 1.2 - snow_amount, top_mask);
|
//vec3 shaded_snow = mix(dark_snow, global_snow_color.rgb, v_shade_factor);
|
||||||
snow_mask *= step(0.01, snow_amount);
|
//vec3 final_albedo = mix(v_final_color, shaded_snow, snow_mask);
|
||||||
|
vec3 final_albedo = v_final_color;
|
||||||
vec3 dark_snow = global_snow_color.rgb * (1.0 - shadow_intensity);
|
|
||||||
vec3 shaded_snow = mix(dark_snow, global_snow_color.rgb, v_shade_factor);
|
|
||||||
vec3 final_albedo = mix(v_final_color, shaded_snow, snow_mask);
|
|
||||||
|
|
||||||
// Rain wetness: darken and make shinier
|
// Rain wetness: darken and make shinier
|
||||||
float rain_int = clamp(global_rain_intensity, 0.0, 1.0);
|
float rain_int = clamp(global_rain_intensity, 0.0, 1.0);
|
||||||
|
|||||||
@@ -1,22 +1,21 @@
|
|||||||
shader_type spatial;
|
shader_type spatial;
|
||||||
render_mode blend_mix, depth_draw_always;
|
render_mode blend_mix, depth_draw_always;
|
||||||
|
|
||||||
// --- PARAMETRI COLORI ACQUA ---
|
global uniform float global_rain_intensity;
|
||||||
|
|
||||||
|
//Water color
|
||||||
uniform vec4 deep_water_color : source_color = vec4(0.0, 0.1, 0.2, 1.0);
|
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);
|
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;
|
uniform float beer_law_factor : hint_range(0.0, 10.0) = 5.0;
|
||||||
|
|
||||||
// ---> PARAMETRI FAKE REFLECTION (SPECCHIATA) <---
|
|
||||||
group_uniforms Fake_Reflection_Proximity;
|
group_uniforms Fake_Reflection_Proximity;
|
||||||
uniform sampler2D screen_texture : hint_screen_texture, filter_linear_mipmap;
|
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_strength : hint_range(0.0, 1.0) = 0.6;
|
||||||
uniform float reflection_offset : hint_range(-0.5, 0.5) = 0.05; // Offset base
|
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 reflection_stretch : hint_range(-1.0, 1.0) = 0.1;
|
||||||
uniform float max_reflection_distance : hint_range(0.1, 10.0) = 1.5;
|
uniform float max_reflection_distance : hint_range(0.1, 10.0) = 1.5;
|
||||||
|
|
||||||
// ---> PARAMETRI RIPPLES <---
|
//Ripples parameters
|
||||||
group_uniforms Ripple_Settings;
|
group_uniforms Ripple_Settings;
|
||||||
uniform vec4 ripple_color : source_color = vec4(1.0, 1.0, 1.0, 0.7);
|
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_density : hint_range(0.0, 1.0) = 0.05;
|
||||||
@@ -30,13 +29,11 @@ varying vec2 world_pos_xz;
|
|||||||
varying vec2 local_uv;
|
varying vec2 local_uv;
|
||||||
|
|
||||||
void vertex() {
|
void vertex() {
|
||||||
// Salviamo la posizione XZ e la UV locale per l'effetto specchio
|
|
||||||
world_pos_xz = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xz;
|
world_pos_xz = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xz;
|
||||||
local_uv = UV;
|
local_uv = UV;
|
||||||
}
|
}
|
||||||
|
|
||||||
void fragment() {
|
void fragment() {
|
||||||
// --- 1. LOGICA PROFONDITÀ (Beer's Law) ---
|
|
||||||
float depth = texture(depth_texture, SCREEN_UV).r;
|
float depth = texture(depth_texture, SCREEN_UV).r;
|
||||||
vec3 ndc = vec3(SCREEN_UV * 2.0 - 1.0, depth);
|
vec3 ndc = vec3(SCREEN_UV * 2.0 - 1.0, depth);
|
||||||
vec4 view = INV_PROJECTION_MATRIX * vec4(ndc, 1.0);
|
vec4 view = INV_PROJECTION_MATRIX * vec4(ndc, 1.0);
|
||||||
@@ -46,8 +43,8 @@ void fragment() {
|
|||||||
|
|
||||||
float water_depth_gradient = exp(-depth_difference * beer_law_factor);
|
float water_depth_gradient = exp(-depth_difference * beer_law_factor);
|
||||||
vec4 base_water = mix(deep_water_color, shallow_water_color, water_depth_gradient);
|
vec4 base_water = mix(deep_water_color, shallow_water_color, water_depth_gradient);
|
||||||
|
float rain_intensity = clamp(global_rain_intensity, 0.0, 1.0);
|
||||||
|
|
||||||
// --- 2. LOGICA RIPPLES CASUALI ---
|
|
||||||
vec2 pos = world_pos_xz * ripple_scale;
|
vec2 pos = world_pos_xz * ripple_scale;
|
||||||
vec2 cell = floor(pos);
|
vec2 cell = floor(pos);
|
||||||
vec2 local_pos = fract(pos) - 0.5;
|
vec2 local_pos = fract(pos) - 0.5;
|
||||||
@@ -62,19 +59,15 @@ void fragment() {
|
|||||||
- smoothstep(local_time, local_time + ripple_thickness, dist);
|
- smoothstep(local_time, local_time + ripple_thickness, dist);
|
||||||
ring *= (1.0 - local_time);
|
ring *= (1.0 - local_time);
|
||||||
}
|
}
|
||||||
|
ring *= rain_intensity;
|
||||||
|
|
||||||
// --- 3. FAKE REFLECTION SPECCHIATA E A CORTO RAGGIO ---
|
|
||||||
vec2 ref_uv = SCREEN_UV;
|
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);
|
ref_uv.y -= reflection_offset + (local_uv.y * reflection_stretch);
|
||||||
|
|
||||||
// Distorciamo il riflesso dove ci sono i ripples
|
|
||||||
ref_uv += ring * 0.01;
|
ref_uv += ring * 0.01;
|
||||||
|
|
||||||
vec3 screen_ref = textureLod(screen_texture, ref_uv, 0.0).rgb;
|
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;
|
float ref_depth_raw = texture(depth_texture, ref_uv).r;
|
||||||
vec3 ref_ndc = vec3(ref_uv * 2.0 - 1.0, ref_depth_raw);
|
vec3 ref_ndc = vec3(ref_uv * 2.0 - 1.0, ref_depth_raw);
|
||||||
vec4 ref_view = INV_PROJECTION_MATRIX * vec4(ref_ndc, 1.0);
|
vec4 ref_view = INV_PROJECTION_MATRIX * vec4(ref_ndc, 1.0);
|
||||||
@@ -86,13 +79,11 @@ void fragment() {
|
|||||||
float is_sky = step(ref_depth_raw, 0.00001); // Protezione anti-cielo
|
float is_sky = step(ref_depth_raw, 0.00001); // Protezione anti-cielo
|
||||||
reflection_mask *= (1.0 - is_sky);
|
reflection_mask *= (1.0 - is_sky);
|
||||||
|
|
||||||
// --- 4. MIX FINALE ---
|
|
||||||
vec3 final_rgb = mix(base_water.rgb, screen_ref, reflection_strength * reflection_mask);
|
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);
|
final_rgb = mix(final_rgb, ripple_color.rgb, ring * ripple_color.a);
|
||||||
|
|
||||||
ALBEDO = final_rgb;
|
ALBEDO = final_rgb;
|
||||||
|
|
||||||
// Alpha base dell'acqua + opacità dei ripples per farli sempre risaltare
|
|
||||||
ALPHA = mix(0.98, 0.4, water_depth_gradient);
|
ALPHA = mix(0.98, 0.4, water_depth_gradient);
|
||||||
ALPHA = clamp(ALPHA + (ring * ripple_color.a), 0.0, 1.0);
|
ALPHA = clamp(ALPHA + (ring * ripple_color.a), 0.0, 1.0);
|
||||||
|
|
||||||
|
|||||||
@@ -42,8 +42,14 @@ var actual_snow_amount: float = 0.0
|
|||||||
|
|
||||||
var is_storm: bool = false
|
var is_storm: bool = false
|
||||||
var cold_tween: Tween
|
var cold_tween: Tween
|
||||||
|
var wind_tween: Tween
|
||||||
var is_windy: bool = false
|
var is_windy: bool = false
|
||||||
var thereare_fireflies: bool = false
|
var thereare_fireflies: bool = false
|
||||||
|
var current_wind_speed: float = 0.0
|
||||||
|
var current_wind_strength: float = 0.0
|
||||||
|
var current_wind_fade: float = 0.0
|
||||||
|
var max_wind_amount: int = 0
|
||||||
|
var random_weather_restore_tween: Tween
|
||||||
|
|
||||||
func _init(wind: GPUParticles3D, snow: GPUParticles3D,
|
func _init(wind: GPUParticles3D, snow: GPUParticles3D,
|
||||||
fireflies: GPUParticles3D, rain: GPUParticles3D, ray: PackedScene,
|
fireflies: GPUParticles3D, rain: GPUParticles3D, ray: PackedScene,
|
||||||
@@ -61,6 +67,7 @@ func _init(wind: GPUParticles3D, snow: GPUParticles3D,
|
|||||||
environment_shadows = envshadows
|
environment_shadows = envshadows
|
||||||
environment = theenvironment
|
environment = theenvironment
|
||||||
environment_config = environmentconfig
|
environment_config = environmentconfig
|
||||||
|
max_wind_amount = environment_config.wind_amount if environment_config != null else 0
|
||||||
camera = thecamera
|
camera = thecamera
|
||||||
camera_pivot = thecamerapivot
|
camera_pivot = thecamerapivot
|
||||||
thunder_sounds = thundersounds
|
thunder_sounds = thundersounds
|
||||||
@@ -91,11 +98,14 @@ func _ready() -> void:
|
|||||||
UIEvents.toggle_rain.connect(toggle_rain)
|
UIEvents.toggle_rain.connect(toggle_rain)
|
||||||
UIEvents.toggle_snow.connect(toggle_snow)
|
UIEvents.toggle_snow.connect(toggle_snow)
|
||||||
UIEvents.toggle_wind.connect(toggle_wind)
|
UIEvents.toggle_wind.connect(toggle_wind)
|
||||||
|
UIEvents.wind_change.connect(change_wind_strength)
|
||||||
|
UIEvents.trigger_random_weather.connect(trigger_random_weather_event)
|
||||||
UIEvents.toggle_fireflies.connect(toggle_fireflies)
|
UIEvents.toggle_fireflies.connect(toggle_fireflies)
|
||||||
UIEvents.toggle_storm.connect(toggle_storm)
|
UIEvents.toggle_storm.connect(toggle_storm)
|
||||||
UIEvents.toggle_dust.connect(toggle_dust)
|
UIEvents.toggle_dust.connect(toggle_dust)
|
||||||
UIEvents.toggle_blur.connect(toggle_blur)
|
UIEvents.toggle_blur.connect(toggle_blur)
|
||||||
UIEvents.toggle_shadows.connect(toggle_shadows)
|
UIEvents.toggle_shadows.connect(toggle_shadows)
|
||||||
|
_emit_weather_event_label()
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
|
|
||||||
@@ -300,9 +310,11 @@ func toggle_wind(value: bool):
|
|||||||
particles_wind.emitting = is_windy
|
particles_wind.emitting = is_windy
|
||||||
|
|
||||||
_apply_wind_state()
|
_apply_wind_state()
|
||||||
|
_emit_weather_event_label()
|
||||||
|
|
||||||
#disable wind and set default values and materials
|
#disable wind and set default values and materials
|
||||||
func init_wind():
|
func init_wind():
|
||||||
|
_update_wind_amount_from_strength(environment_config.wind_strength)
|
||||||
if particles_wind:
|
if particles_wind:
|
||||||
particles_wind.visible = true
|
particles_wind.visible = true
|
||||||
particles_wind.emitting = false
|
particles_wind.emitting = false
|
||||||
@@ -334,16 +346,118 @@ 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()
|
_apply_wind_state(true)
|
||||||
|
|
||||||
func _apply_wind_state() -> void:
|
func _apply_wind_state(immediate: bool = false) -> void:
|
||||||
if environment_config == null:
|
if environment_config == null:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if wind_tween and wind_tween.is_valid():
|
||||||
|
wind_tween.kill()
|
||||||
|
|
||||||
var active_wind_speed := environment_config.wind_speed if is_windy else 0.0
|
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
|
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)
|
var active_wind_fade := 1.0 if is_windy else 0.0
|
||||||
RenderingServer.global_shader_parameter_set("global_wind_strength", active_wind_strength)
|
if immediate:
|
||||||
|
_set_current_wind_speed(active_wind_speed)
|
||||||
|
_set_current_wind_strength(active_wind_strength)
|
||||||
|
_set_current_wind_fade(active_wind_fade)
|
||||||
|
return
|
||||||
|
|
||||||
|
_set_current_wind_speed(environment_config.wind_speed)
|
||||||
|
_set_current_wind_strength(environment_config.wind_strength)
|
||||||
|
wind_tween = create_tween()
|
||||||
|
wind_tween.tween_method(_set_current_wind_fade, current_wind_fade, active_wind_fade, environment_config.wind_fade_in_out_time)
|
||||||
|
wind_tween.tween_callback(_finish_wind_fade_out)
|
||||||
|
|
||||||
|
func _set_current_wind_speed(value: float) -> void:
|
||||||
|
current_wind_speed = value
|
||||||
|
RenderingServer.global_shader_parameter_set("global_wind_speed", value)
|
||||||
|
|
||||||
|
func _set_current_wind_strength(value: float) -> void:
|
||||||
|
current_wind_strength = value
|
||||||
|
RenderingServer.global_shader_parameter_set("global_wind_strength", value)
|
||||||
|
|
||||||
|
func _set_current_wind_fade(value: float) -> void:
|
||||||
|
current_wind_fade = value
|
||||||
|
RenderingServer.global_shader_parameter_set("global_wind_fade", value)
|
||||||
|
|
||||||
|
func _finish_wind_fade_out() -> void:
|
||||||
|
if is_windy:
|
||||||
|
return
|
||||||
|
|
||||||
|
_set_current_wind_speed(0.0)
|
||||||
|
_set_current_wind_strength(0.0)
|
||||||
|
_set_current_wind_fade(0.0)
|
||||||
|
|
||||||
|
func change_wind_strength(value: float) -> void:
|
||||||
|
if environment_config == null:
|
||||||
|
return
|
||||||
|
|
||||||
|
environment_config.wind_strength = value
|
||||||
|
_update_wind_amount_from_strength(value)
|
||||||
|
if is_windy or current_wind_fade > 0.0:
|
||||||
|
_set_current_wind_strength(value)
|
||||||
|
if particles_wind:
|
||||||
|
particles_wind.amount = environment_config.wind_amount
|
||||||
|
|
||||||
|
func _update_wind_amount_from_strength(value: float) -> void:
|
||||||
|
if environment_config == null:
|
||||||
|
return
|
||||||
|
if max_wind_amount <= 0:
|
||||||
|
max_wind_amount = max(environment_config.wind_amount, 1)
|
||||||
|
|
||||||
|
var normalized_strength: float = clamp(value, 0.0, 1.0)
|
||||||
|
var amount_ratio: float = normalized_strength
|
||||||
|
if normalized_strength > 0.0 and normalized_strength < 0.3:
|
||||||
|
amount_ratio = lerp(0.08, 0.25, normalized_strength / 0.3)
|
||||||
|
|
||||||
|
environment_config.wind_amount = roundi(max_wind_amount * amount_ratio)
|
||||||
|
|
||||||
|
func trigger_random_weather_event(duration: float = 0.0) -> void:
|
||||||
|
if random_weather_restore_tween and random_weather_restore_tween.is_valid():
|
||||||
|
random_weather_restore_tween.kill()
|
||||||
|
|
||||||
|
var previous_rain: bool = is_raining
|
||||||
|
var previous_snow: bool = is_snowing
|
||||||
|
var previous_wind: bool = is_windy
|
||||||
|
var previous_storm: bool = is_storm
|
||||||
|
var random_event_index: int = randi_range(0, 3)
|
||||||
|
match random_event_index:
|
||||||
|
0:
|
||||||
|
_apply_weather_event_state(false, true, false, false)
|
||||||
|
1:
|
||||||
|
_apply_weather_event_state(true, false, false, false)
|
||||||
|
2:
|
||||||
|
_apply_weather_event_state(false, false, true, false)
|
||||||
|
_:
|
||||||
|
_apply_weather_event_state(true, false, false, true)
|
||||||
|
|
||||||
|
if duration > 0.0:
|
||||||
|
random_weather_restore_tween = create_tween()
|
||||||
|
random_weather_restore_tween.tween_interval(duration)
|
||||||
|
random_weather_restore_tween.tween_callback(func():
|
||||||
|
_apply_weather_event_state(previous_rain, previous_snow, previous_wind, previous_storm)
|
||||||
|
)
|
||||||
|
|
||||||
|
func _apply_weather_event_state(rain_enabled: bool, snow_enabled: bool, wind_enabled: bool, storm_enabled: bool = false) -> void:
|
||||||
|
if is_storm and not storm_enabled:
|
||||||
|
toggle_storm(false)
|
||||||
|
if is_raining and not rain_enabled:
|
||||||
|
toggle_rain(false)
|
||||||
|
if is_snowing and not snow_enabled:
|
||||||
|
toggle_snow(false)
|
||||||
|
if is_windy and not wind_enabled:
|
||||||
|
toggle_wind(false)
|
||||||
|
|
||||||
|
if not is_raining and rain_enabled:
|
||||||
|
toggle_rain(true)
|
||||||
|
if not is_snowing and snow_enabled:
|
||||||
|
toggle_snow(true)
|
||||||
|
if not is_windy and wind_enabled:
|
||||||
|
toggle_wind(true)
|
||||||
|
if not is_storm and storm_enabled:
|
||||||
|
toggle_storm(true)
|
||||||
|
|
||||||
func _apply_cloud_config() -> void:
|
func _apply_cloud_config() -> void:
|
||||||
var dir = environment_config.wind_direction
|
var dir = environment_config.wind_direction
|
||||||
@@ -376,6 +490,7 @@ func _apply_cloud_config() -> void:
|
|||||||
|
|
||||||
func toggle_storm(value: bool):
|
func toggle_storm(value: bool):
|
||||||
is_storm = value
|
is_storm = value
|
||||||
|
_emit_weather_event_label()
|
||||||
|
|
||||||
#set lightning
|
#set lightning
|
||||||
func init_lightning():
|
func init_lightning():
|
||||||
@@ -489,6 +604,7 @@ func toggle_rain(value: bool):
|
|||||||
is_raining = value
|
is_raining = value
|
||||||
|
|
||||||
if not particles_rain:
|
if not particles_rain:
|
||||||
|
_emit_weather_event_label()
|
||||||
return
|
return
|
||||||
|
|
||||||
if is_raining and is_snowing:
|
if is_raining and is_snowing:
|
||||||
@@ -522,6 +638,7 @@ func toggle_rain(value: bool):
|
|||||||
trigger_after_rain())
|
trigger_after_rain())
|
||||||
puddle_tween = create_tween()
|
puddle_tween = create_tween()
|
||||||
puddle_tween.tween_method(set_puddle_amount, puddle_amount, 0.0, environment_config.puddle_dry_time)
|
puddle_tween.tween_method(set_puddle_amount, puddle_amount, 0.0, environment_config.puddle_dry_time)
|
||||||
|
_emit_weather_event_label()
|
||||||
|
|
||||||
func trigger_morning() -> void:
|
func trigger_morning() -> void:
|
||||||
spawn_single_godray()
|
spawn_single_godray()
|
||||||
@@ -620,6 +737,23 @@ func toggle_snow(value: bool):
|
|||||||
snow_tween.kill()
|
snow_tween.kill()
|
||||||
snow_tween = create_tween()
|
snow_tween = create_tween()
|
||||||
snow_tween.tween_method(init_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)
|
||||||
|
_emit_weather_event_label()
|
||||||
|
|
||||||
|
func _emit_weather_event_label() -> void:
|
||||||
|
var weather_label := "Weather: Clear"
|
||||||
|
if is_storm:
|
||||||
|
weather_label = "Weather: Storm"
|
||||||
|
else:
|
||||||
|
var active_events: Array[String] = []
|
||||||
|
if is_snowing:
|
||||||
|
active_events.append("Snow")
|
||||||
|
if is_raining:
|
||||||
|
active_events.append("Rain")
|
||||||
|
if is_windy:
|
||||||
|
active_events.append("Wind")
|
||||||
|
if not active_events.is_empty():
|
||||||
|
weather_label = "Weather: %s" % " + ".join(active_events)
|
||||||
|
UIEvents.weather_event_changed.emit(weather_label)
|
||||||
|
|
||||||
#disable snow and set default values and shader
|
#disable snow and set default values and shader
|
||||||
func init_snow(value: float = 0.0):
|
func init_snow(value: float = 0.0):
|
||||||
@@ -634,6 +768,13 @@ func init_snow(value: float = 0.0):
|
|||||||
RenderingServer.global_shader_parameter_set("global_snow_color", environment_config.snow_color)
|
RenderingServer.global_shader_parameter_set("global_snow_color", environment_config.snow_color)
|
||||||
RenderingServer.global_shader_parameter_set("global_snow_accumulation_speed", environment_config.snow_accumulation_speed)
|
RenderingServer.global_shader_parameter_set("global_snow_accumulation_speed", environment_config.snow_accumulation_speed)
|
||||||
RenderingServer.global_shader_parameter_set("global_snow_melt_speed", environment_config.snow_melt_speed)
|
RenderingServer.global_shader_parameter_set("global_snow_melt_speed", environment_config.snow_melt_speed)
|
||||||
|
RenderingServer.global_shader_parameter_set("global_snow_max_accumulation", environment_config.snow_max_accumulation)
|
||||||
|
RenderingServer.global_shader_parameter_set("global_snow_cap_enabled", 1.0 if environment_config.show_snow_accumulation_volume else 0.0)
|
||||||
|
RenderingServer.global_shader_parameter_set("global_snow_cap_height", environment_config.snow_cap_height)
|
||||||
|
RenderingServer.global_shader_parameter_set("global_snow_cap_flatness_start", environment_config.snow_cap_flatness_start)
|
||||||
|
RenderingServer.global_shader_parameter_set("global_snow_cap_flatness_end", environment_config.snow_cap_flatness_end)
|
||||||
|
RenderingServer.global_shader_parameter_set("global_snow_cap_noise_scale", environment_config.snow_cap_noise_scale)
|
||||||
|
RenderingServer.global_shader_parameter_set("global_snow_cap_noise_strength", environment_config.snow_cap_noise_strength)
|
||||||
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)
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,13 @@ global uniform float global_snow_melt_time = -1.0;
|
|||||||
global uniform float global_snow_melt_speed = 0.1;
|
global uniform float global_snow_melt_speed = 0.1;
|
||||||
global uniform float global_snow_threshold = 0.5;
|
global uniform float global_snow_threshold = 0.5;
|
||||||
global uniform vec4 global_snow_color = vec4(0.92, 0.96, 1.0, 1.0);
|
global uniform vec4 global_snow_color = vec4(0.92, 0.96, 1.0, 1.0);
|
||||||
|
global uniform float global_snow_max_accumulation = 0.72;
|
||||||
|
global uniform float global_snow_cap_enabled = 1.0;
|
||||||
|
global uniform float global_snow_cap_height = 0.06;
|
||||||
|
global uniform float global_snow_cap_flatness_start = 0.72;
|
||||||
|
global uniform float global_snow_cap_flatness_end = 0.96;
|
||||||
|
global uniform float global_snow_cap_noise_scale = 0.22;
|
||||||
|
global uniform float global_snow_cap_noise_strength = 0.18;
|
||||||
uniform float snow_noise_scale : hint_range(0.01, 1.0) = 0.15;
|
uniform float snow_noise_scale : hint_range(0.01, 1.0) = 0.15;
|
||||||
uniform float snow_edge_softness : hint_range(0.01, 0.5) = 0.2;
|
uniform float snow_edge_softness : hint_range(0.01, 0.5) = 0.2;
|
||||||
uniform float snow_roughness_variation : hint_range(0.0, 0.3) = 0.15;
|
uniform float snow_roughness_variation : hint_range(0.0, 0.3) = 0.15;
|
||||||
@@ -29,6 +36,52 @@ uniform float puddle_threshold : hint_range(0.0, 0.8) = 0.45;
|
|||||||
|
|
||||||
uniform sampler2D noise_texture : filter_linear_mipmap, repeat_enable;
|
uniform sampler2D noise_texture : filter_linear_mipmap, repeat_enable;
|
||||||
|
|
||||||
|
varying float v_snow_amount;
|
||||||
|
varying float v_snow_cap_mask;
|
||||||
|
|
||||||
|
float hash(vec2 p) {
|
||||||
|
return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123);
|
||||||
|
}
|
||||||
|
|
||||||
|
float value_noise(vec2 p) {
|
||||||
|
vec2 i = floor(p);
|
||||||
|
vec2 f = fract(p);
|
||||||
|
vec2 u = f * f * (3.0 - 2.0 * f);
|
||||||
|
|
||||||
|
float a = hash(i);
|
||||||
|
float b = hash(i + vec2(1.0, 0.0));
|
||||||
|
float c = hash(i + vec2(0.0, 1.0));
|
||||||
|
float d = hash(i + vec2(1.0, 1.0));
|
||||||
|
|
||||||
|
return mix(mix(a, b, u.x), mix(c, d, u.x), u.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
float fbm(vec2 p) {
|
||||||
|
float value = 0.0;
|
||||||
|
float amplitude = 0.5;
|
||||||
|
float frequency = 1.0;
|
||||||
|
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
value += value_noise(p * frequency) * amplitude;
|
||||||
|
frequency *= 2.0;
|
||||||
|
amplitude *= 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
return clamp(value, 0.0, 1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
float get_snow_amount() {
|
||||||
|
float snow_amount = 0.0;
|
||||||
|
if (global_snow_start_time >= 0.0) {
|
||||||
|
snow_amount = clamp((TIME - global_snow_start_time) * global_snow_accumulation_speed, 0.0, 1.0);
|
||||||
|
}
|
||||||
|
if (global_snow_melt_time >= 0.0) {
|
||||||
|
float melt = clamp((TIME - global_snow_melt_time) * global_snow_melt_speed, 0.0, 1.0);
|
||||||
|
snow_amount *= (1.0 - melt);
|
||||||
|
}
|
||||||
|
return snow_amount * global_snow_max_accumulation;
|
||||||
|
}
|
||||||
|
|
||||||
float ripple_ring(vec2 uv, float time_offset) {
|
float ripple_ring(vec2 uv, float time_offset) {
|
||||||
float d = length(uv);
|
float d = length(uv);
|
||||||
float ring = sin(d * 30.0 - TIME * ripple_speed + time_offset) * 0.5 + 0.5;
|
float ring = sin(d * 30.0 - TIME * ripple_speed + time_offset) * 0.5 + 0.5;
|
||||||
@@ -36,6 +89,27 @@ float ripple_ring(vec2 uv, float time_offset) {
|
|||||||
return ring * fade;
|
return ring * fade;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vertex() {
|
||||||
|
float snow_amount = get_snow_amount();
|
||||||
|
vec3 world_pos = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz;
|
||||||
|
vec3 world_normal = normalize((MODEL_MATRIX * vec4(NORMAL, 0.0)).xyz);
|
||||||
|
float snow_cap_enabled = step(0.5, global_snow_cap_enabled);
|
||||||
|
|
||||||
|
float flat_surface = smoothstep(
|
||||||
|
max(global_snow_threshold, global_snow_cap_flatness_start),
|
||||||
|
global_snow_cap_flatness_end,
|
||||||
|
world_normal.y
|
||||||
|
);
|
||||||
|
float accumulation_growth = smoothstep(0.08, 0.65, snow_amount);
|
||||||
|
float cap_noise = fbm(world_pos.xz * global_snow_cap_noise_scale + vec2(11.3, 4.7));
|
||||||
|
float cap_variation = mix(1.0 - global_snow_cap_noise_strength, 1.0 + global_snow_cap_noise_strength, cap_noise);
|
||||||
|
|
||||||
|
v_snow_amount = snow_amount;
|
||||||
|
v_snow_cap_mask = flat_surface * accumulation_growth * cap_variation * snow_cap_enabled;
|
||||||
|
|
||||||
|
VERTEX += NORMAL * (global_snow_cap_height * snow_amount * v_snow_cap_mask);
|
||||||
|
}
|
||||||
|
|
||||||
void fragment() {
|
void fragment() {
|
||||||
vec3 world_pos = (INV_VIEW_MATRIX * vec4(VERTEX, 1.0)).xyz;
|
vec3 world_pos = (INV_VIEW_MATRIX * vec4(VERTEX, 1.0)).xyz;
|
||||||
vec3 world_normal = normalize((INV_VIEW_MATRIX * vec4(NORMAL, 0.0)).xyz);
|
vec3 world_normal = normalize((INV_VIEW_MATRIX * vec4(NORMAL, 0.0)).xyz);
|
||||||
@@ -43,25 +117,22 @@ void fragment() {
|
|||||||
float noise_val = texture(noise_texture, world_pos.xz * snow_noise_scale).r;
|
float noise_val = texture(noise_texture, world_pos.xz * snow_noise_scale).r;
|
||||||
|
|
||||||
//Snow
|
//Snow
|
||||||
float snow_amount = 0.0;
|
float snow_amount = v_snow_amount;
|
||||||
if (global_snow_start_time >= 0.0) {
|
|
||||||
snow_amount = clamp((TIME - global_snow_start_time) * global_snow_accumulation_speed, 0.0, 1.0);
|
|
||||||
}
|
|
||||||
if (global_snow_melt_time >= 0.0) {
|
|
||||||
float melt = clamp((TIME - global_snow_melt_time) * global_snow_melt_speed, 0.0, 1.0);
|
|
||||||
snow_amount *= (1.0 - melt);
|
|
||||||
}
|
|
||||||
|
|
||||||
float snow_edge = smoothstep(
|
float snow_edge = smoothstep(
|
||||||
global_snow_threshold - snow_edge_softness,
|
global_snow_threshold - snow_edge_softness,
|
||||||
global_snow_threshold + snow_edge_softness,
|
global_snow_threshold + snow_edge_softness,
|
||||||
facing_up + (noise_val - 0.5) * 0.4
|
facing_up + (noise_val - 0.5) * 0.4
|
||||||
);
|
);
|
||||||
float snow_coverage = smoothstep(0.0, 0.6, noise_val + snow_amount - 0.4);
|
float flat_accumulation = smoothstep(0.0, 0.35, v_snow_cap_mask) * snow_amount;
|
||||||
float snow_factor = snow_edge * snow_coverage * snow_amount;
|
float snow_coverage = smoothstep(0.0, 0.6, noise_val + snow_amount - 0.4 + flat_accumulation * 0.25);
|
||||||
|
float snow_factor = max(snow_edge * snow_coverage * snow_amount, flat_accumulation);
|
||||||
|
float snow_opacity = smoothstep(0.04, 0.28, snow_factor);
|
||||||
|
snow_opacity = max(snow_opacity, flat_accumulation * 0.9);
|
||||||
|
|
||||||
float shade = mix(-snow_color_variation, snow_color_variation, noise_val);
|
float shade = mix(-snow_color_variation, snow_color_variation, noise_val);
|
||||||
vec3 snow_albedo = clamp(global_snow_color.rgb + vec3(shade), 0.0, 1.0);
|
vec3 snow_albedo = clamp(global_snow_color.rgb + vec3(shade), 0.0, 1.0);
|
||||||
|
snow_albedo = mix(snow_albedo, vec3(1.0), 0.18 + snow_opacity * 0.12);
|
||||||
float snow_rough = mix(0.15 - snow_roughness_variation, 0.15 + snow_roughness_variation, noise_val);
|
float snow_rough = mix(0.15 - snow_roughness_variation, 0.15 + snow_roughness_variation, noise_val);
|
||||||
|
|
||||||
//Rain
|
//Rain
|
||||||
@@ -173,7 +244,7 @@ void fragment() {
|
|||||||
ALBEDO = snow_albedo;
|
ALBEDO = snow_albedo;
|
||||||
ROUGHNESS = snow_rough;
|
ROUGHNESS = snow_rough;
|
||||||
METALLIC = 0.0;
|
METALLIC = 0.0;
|
||||||
ALPHA = snow_factor;
|
ALPHA = snow_opacity;
|
||||||
} else {
|
} else {
|
||||||
ALBEDO = rain_albedo;
|
ALBEDO = rain_albedo;
|
||||||
ROUGHNESS = rain_rough;
|
ROUGHNESS = rain_rough;
|
||||||
|
|||||||
@@ -7,16 +7,13 @@ global uniform float global_snow_accumulation_speed;
|
|||||||
global uniform float global_snow_melt_time;
|
global uniform float global_snow_melt_time;
|
||||||
global uniform float global_snow_melt_speed;
|
global uniform float global_snow_melt_speed;
|
||||||
global uniform vec4 global_snow_color;
|
global uniform vec4 global_snow_color;
|
||||||
|
|
||||||
// Rain globals
|
|
||||||
global uniform float global_rain_intensity;
|
|
||||||
global uniform float global_rain_puddle_amount;
|
|
||||||
|
|
||||||
// Snow parameters
|
|
||||||
uniform float snow_edge_softness : hint_range(0.01, 0.5) = 0.15;
|
uniform float snow_edge_softness : hint_range(0.01, 0.5) = 0.15;
|
||||||
uniform float snow_color_variation : hint_range(0.0, 0.15) = 0.05;
|
uniform float snow_color_variation : hint_range(0.0, 0.15) = 0.05;
|
||||||
|
|
||||||
|
|
||||||
// Rain wetness parameters
|
// Rain wetness parameters
|
||||||
|
global uniform float global_rain_intensity;
|
||||||
|
global uniform float global_rain_puddle_amount;
|
||||||
uniform float ripple_scale : hint_range(0.1, 5.0) = 1.5;
|
uniform float ripple_scale : hint_range(0.1, 5.0) = 1.5;
|
||||||
uniform float ripple_speed : hint_range(0.5, 5.0) = 2.0;
|
uniform float ripple_speed : hint_range(0.5, 5.0) = 2.0;
|
||||||
uniform float ripple_layers : hint_range(1.0, 4.0) = 3.0;
|
uniform float ripple_layers : hint_range(1.0, 4.0) = 3.0;
|
||||||
|
|||||||
@@ -1,31 +1,26 @@
|
|||||||
shader_type spatial;
|
shader_type spatial;
|
||||||
render_mode unshaded;
|
render_mode unshaded;
|
||||||
|
|
||||||
global uniform float global_wind_speed = 1.0; //0.0 = calm, 1.0 = normal, 2.0+ = strong
|
// --- PARAMETRI ---
|
||||||
global uniform vec2 global_wind_direction = vec2(1.0, 0.0);
|
uniform float time_scale = 3.0;
|
||||||
|
uniform float wave_amplitude = 0.5; // Quanto curva a destra/sinistra
|
||||||
uniform float wave_frequency = 1.0;
|
uniform float wave_frequency = 1.0; // Ogni quanto fa la curva
|
||||||
uniform float base_amplitude = 0.5;
|
|
||||||
uniform float secondary_ratio = 0.6;
|
|
||||||
uniform float time_scale_base = 3.0;
|
|
||||||
|
|
||||||
void vertex() {
|
void vertex() {
|
||||||
|
// Creiamo un offset unico per ogni particella in modo che non si muovano tutte uguali
|
||||||
float random_seed_offset = INSTANCE_CUSTOM.x * 100.0;
|
float random_seed_offset = INSTANCE_CUSTOM.x * 100.0;
|
||||||
float scaled_time = (TIME + random_seed_offset) * (time_scale_base * global_wind_speed);
|
float scaled_time = (TIME + random_seed_offset) * time_scale;
|
||||||
float amplitude = base_amplitude * global_wind_speed;
|
|
||||||
|
|
||||||
vec2 wind_dir = normalize(global_wind_direction);
|
// Applichiamo SOLO la curva morbida all'asse X (o Z, a seconda di come orienti la scena)
|
||||||
vec2 wind_perp = vec2(-wind_dir.y, wind_dir.x); //90° perpendicular
|
// Usiamo VERTEX.y per far sì che la curva si propaghi lungo tutta la lunghezza della scia
|
||||||
|
VERTEX.x += sin(VERTEX.y * wave_frequency + scaled_time) * wave_amplitude;
|
||||||
|
|
||||||
float primary_sway = sin(VERTEX.y * wave_frequency + scaled_time) * amplitude;
|
// Niente più "VERTEX.y += t;", quindi niente più teletrasporti!
|
||||||
float secondary_sway = sin(VERTEX.y * wave_frequency * 1.3 + scaled_time * 0.7 + 1.57)
|
|
||||||
* (amplitude * secondary_ratio);
|
|
||||||
|
|
||||||
VERTEX.x += primary_sway * wind_dir.x + secondary_sway * wind_perp.x;
|
|
||||||
VERTEX.z += primary_sway * wind_dir.y + secondary_sway * wind_perp.y;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void fragment() {
|
void fragment() {
|
||||||
|
// Il colore e l'alpha (per lo spawn dolce e la morte lenta)
|
||||||
|
// vengono comandati dalla Color Ramp del GPUParticles3D!
|
||||||
ALBEDO = COLOR.rgb;
|
ALBEDO = COLOR.rgb;
|
||||||
ALPHA = COLOR.a;
|
ALPHA = COLOR.a;
|
||||||
}
|
}
|
||||||
@@ -100,7 +100,7 @@ extends Resource
|
|||||||
|
|
||||||
#Rain weather settings
|
#Rain weather settings
|
||||||
@export_group("Rain")
|
@export_group("Rain")
|
||||||
@export var rain_mode_color: Color = Color(0.5, 0.6, 0.7, 1.0) #Sky/light darkening color during rain
|
@export var rain_mode_color: Color = Color(0.85, 0.89, 0.93, 1.0) #Sky/light darkening color during rain
|
||||||
@export var rain_fade_time: float = 5.0 #Seconds for rain particles to fade in/out
|
@export var rain_fade_time: float = 5.0 #Seconds for rain particles to fade in/out
|
||||||
@export var rain_audio_volume_db: float = -10.0 #Target rain loop volume in decibels
|
@export var rain_audio_volume_db: float = -10.0 #Target rain loop volume in decibels
|
||||||
@export var puddle_form_time: float = 15.0 #Seconds for puddles to fully form
|
@export var puddle_form_time: float = 15.0 #Seconds for puddles to fully form
|
||||||
@@ -109,7 +109,7 @@ extends Resource
|
|||||||
#Storm settings (applied on top of rain when storm is active)
|
#Storm settings (applied on top of rain when storm is active)
|
||||||
@export_group("Storm")
|
@export_group("Storm")
|
||||||
@export var storm_rain_intensity_multiplier: float = 1.5 #Rain intensity target during storm (1.0 = normal rain)
|
@export var storm_rain_intensity_multiplier: float = 1.5 #Rain intensity target during storm (1.0 = normal rain)
|
||||||
@export var storm_mode_color: Color = Color(0.476, 0.531, 0.639, 1.0) #Additional sky darkening color during storm
|
@export var storm_mode_color: Color = Color(0.78, 0.83, 0.89, 1.0) #Additional sky darkening color during storm
|
||||||
|
|
||||||
#Lightning and thunder configuration
|
#Lightning and thunder configuration
|
||||||
@export_group("Lightning and Thunders")
|
@export_group("Lightning and Thunders")
|
||||||
@@ -133,15 +133,27 @@ extends Resource
|
|||||||
@export var godray_spawn_height: float = 5.0 #Y world position where god rays spawn
|
@export var godray_spawn_height: float = 5.0 #Y world position where god rays spawn
|
||||||
@export var godray_scale: Vector3 = Vector3(2.0, 6.0, 2.0) #Scale of the god ray mesh
|
@export var godray_scale: Vector3 = Vector3(2.0, 6.0, 2.0) #Scale of the god ray mesh
|
||||||
|
|
||||||
|
#Train start settings
|
||||||
|
@export_group("Train Start")
|
||||||
|
@export var train_start_from_random_position: bool = false #When enabled the train starts from a random offset on the rail curve instead of a stop
|
||||||
|
@export_range(0, 64, 1, "or_greater") var train_start_stop_index: int = 1 #Stop index used for the train start when random start is disabled
|
||||||
|
|
||||||
#Snow settings
|
#Snow settings
|
||||||
@export_group("Snow")
|
@export_group("Snow")
|
||||||
@export var snow_amount: float = 0.0 #Initial snow coverage amount (0.0 = none, 1.0 = full)
|
@export var snow_amount: float = 0.0 #Initial snow coverage amount (0.0 = none, 1.0 = full)
|
||||||
@export var snow_transaction_time: float = 10.0 #Seconds for snow shader to fully transition in/out
|
@export var snow_transaction_time: float = 10.0 #Seconds for snow shader to fully transition in/out
|
||||||
@export var snow_fade_time: float = 5.0 #Seconds for snow particles to fade in/out
|
@export var snow_fade_time: float = 5.0 #Seconds for snow particles to fade in/out
|
||||||
@export var snow_threshold: float = 0.4 #Normal Y threshold for snow accumulation on surfaces
|
@export var snow_threshold: float = 0.4 #Normal Y threshold for snow accumulation on surfaces
|
||||||
@export var snow_accumulation_speed: float = 0.02 #Accumulation speed: 0.1 -> 10s, 0.05 -> 20s, 0.02 -> 50s, 0.2 -> 5s
|
@export var snow_accumulation_speed: float = 0.014 #Accumulation speed: 0.1 -> 10s, 0.05 -> 20s, 0.02 -> 50s, 0.012 -> ~83s
|
||||||
@export var snow_melt_speed: float = 0.05 #Speed at which accumulated snow melts away
|
@export var snow_melt_speed: float = 0.05 #Speed at which accumulated snow melts away
|
||||||
|
@export var show_snow_accumulation_volume: bool = true #Enables vertex snow buildup; when false snow only changes surface color
|
||||||
|
@export var snow_max_accumulation: float = 0.25 #Maximum accumulated snow factor applied to coverage and thickness
|
||||||
@export var snow_color: Color = Color(0.9, 0.95, 1.0) #Albedo color of snow on surfaces
|
@export var snow_color: Color = Color(0.9, 0.95, 1.0) #Albedo color of snow on surfaces
|
||||||
|
@export var snow_cap_height: float = 0.03 #Maximum snow thickness extruded on flat surfaces
|
||||||
|
@export var snow_cap_flatness_start: float = 0.85 #Surface normal Y where cap buildup starts
|
||||||
|
@export var snow_cap_flatness_end: float = 0.96 #Surface normal Y where cap buildup reaches full effect
|
||||||
|
@export var snow_cap_noise_scale: float = 0.22 #Noise scale used to vary the snow cap silhouette
|
||||||
|
@export var snow_cap_noise_strength: float = 0.12 #How much the cap noise changes the accumulated thickness
|
||||||
@export var snow_mode_color: Color = Color(0.556, 0.62, 0.683, 1.0) #Sky/light darkening color during snow
|
@export var snow_mode_color: Color = Color(0.556, 0.62, 0.683, 1.0) #Sky/light darkening color during snow
|
||||||
|
|
||||||
#Wind settings
|
#Wind settings
|
||||||
@@ -152,11 +164,12 @@ extends Resource
|
|||||||
@export var wind_direction: Vector2 = Vector2(0.5, 0.4) #Global wind direction (XZ)
|
@export var wind_direction: Vector2 = Vector2(0.5, 0.4) #Global wind direction (XZ)
|
||||||
@export var wind_speed: float = 0.2 #Global wind animation speed
|
@export var wind_speed: float = 0.2 #Global wind animation speed
|
||||||
@export var wind_scale: float = 0.025 #Global wind noise scale
|
@export var wind_scale: float = 0.025 #Global wind noise scale
|
||||||
@export var wind_strength: float = 0.6 #Global wind displacement strength
|
@export var wind_strength: float = 0.3 #Global wind displacement strength
|
||||||
@export var cloud_scale: float = 0.5 #Cloud noise scale in sky shader
|
@export var cloud_scale: float = 0.5 #Cloud noise scale in sky shader
|
||||||
@export var cloud_speed: float = 0.05 #Cloud movement speed in sky shader
|
@export var cloud_speed: float = 0.05 #Cloud movement speed in sky shader
|
||||||
@export_range(0.01, 1.0) var cloud_scale_envshadows_rate: float = 0.01 #Cloud scale multiplier for environment shadows
|
@export_range(0.01, 1.0) var cloud_scale_envshadows_rate: float = 0.01 #Cloud scale multiplier for environment shadows
|
||||||
@export_range(0.01, 1.0) var cloud_speed_envshadows_rate: float = 0.5 #Cloud speed multiplier for environment shadows
|
@export_range(0.01, 1.0) var cloud_speed_envshadows_rate: float = 0.5 #Cloud speed multiplier for environment shadows
|
||||||
|
@export var wind_fade_in_out_time: float = 1.2 #fade out to time when wind is turned off or when is turned on
|
||||||
|
|
||||||
#Firefly settings (visible only at night)
|
#Firefly settings (visible only at night)
|
||||||
@export_group("Fireflies")
|
@export_group("Fireflies")
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ func set_particles_node_color(node: GPUParticles3D, new_color: Color) -> void:
|
|||||||
unique_mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
|
unique_mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
|
||||||
mesh.material = unique_mat
|
mesh.material = unique_mat
|
||||||
|
|
||||||
func turnon() -> void:
|
func turn_on() -> void:
|
||||||
if rocket:
|
if rocket:
|
||||||
rocket.emitting = true
|
rocket.emitting = true
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,12 @@ signal toggle_snow(value: bool)
|
|||||||
@warning_ignore("unused_signal")
|
@warning_ignore("unused_signal")
|
||||||
signal toggle_wind(value: bool)
|
signal toggle_wind(value: bool)
|
||||||
@warning_ignore("unused_signal")
|
@warning_ignore("unused_signal")
|
||||||
|
signal wind_change(value: float)
|
||||||
|
@warning_ignore("unused_signal")
|
||||||
|
signal trigger_random_weather(duration: float)
|
||||||
|
@warning_ignore("unused_signal")
|
||||||
|
signal weather_event_changed(description: String)
|
||||||
|
@warning_ignore("unused_signal")
|
||||||
signal toggle_fireflies(value: bool)
|
signal toggle_fireflies(value: bool)
|
||||||
@warning_ignore("unused_signal")
|
@warning_ignore("unused_signal")
|
||||||
signal toggle_storm(value: bool)
|
signal toggle_storm(value: bool)
|
||||||
@@ -27,3 +33,7 @@ signal toggle_shadows(value: bool)
|
|||||||
signal toggle_pause_daytime(value: bool)
|
signal toggle_pause_daytime(value: bool)
|
||||||
@warning_ignore("unused_signal")
|
@warning_ignore("unused_signal")
|
||||||
signal day_time_changed(value: float, time_string: String)
|
signal day_time_changed(value: float, time_string: String)
|
||||||
|
@warning_ignore("unused_signal")
|
||||||
|
signal time_option_item_changed(index: int)
|
||||||
|
@warning_ignore("unused_signal")
|
||||||
|
signal day_time_option_changed(index: int)
|
||||||
|
|||||||
@@ -7,15 +7,14 @@
|
|||||||
[ext_resource type="PackedScene" uid="uid://ujv2f1l4d2ps" path="res://core/biome_generator/biome_generator.tscn" id="4_yrmqs"]
|
[ext_resource type="PackedScene" uid="uid://ujv2f1l4d2ps" path="res://core/biome_generator/biome_generator.tscn" id="4_yrmqs"]
|
||||||
[ext_resource type="Script" uid="uid://wv6kcqkibium" path="res://core/biome_generator/biome.gd" id="5_2wjys"]
|
[ext_resource type="Script" uid="uid://wv6kcqkibium" path="res://core/biome_generator/biome.gd" id="5_2wjys"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cv5xmnow451kl" path="res://core/camera.tscn" id="5_8tojn"]
|
[ext_resource type="PackedScene" uid="uid://cv5xmnow451kl" path="res://core/camera.tscn" id="5_8tojn"]
|
||||||
[ext_resource type="PackedScene" uid="uid://botm0dqtr5whb" path="res://docs/museums/daynight/scenes/chunk_c_e_1/chunk_c_e_1.tscn" id="6_21usy"]
|
[ext_resource type="PackedScene" uid="uid://crlk31ecl480n" path="res://tgcc/chunk/countryside/scene/chunk_country_corner_03.tscn" id="6_21usy"]
|
||||||
[ext_resource type="Script" uid="uid://dboerd4a6dwj7" path="res://docs/museums/biome_generator/rails.gd" id="6_pypsn"]
|
[ext_resource type="Script" uid="uid://dboerd4a6dwj7" path="res://core/biome_generator/rails.gd" id="6_pypsn"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dvk3bytqn3m5s" path="res://tgcc/train/main_train.tscn" id="6_wjpfq"]
|
[ext_resource type="PackedScene" uid="uid://dvk3bytqn3m5s" path="res://tgcc/train/main_train.tscn" id="6_wjpfq"]
|
||||||
[ext_resource type="PackedScene" uid="uid://givg3dyrxsk5" path="res://docs/museums/daynight/scenes/chunk_c_f_1/chunk_c_f_1.tscn" id="7_qe84w"]
|
[ext_resource type="PackedScene" uid="uid://brpp7fe5noq8v" path="res://tgcc/chunk/countryside/scene/chunk_country_cross_3_01.tscn" id="7_qe84w"]
|
||||||
[ext_resource type="PackedScene" uid="uid://0kgjaqijaqku" path="res://docs/museums/biome_generator/rails.tscn" id="8_mb5yv"]
|
[ext_resource type="PackedScene" uid="uid://0kgjaqijaqku" path="res://docs/museums/biome_generator/rails.tscn" id="8_mb5yv"]
|
||||||
[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://cu2chsjh8wuvp" path="res://tgcc/chunk/countryside/scene/chunk_country_straight_02.tscn" id="9_sw7bt"]
|
||||||
[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://c73yk6858dmwn" path="res://tgcc/chunk/countryside/scene/chunk_country_cross_4_01.tscn" id="10_c7mkj"]
|
||||||
[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"]
|
||||||
@@ -102,13 +101,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"), ExtResource("9_sw7bt")])
|
available_chunks = Array[PackedScene]([ExtResource("6_21usy"), ExtResource("7_qe84w"), ExtResource("9_sw7bt"), ExtResource("10_c7mkj")])
|
||||||
metadata/_custom_type_script = "uid://wv6kcqkibium"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_2qks6"]
|
|
||||||
script = ExtResource("5_2wjys")
|
|
||||||
name = "Forest"
|
|
||||||
available_chunks = Array[PackedScene]([ExtResource("8_qe84w"), ExtResource("9_3qrd0")])
|
|
||||||
metadata/_custom_type_script = "uid://wv6kcqkibium"
|
metadata/_custom_type_script = "uid://wv6kcqkibium"
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pypsn"]
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pypsn"]
|
||||||
@@ -140,9 +133,10 @@ compositor = SubResource("Compositor_mb5yv")
|
|||||||
|
|
||||||
[node name="biome_generator" parent="." unique_id=1861369341 node_paths=PackedStringArray("rail_path") instance=ExtResource("4_yrmqs")]
|
[node name="biome_generator" parent="." unique_id=1861369341 node_paths=PackedStringArray("rail_path") instance=ExtResource("4_yrmqs")]
|
||||||
rail_path = NodePath("../rails")
|
rail_path = NodePath("../rails")
|
||||||
biome_list = Array[ExtResource("5_2wjys")]([SubResource("Resource_3qrd0"), SubResource("Resource_2qks6")])
|
biome_list = Array[ExtResource("5_2wjys")]([SubResource("Resource_3qrd0")])
|
||||||
|
|
||||||
[node name="Terrain" type="MeshInstance3D" parent="." unique_id=219178561]
|
[node name="Terrain" type="MeshInstance3D" parent="." unique_id=219178561]
|
||||||
|
visible = false
|
||||||
material_override = SubResource("StandardMaterial3D_pypsn")
|
material_override = SubResource("StandardMaterial3D_pypsn")
|
||||||
mesh = SubResource("BoxMesh_xtogr")
|
mesh = SubResource("BoxMesh_xtogr")
|
||||||
|
|
||||||
@@ -185,10 +179,10 @@ script = ExtResource("23_27ile")
|
|||||||
|
|
||||||
[node name="Snow" type="CheckButton" parent="Control" unique_id=454394427]
|
[node name="Snow" type="CheckButton" parent="Control" unique_id=454394427]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 21.0
|
offset_left = 8.0
|
||||||
offset_top = 13.0
|
offset_top = 173.0
|
||||||
offset_right = 109.0
|
offset_right = 98.0
|
||||||
offset_bottom = 44.0
|
offset_bottom = 204.0
|
||||||
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
||||||
@@ -199,10 +193,10 @@ text = "Snow"
|
|||||||
|
|
||||||
[node name="Rain" type="CheckButton" parent="Control" unique_id=837805524]
|
[node name="Rain" type="CheckButton" parent="Control" unique_id=837805524]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 21.0
|
offset_left = 8.0
|
||||||
offset_top = 41.0
|
offset_top = 201.0
|
||||||
offset_right = 109.0
|
offset_right = 96.0
|
||||||
offset_bottom = 72.0
|
offset_bottom = 232.0
|
||||||
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
||||||
@@ -213,10 +207,10 @@ text = "Rain"
|
|||||||
|
|
||||||
[node name="Wind" type="CheckButton" parent="Control" unique_id=1013004982]
|
[node name="Wind" type="CheckButton" parent="Control" unique_id=1013004982]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 21.0
|
offset_left = 8.0
|
||||||
offset_top = 91.0
|
offset_top = 231.0
|
||||||
offset_right = 109.0
|
offset_right = 96.0
|
||||||
offset_bottom = 122.0
|
offset_bottom = 262.0
|
||||||
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
||||||
@@ -225,12 +219,21 @@ theme_override_colors/font_hover_pressed_color = Color(1, 1, 1, 1)
|
|||||||
theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
|
||||||
text = "Wind"
|
text = "Wind"
|
||||||
|
|
||||||
|
[node name="WindSlider" type="HSlider" parent="Control" unique_id=28050098]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 103.0
|
||||||
|
offset_top = 238.0
|
||||||
|
offset_right = 187.0
|
||||||
|
offset_bottom = 254.0
|
||||||
|
max_value = 1.0
|
||||||
|
step = 0.01
|
||||||
|
|
||||||
[node name="Fireflies" type="CheckButton" parent="Control" unique_id=1046228444]
|
[node name="Fireflies" type="CheckButton" parent="Control" unique_id=1046228444]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 21.0
|
offset_left = 8.0
|
||||||
offset_top = 115.0
|
offset_top = 259.0
|
||||||
offset_right = 130.0
|
offset_right = 117.0
|
||||||
offset_bottom = 146.0
|
offset_bottom = 290.0
|
||||||
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
||||||
@@ -241,10 +244,10 @@ text = "Fireflies"
|
|||||||
|
|
||||||
[node name="Storm" type="CheckButton" parent="Control" unique_id=1792625744]
|
[node name="Storm" type="CheckButton" parent="Control" unique_id=1792625744]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 21.0
|
offset_left = 98.0
|
||||||
offset_top = 66.0
|
offset_top = 201.0
|
||||||
offset_right = 117.0
|
offset_right = 194.0
|
||||||
offset_bottom = 97.0
|
offset_bottom = 232.0
|
||||||
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
||||||
@@ -255,73 +258,88 @@ text = "Storm"
|
|||||||
|
|
||||||
[node name="DayTimeLabel" type="Label" parent="Control" unique_id=1124935856]
|
[node name="DayTimeLabel" type="Label" parent="Control" unique_id=1124935856]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 26.0
|
offset_left = 13.0
|
||||||
offset_top = 150.0
|
offset_top = 15.0
|
||||||
offset_right = 360.0
|
offset_right = 347.0
|
||||||
offset_bottom = 173.0
|
offset_bottom = 38.0
|
||||||
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
|
||||||
text = "Time 00:00"
|
text = "Time 00:00"
|
||||||
|
|
||||||
[node name="DayTimeSlider" type="HSlider" parent="Control" unique_id=1865778345]
|
[node name="DayTimeSlider" type="HSlider" parent="Control" unique_id=1865778345]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 26.0
|
offset_left = 13.0
|
||||||
offset_top = 174.0
|
offset_top = 40.0
|
||||||
offset_right = 205.0
|
offset_right = 138.0
|
||||||
offset_bottom = 190.0
|
offset_bottom = 56.0
|
||||||
max_value = 1.0
|
max_value = 1.0
|
||||||
step = 0.01
|
step = 0.01
|
||||||
|
|
||||||
|
[node name="DayTimeOptions" type="OptionButton" parent="Control" unique_id=928646468]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 13.0
|
||||||
|
offset_top = 59.0
|
||||||
|
offset_right = 124.0
|
||||||
|
offset_bottom = 90.0
|
||||||
|
selected = 1
|
||||||
|
item_count = 4
|
||||||
|
popup/item_0/text = "Sunrise"
|
||||||
|
popup/item_0/id = 1
|
||||||
|
popup/item_1/text = "Day"
|
||||||
|
popup/item_1/id = 2
|
||||||
|
popup/item_2/text = "Sunset"
|
||||||
|
popup/item_2/id = 3
|
||||||
|
popup/item_3/text = "Night"
|
||||||
|
popup/item_3/id = 4
|
||||||
|
|
||||||
[node name="Dust" type="CheckButton" parent="Control" unique_id=760281365]
|
[node name="Dust" type="CheckButton" parent="Control" unique_id=760281365]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 21.0
|
offset_left = 8.0
|
||||||
offset_top = 250.0
|
offset_top = 91.0
|
||||||
offset_right = 150.0
|
offset_right = 137.0
|
||||||
offset_bottom = 281.0
|
offset_bottom = 122.0
|
||||||
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_hover_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_hover_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_hover_pressed_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_hover_pressed_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
|
||||||
button_pressed = true
|
|
||||||
text = "Dust"
|
text = "Dust"
|
||||||
|
|
||||||
[node name="Blur" type="CheckButton" parent="Control" unique_id=1083708100]
|
[node name="Blur" type="CheckButton" parent="Control" unique_id=1083708100]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 21.0
|
offset_left = 8.0
|
||||||
offset_top = 278.0
|
offset_top = 118.0
|
||||||
offset_right = 150.0
|
offset_right = 137.0
|
||||||
offset_bottom = 309.0
|
offset_bottom = 149.0
|
||||||
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_hover_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_hover_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_hover_pressed_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_hover_pressed_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
|
||||||
button_pressed = true
|
|
||||||
text = "Blur"
|
text = "Blur"
|
||||||
|
|
||||||
[node name="Pause" type="CheckButton" parent="Control" unique_id=1587043871]
|
[node name="Pause" type="CheckButton" parent="Control" unique_id=1587043871]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 21.0
|
offset_left = 143.0
|
||||||
offset_top = 189.0
|
offset_top = 31.0
|
||||||
offset_right = 158.0
|
offset_right = 238.0
|
||||||
offset_bottom = 220.0
|
offset_bottom = 62.0
|
||||||
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_hover_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_hover_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_hover_pressed_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_hover_pressed_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
|
||||||
text = "Pause Time"
|
text = "Pause"
|
||||||
|
|
||||||
[node name="Shadows" type="CheckButton" parent="Control" unique_id=283354318]
|
[node name="Shadows" type="CheckButton" parent="Control" unique_id=283354318]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 21.0
|
offset_left = 8.0
|
||||||
offset_top = 302.0
|
offset_top = 145.0
|
||||||
offset_right = 150.0
|
offset_right = 137.0
|
||||||
offset_bottom = 333.0
|
offset_bottom = 176.0
|
||||||
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
||||||
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
||||||
@@ -331,26 +349,40 @@ 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="RandomWeather" type="Button" parent="Control" unique_id=1047710802]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 26.0
|
offset_left = 12.0
|
||||||
offset_top = 347.0
|
offset_top = 289.0
|
||||||
offset_right = 236.0
|
offset_right = 157.0
|
||||||
offset_bottom = 474.0
|
offset_bottom = 320.0
|
||||||
text = "R-> Reset isometric camera
|
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||||
C-> Toggle cinematic mode
|
theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
|
||||||
Z-> soft zoom
|
theme_override_colors/font_pressed_color = Color(1, 1, 1, 1)
|
||||||
Manual controls (1-5)
|
theme_override_colors/font_hover_color = Color(1, 1, 1, 1)
|
||||||
T -> go to next stop
|
theme_override_colors/font_hover_pressed_color = Color(1, 1, 1, 1)
|
||||||
F -> fireworks"
|
theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
|
||||||
|
text = "Random Weather (10\")"
|
||||||
|
|
||||||
|
[node name="WeatherEventLabel" type="Label" parent="Control" unique_id=641424797]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 1656.0
|
||||||
|
offset_top = 11.0
|
||||||
|
offset_right = 1908.0
|
||||||
|
offset_bottom = 34.0
|
||||||
|
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||||
|
theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
|
||||||
|
text = "Weather: Clear"
|
||||||
|
|
||||||
[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"]
|
||||||
[connection signal="toggled" from="Control/Wind" to="Control" method="_on_wind_toggled"]
|
[connection signal="toggled" from="Control/Wind" to="Control" method="_on_wind_toggled"]
|
||||||
|
[connection signal="value_changed" from="Control/WindSlider" to="Control" method="_on_wind_slider_value_changed"]
|
||||||
[connection signal="toggled" from="Control/Fireflies" to="Control" method="_on_fireflies_toggled"]
|
[connection signal="toggled" from="Control/Fireflies" to="Control" method="_on_fireflies_toggled"]
|
||||||
[connection signal="toggled" from="Control/Storm" to="Control" method="_on_storm_toggled"]
|
[connection signal="toggled" from="Control/Storm" to="Control" method="_on_storm_toggled"]
|
||||||
[connection signal="value_changed" from="Control/DayTimeSlider" to="Control" method="_on_day_time_slider_value_changed"]
|
[connection signal="value_changed" from="Control/DayTimeSlider" to="Control" method="_on_day_time_slider_value_changed"]
|
||||||
|
[connection signal="item_selected" from="Control/DayTimeOptions" to="Control" method="_on_option_button_item_selected"]
|
||||||
[connection signal="toggled" from="Control/Dust" to="Control" method="_on_dust_toggled"]
|
[connection signal="toggled" from="Control/Dust" to="Control" method="_on_dust_toggled"]
|
||||||
[connection signal="toggled" from="Control/Blur" to="Control" method="_on_blur_toggled"]
|
[connection signal="toggled" from="Control/Blur" to="Control" method="_on_blur_toggled"]
|
||||||
[connection signal="toggled" from="Control/Pause" to="Control" method="_on_pause_toggled"]
|
[connection signal="toggled" from="Control/Pause" to="Control" method="_on_pause_toggled"]
|
||||||
[connection signal="toggled" from="Control/Shadows" to="Control" method="_on_shadows_toggled"]
|
[connection signal="toggled" from="Control/Shadows" to="Control" method="_on_shadows_toggled"]
|
||||||
|
[connection signal="pressed" from="Control/RandomWeather" to="Control" method="_on_random_weather_pressed"]
|
||||||
|
|||||||
413
docs/museums/biome_generator/museum_map.tscn
Normal file
413
docs/museums/biome_generator/museum_map.tscn
Normal file
File diff suppressed because one or more lines are too long
@@ -1,13 +1,20 @@
|
|||||||
extends Control
|
extends Control
|
||||||
|
|
||||||
@onready var day_night: EnvironmentManagerRoot = get_node_or_null("../DayNight") as EnvironmentManagerRoot
|
@onready var day_night: EnvironmentManagerRoot = $"../DayNight"
|
||||||
|
@onready var weather_event_label: Label = $WeatherEventLabel
|
||||||
@onready var day_time_label: Label = $DayTimeLabel
|
@onready var day_time_label: Label = $DayTimeLabel
|
||||||
@onready var day_time_slider: HSlider = $DayTimeSlider
|
@onready var day_time_slider: HSlider = $DayTimeSlider
|
||||||
|
@onready var wind_slider: HSlider = $WindSlider
|
||||||
|
@onready var day_time_option: OptionButton = $DayTimeOptions
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
UIEvents.day_time_changed.connect(_on_day_time_changed)
|
UIEvents.day_time_changed.connect(_on_day_time_changed)
|
||||||
|
UIEvents.day_time_option_changed.connect(_on_day_time_option_changed)
|
||||||
|
UIEvents.weather_event_changed.connect(_on_weather_event_changed)
|
||||||
|
if day_night != null and day_night.environment_config != null and wind_slider != null:
|
||||||
|
wind_slider.set_value_no_signal(day_night.environment_config.wind_strength)
|
||||||
_sync_day_time_ui()
|
_sync_day_time_ui()
|
||||||
|
_on_weather_event_changed("Weather: Clear")
|
||||||
|
|
||||||
func _on_rain_toggled(toggled_on: bool) -> void:
|
func _on_rain_toggled(toggled_on: bool) -> void:
|
||||||
UIEvents.toggle_rain.emit(toggled_on)
|
UIEvents.toggle_rain.emit(toggled_on)
|
||||||
@@ -18,6 +25,12 @@ func _on_snow_toggled(toggled_on: bool) -> void:
|
|||||||
func _on_wind_toggled(toggled_on: bool) -> void:
|
func _on_wind_toggled(toggled_on: bool) -> void:
|
||||||
UIEvents.toggle_wind.emit(toggled_on)
|
UIEvents.toggle_wind.emit(toggled_on)
|
||||||
|
|
||||||
|
func _on_wind_slider_value_changed(value: float) -> void:
|
||||||
|
UIEvents.wind_change.emit(value)
|
||||||
|
|
||||||
|
func _on_random_weather_pressed() -> void:
|
||||||
|
UIEvents.trigger_random_weather.emit(10.0)
|
||||||
|
|
||||||
func _on_fireflies_toggled(toggled_on: bool) -> void:
|
func _on_fireflies_toggled(toggled_on: bool) -> void:
|
||||||
UIEvents.toggle_fireflies.emit(toggled_on)
|
UIEvents.toggle_fireflies.emit(toggled_on)
|
||||||
|
|
||||||
@@ -38,6 +51,10 @@ func _on_day_time_changed(value: float, time_string: String) -> void:
|
|||||||
label_text = "Time %s | nt %.3f | dt %.3f" % [time_string, value, day_night.day_time]
|
label_text = "Time %s | nt %.3f | dt %.3f" % [time_string, value, day_night.day_time]
|
||||||
day_time_label.text = label_text
|
day_time_label.text = label_text
|
||||||
|
|
||||||
|
func _on_weather_event_changed(description: String) -> void:
|
||||||
|
if weather_event_label:
|
||||||
|
weather_event_label.text = description
|
||||||
|
|
||||||
func _on_fog_overlay_toggled(toggled_on: bool) -> void:
|
func _on_fog_overlay_toggled(toggled_on: bool) -> void:
|
||||||
UIEvents.toggle_fog_overlay.emit(toggled_on)
|
UIEvents.toggle_fog_overlay.emit(toggled_on)
|
||||||
|
|
||||||
@@ -68,3 +85,14 @@ func _sync_day_time_ui() -> void:
|
|||||||
day_night_controller.current_time,
|
day_night_controller.current_time,
|
||||||
day_night_controller.get_time_string()
|
day_night_controller.get_time_string()
|
||||||
)
|
)
|
||||||
|
_on_day_time_option_changed(
|
||||||
|
day_night_controller.get_time_option_index(day_night_controller.current_time)
|
||||||
|
)
|
||||||
|
|
||||||
|
func _on_day_time_option_changed(index: int) -> void:
|
||||||
|
if day_time_option == null:
|
||||||
|
return
|
||||||
|
day_time_option.select(index)
|
||||||
|
|
||||||
|
func _on_option_button_item_selected(index: int) -> void:
|
||||||
|
UIEvents.time_option_item_changed.emit(index)
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://drh4ak2aslebu"
|
|
||||||
path="res://.godot/imported/chunk_c_e_1.fbx-fcecdb3c5458fe61bd7c9ea4a79977ed.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://docs/museums/daynight/scenes/chunk_c_e_1/chunk_c_e_1.fbx"
|
|
||||||
dest_files=["res://.godot/imported/chunk_c_e_1.fbx-fcecdb3c5458fe61bd7c9ea4a79977ed.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
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
[gd_scene format=3 uid="uid://botm0dqtr5whb"]
|
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://drh4ak2aslebu" path="res://docs/museums/daynight/scenes/chunk_c_e_1/chunk_c_e_1.fbx" id="1_hycya"]
|
|
||||||
[ext_resource type="Script" uid="uid://dg2h4kbqe8j3m" path="res://core/biome_generator/chunk_info.gd" id="2_0urj0"]
|
|
||||||
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/chunk_c_e_1/grass_chunk.tres" id="2_oixxl"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://jj15telqu3rp" path="res://docs/museums/daynight/scenes/grass_test/grass_test.tscn" id="4_l3pac"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://qrvty6mbmr2m" path="res://docs/museums/daynight/scenes/chunk_c_e_1/test_orto_big.tscn" id="5_h1xfy"]
|
|
||||||
|
|
||||||
[node name="Chunk_C_E_1" unique_id=1874739368 groups=["weather_vegetables_node", "wind_node"] instance=ExtResource("1_hycya")]
|
|
||||||
script = ExtResource("2_0urj0")
|
|
||||||
|
|
||||||
[node name="Chunk_026" parent="." index="0" unique_id=1723380962]
|
|
||||||
material_override = ExtResource("2_oixxl")
|
|
||||||
|
|
||||||
[node name="Grass" parent="." index="1" unique_id=838519336 instance=ExtResource("4_l3pac")]
|
|
||||||
transform = Transform3D(1.5, 0, 0, 0, 1, 0, 0, 0, 1.5, 0, 0.071342185, 0)
|
|
||||||
|
|
||||||
[node name="Test_Orto_Big" parent="." index="2" unique_id=381322647 instance=ExtResource("5_h1xfy")]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.264472, 0, 6.0643373)
|
|
||||||
|
|
||||||
[node name="Test_Orto_Big3" parent="." index="3" unique_id=1302450866 instance=ExtResource("5_h1xfy")]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 0.65525997, 0.264472, 0, -0.0770607)
|
|
||||||
|
|
||||||
[node name="Test_Orto_Big2" parent="." index="4" unique_id=309995461 instance=ExtResource("5_h1xfy")]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.264472, 0, -6.083904)
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
[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.22173214, 0.30581495, 0.10733434, 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
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 6.2 KiB |
@@ -1,41 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://c0lstspvtbxxw"
|
|
||||||
path.s3tc="res://.godot/imported/grass_round.png-7ab5c804b97ebf1669fa79244396d578.s3tc.ctex"
|
|
||||||
metadata={
|
|
||||||
"imported_formats": ["s3tc_bptc"],
|
|
||||||
"vram_texture": true
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://docs/museums/daynight/scenes/chunk_c_e_1/grass_round.png"
|
|
||||||
dest_files=["res://.godot/imported/grass_round.png-7ab5c804b97ebf1669fa79244396d578.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.
@@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://7ktyjmbw1lw2"
|
|
||||||
path="res://.godot/imported/test_bordisentiero.fbx-99503bad45be9d5815297f4a961b08e9.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://docs/museums/daynight/scenes/chunk_c_e_1/test_bordisentiero.fbx"
|
|
||||||
dest_files=["res://.godot/imported/test_bordisentiero.fbx-99503bad45be9d5815297f4a961b08e9.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
|
|
||||||
Binary file not shown.
@@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://bu13utuvlgwpm"
|
|
||||||
path="res://.godot/imported/test_orto_big.fbx-84db5cc81bc1db359cc9317e767d8bd5.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://docs/museums/daynight/scenes/chunk_c_e_1/test_orto_big.fbx"
|
|
||||||
dest_files=["res://.godot/imported/test_orto_big.fbx-84db5cc81bc1db359cc9317e767d8bd5.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
Binary file not shown.
@@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://dsh55bqjfrqfp"
|
|
||||||
path="res://.godot/imported/chunk_c_f_1.fbx-5457c468af29ce8e8397fca8b8b6feed.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://docs/museums/daynight/scenes/chunk_c_f_1/chunk_c_f_1.fbx"
|
|
||||||
dest_files=["res://.godot/imported/chunk_c_f_1.fbx-5457c468af29ce8e8397fca8b8b6feed.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
|
|
||||||
@@ -1,189 +0,0 @@
|
|||||||
[gd_scene format=4 uid="uid://givg3dyrxsk5"]
|
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://drh4ak2aslebu" path="res://docs/museums/daynight/scenes/chunk_c_e_1/chunk_c_e_1.fbx" id="1_jpp2r"]
|
|
||||||
[ext_resource type="Script" uid="uid://dg2h4kbqe8j3m" path="res://core/biome_generator/chunk_info.gd" id="2_02kkq"]
|
|
||||||
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="3_wr3vc"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://cahsl77384kf1" path="res://docs/museums/daynight/scenes/chunk_c_f_1/house_muraglione.tscn" id="4_lunjj"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://cl8c5n0nw30u" path="res://docs/museums/daynight/scenes/chunk_c_f_1/house_xl_4.fbx" id="5_tf2ul"]
|
|
||||||
[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="Material" uid="uid://couj6glsrm6h3" path="res://docs/museums/daynight/scenes/chunk_f_l_2/path.tres" id="7_y2p7p"]
|
|
||||||
[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://d12t04rs47jq3" path="res://tgcc/chunk/prop/tree/tree_01.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://bfvtlpkcnbgke" path="res://docs/museums/daynight/scenes/chunk_c_e_1/bordi_sentiero_rettilineo.tscn" id="12_rrcoc"]
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_sqcol"]
|
|
||||||
render_priority = 0
|
|
||||||
shader = ExtResource("3_wr3vc")
|
|
||||||
shader_parameter/albedo_color = Color(0.16470589, 0.50980395, 0.21960784, 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_cvr4e"]
|
|
||||||
render_priority = 0
|
|
||||||
shader = ExtResource("7_wr3vc")
|
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0uwhb"]
|
|
||||||
resource_name = "Material"
|
|
||||||
vertex_color_use_as_albedo = true
|
|
||||||
albedo_color = Color(0.9063318, 0.9063318, 0.9063318, 1)
|
|
||||||
emission_enabled = true
|
|
||||||
|
|
||||||
[sub_resource type="ArrayMesh" id="ArrayMesh_v3qhc"]
|
|
||||||
_surfaces = [{
|
|
||||||
"aabb": AABB(-0.1, -0.015, -0.00043503524, 0.085, 0.03, 0.0008700705),
|
|
||||||
"format": 34359742465,
|
|
||||||
"index_count": 36,
|
|
||||||
"index_data": PackedByteArray("AAABAAIAAwABAAAAAgAEAAAAAQADAAUABQACAAEABgAEAAIAAgAFAAYABwAAAAQAAAAHAAMABAAGAAcABQADAAcABwAGAAUA"),
|
|
||||||
"name": "Material",
|
|
||||||
"primitive": 3,
|
|
||||||
"uv_scale": Vector4(0, 0, 0, 0),
|
|
||||||
"vertex_count": 8,
|
|
||||||
"vertex_data": PackedByteArray("j8J1vI3CdbxxFeS5j8J1vI/CdTxxFeS5zczMvY3CdTxxFeS5j8J1vI/CdTxxFeQ5zczMvY/CdbxxFeS5zczMvY3CdTxxFeQ5zczMvY/CdbxxFeQ5j8J1vI3CdbxxFeQ5")
|
|
||||||
}]
|
|
||||||
blend_shape_mode = 0
|
|
||||||
|
|
||||||
[sub_resource type="ArrayMesh" id="ArrayMesh_db63l"]
|
|
||||||
resource_name = "Cube_041"
|
|
||||||
_surfaces = [{
|
|
||||||
"aabb": AABB(-0.1, -0.015, -0.00043503524, 0.085, 0.03, 0.0008700705),
|
|
||||||
"attribute_data": PackedByteArray("EI5NP1hyCb/sx0k+7m8Lv+zHST7jt8U/EI5NPxi5xD/sx0k+7m8Lvzo2PD4K+Ri/OjY8PoV8zD/sx0k+47fFPxCOTT9Ycgm/cvJQP/r6FL86Njw+CvkYv+zHST7ubwu/mhRSP298zD+aFFI/3vgYv5atNz4K+Ri/lq03PoV8zD/sx0k+47fFPzo2PD6FfMw/cvJQP2l9yj8Qjk0/GLnEPxCOTT8YucQ/cvJQP2l9yj9y8lA/+voUvxCOTT9Ycgm/"),
|
|
||||||
"format": 34359742487,
|
|
||||||
"index_count": 36,
|
|
||||||
"index_data": PackedByteArray("AAABAAIAAgADAAAABAAFAAYABgAHAAQACAAJAAoACgALAAgADAANAA4ADgAPAAwAEAARABIAEgATABAAFAAVABYAFgAXABQA"),
|
|
||||||
"material": SubResource("StandardMaterial3D_0uwhb"),
|
|
||||||
"name": "Material",
|
|
||||||
"primitive": 3,
|
|
||||||
"uv_scale": Vector4(0, 0, 0, 0),
|
|
||||||
"vertex_count": 24,
|
|
||||||
"vertex_data": PackedByteArray("j8J1vI3CdbxxFeS5j8J1vI/CdTxxFeS5zczMvY3CdTxxFeS5zczMvY/CdbxxFeS5j8J1vI/CdTxxFeS5j8J1vI/CdTxxFeQ5zczMvY3CdTxxFeQ5zczMvY3CdTxxFeS5j8J1vI3CdbxxFeS5j8J1vI3CdbxxFeQ5j8J1vI/CdTxxFeQ5j8J1vI/CdTxxFeS5zczMvY3CdTxxFeQ5j8J1vI/CdTxxFeQ5j8J1vI3CdbxxFeQ5zczMvY/CdbxxFeQ5zczMvY3CdTxxFeS5zczMvY3CdTxxFeQ5zczMvY/CdbxxFeQ5zczMvY/CdbxxFeS5zczMvY/CdbxxFeS5zczMvY/CdbxxFeQ5j8J1vI3CdbxxFeQ5j8J1vI3CdbxxFeS5/////8KAnn//////VYFUf/////86f5x//////6d+U3//f/////+9LP9//////+ks/3///wAAm1L/f///AABuUv///3//f15/////f/9/XH////9//3+4f////3//f7l//3//f/9/AAD/f/9//38AAP9//3//fwAA/3//f/9/AAAAAP9//391fwAA/3//f3R/AAD/f/9/rH8AAP9//3+tf/9/AABx1f8//38AAM7V/z//fwAAXSn/P/9/AAD+KP8/")
|
|
||||||
}]
|
|
||||||
blend_shape_mode = 0
|
|
||||||
shadow_mesh = SubResource("ArrayMesh_v3qhc")
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_8kcs0"]
|
|
||||||
render_priority = 0
|
|
||||||
shader = ExtResource("7_wr3vc")
|
|
||||||
|
|
||||||
[sub_resource type="ArrayMesh" id="ArrayMesh_7ona5"]
|
|
||||||
_surfaces = [{
|
|
||||||
"aabb": AABB(-0.015000002, -0.1, -0.00043503524, 0.030000005, 0.115, 0.0008700705),
|
|
||||||
"format": 34359742465,
|
|
||||||
"index_count": 36,
|
|
||||||
"index_data": PackedByteArray("AAABAAIAAwABAAAAAgAEAAAAAQADAAUABQACAAEABgAEAAIAAgAFAAYABwAAAAQAAAAHAAMABAAGAAcABQADAAcABwAGAAUA"),
|
|
||||||
"name": "Material",
|
|
||||||
"primitive": 3,
|
|
||||||
"uv_scale": Vector4(0, 0, 0, 0),
|
|
||||||
"vertex_count": 8,
|
|
||||||
"vertex_data": PackedByteArray("isJ1PI/CdTxxFeS5ksJ1vI/CdTxxFeS5isJ1vM3MzL1xFeS5ksJ1vI/CdTxxFeQ5ksJ1PM3MzL1xFeS5isJ1vM3MzL1xFeQ5ksJ1PM3MzL1xFeQ5isJ1PI/CdTxxFeQ5")
|
|
||||||
}]
|
|
||||||
blend_shape_mode = 0
|
|
||||||
|
|
||||||
[sub_resource type="ArrayMesh" id="ArrayMesh_vall4"]
|
|
||||||
resource_name = "Cube_042"
|
|
||||||
_surfaces = [{
|
|
||||||
"aabb": AABB(-0.015000002, -0.1, -0.00043503524, 0.030000005, 0.115, 0.0008700705),
|
|
||||||
"attribute_data": PackedByteArray("EI5NP1hyCb/sx0k+7m8Lv+zHST7jt8U/EI5NPxi5xD/sx0k+7m8Lvzo2PD4K+Ri/OjY8PoV8zD/sx0k+47fFPxCOTT9Ycgm/cvJQP/r6FL86Njw+CvkYv+zHST7ubwu/mhRSP298zD+aFFI/3vgYv5atNz4K+Ri/lq03PoV8zD/sx0k+47fFPzo2PD6FfMw/cvJQP2l9yj8Qjk0/GLnEPxCOTT8YucQ/cvJQP2l9yj9y8lA/+voUvxCOTT9Ycgm/"),
|
|
||||||
"format": 34359742487,
|
|
||||||
"index_count": 36,
|
|
||||||
"index_data": PackedByteArray("AAABAAIAAgADAAAABAAFAAYABgAHAAQACAAJAAoACgALAAgADAANAA4ADgAPAAwAEAARABIAEgATABAAFAAVABYAFgAXABQA"),
|
|
||||||
"material": SubResource("StandardMaterial3D_0uwhb"),
|
|
||||||
"name": "Material",
|
|
||||||
"primitive": 3,
|
|
||||||
"uv_scale": Vector4(0, 0, 0, 0),
|
|
||||||
"vertex_count": 24,
|
|
||||||
"vertex_data": PackedByteArray("isJ1PI/CdTxxFeS5ksJ1vI/CdTxxFeS5isJ1vM3MzL1xFeS5ksJ1PM3MzL1xFeS5ksJ1vI/CdTxxFeS5ksJ1vI/CdTxxFeQ5isJ1vM3MzL1xFeQ5isJ1vM3MzL1xFeS5isJ1PI/CdTxxFeS5isJ1PI/CdTxxFeQ5ksJ1vI/CdTxxFeQ5ksJ1vI/CdTxxFeS5isJ1vM3MzL1xFeQ5ksJ1vI/CdTxxFeQ5isJ1PI/CdTxxFeQ5ksJ1PM3MzL1xFeQ5isJ1vM3MzL1xFeS5isJ1vM3MzL1xFeQ5ksJ1PM3MzL1xFeQ5ksJ1PM3MzL1xFeS5ksJ1PM3MzL1xFeS5ksJ1PM3MzL1xFeQ5isJ1PI/CdTxxFeQ5isJ1PI/CdTxxFeS5/////8b+Yz//////Mv4ZP//////D/p1A/////y7+50AAAP9/LmEAAAAA/39nYQAAAAD/f66d/n8AAP9/dZ3+f/9///+8/v8//3///7n+/z//f///cP//P/9///9z//8//3//fwAA/z//f/9/AAD/P/9//38AAP8//3//fwAA/z//fwAA6/7/P/9/AADp/v8//38AAFn//z//fwAAW///P////3//fy0R////f/9/DhH///9//39Yb////3//f3dv")
|
|
||||||
}]
|
|
||||||
blend_shape_mode = 0
|
|
||||||
shadow_mesh = SubResource("ArrayMesh_7ona5")
|
|
||||||
|
|
||||||
[sub_resource type="BoxShape3D" id="BoxShape3D_lunjj"]
|
|
||||||
size = Vector3(20, 10, 20)
|
|
||||||
|
|
||||||
[node name="Chunk_C_E_1" unique_id=1874739368 groups=["weather_node"] instance=ExtResource("1_jpp2r")]
|
|
||||||
script = ExtResource("2_02kkq")
|
|
||||||
north = true
|
|
||||||
est = true
|
|
||||||
west = true
|
|
||||||
|
|
||||||
[node name="Chunk_026" parent="." index="0" unique_id=1723380962]
|
|
||||||
material_override = SubResource("ShaderMaterial_sqcol")
|
|
||||||
|
|
||||||
[node name="House_Muraglione" parent="." index="1" unique_id=1060427946 instance=ExtResource("4_lunjj")]
|
|
||||||
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, 0, -0.891696)
|
|
||||||
visible = false
|
|
||||||
|
|
||||||
[node name="House_XL_4" parent="." index="2" unique_id=1350238174 instance=ExtResource("5_tf2ul")]
|
|
||||||
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, 0, 0)
|
|
||||||
visible = false
|
|
||||||
|
|
||||||
[node name="Chunk_C_L_1" parent="." index="3" unique_id=47126446 instance=ExtResource("6_4h5ax")]
|
|
||||||
|
|
||||||
[node name="Chunk_039" type="MeshInstance3D" parent="Chunk_C_L_1" index="1" unique_id=311921996]
|
|
||||||
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_overlay = SubResource("ShaderMaterial_cvr4e")
|
|
||||||
mesh = SubResource("ArrayMesh_db63l")
|
|
||||||
|
|
||||||
[node name="Chunk_038" type="MeshInstance3D" parent="Chunk_C_L_1" index="2" unique_id=300529289]
|
|
||||||
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_overlay = SubResource("ShaderMaterial_8kcs0")
|
|
||||||
mesh = SubResource("ArrayMesh_vall4")
|
|
||||||
|
|
||||||
[node name="StaticBody3D" type="StaticBody3D" parent="." index="4" unique_id=1294838844]
|
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D" index="0" unique_id=415467932]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4, 0)
|
|
||||||
shape = SubResource("BoxShape3D_lunjj")
|
|
||||||
|
|
||||||
[node name="Tori1" parent="." index="5" unique_id=1219093134 instance=ExtResource("9_ji5rd")]
|
|
||||||
transform = Transform3D(0.635, 0, 0, 0, 0.635, 0, 0, 0, 0.635, 0, 0, 6.3459473)
|
|
||||||
|
|
||||||
[node name="Grass" parent="." index="6" unique_id=838519336 instance=ExtResource("9_s470o")]
|
|
||||||
transform = Transform3D(0.625, 0, 0, 0, 0.625, 0, 0, 0, 0.625, -5.715452, 0.2, 5.6062393)
|
|
||||||
|
|
||||||
[node name="Grass2" parent="." index="7" unique_id=897276709 instance=ExtResource("9_s470o")]
|
|
||||||
transform = Transform3D(0.625, 0, 0, 0, 0.625, 0, 0, 0, 0.625, 5.533434, 0.2, 5.6062393)
|
|
||||||
|
|
||||||
[node name="Grass3" parent="." index="8" unique_id=1329989165 instance=ExtResource("9_s470o")]
|
|
||||||
transform = Transform3D(0.625, 0, 0, 0, 0.625, 0, 0, 0, 0.625, 5.533434, 0.2, -5.8610706)
|
|
||||||
|
|
||||||
[node name="Grass4" parent="." index="9" unique_id=1694283661 instance=ExtResource("9_s470o")]
|
|
||||||
transform = Transform3D(0.625, 0, 0, 0, 0.625, 0, 0, 0, 0.625, -5.7882576, 0.2, -5.8610706)
|
|
||||||
|
|
||||||
[node name="TreeTest5" parent="." index="10" unique_id=833565521 instance=ExtResource("10_ji5rd")]
|
|
||||||
transform = Transform3D(1.7, 0, 0, 0, 1.7, 0, 0, 0, 1.7, -7.5582066, -0.050994873, -9.087841)
|
|
||||||
|
|
||||||
[node name="TreeTest6" parent="." index="11" unique_id=722001 instance=ExtResource("10_ji5rd")]
|
|
||||||
transform = Transform3D(2.0272298e-08, 0, -1.7, 0, 1.7, 0, 1.7, 0, 2.0272298e-08, 7.8656454, -0.050994873, -9.087841)
|
|
||||||
|
|
||||||
[node name="ArtTest3" parent="." index="12" unique_id=143340255 instance=ExtResource("11_4n1py")]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 9.069)
|
|
||||||
|
|
||||||
[node name="ArtTest4" parent="." index="13" unique_id=193459863 instance=ExtResource("11_4n1py")]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 9.069)
|
|
||||||
|
|
||||||
[node name="Test_BordiSentiero" parent="." index="14" unique_id=1395614268 instance=ExtResource("12_rrcoc")]
|
|
||||||
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -1.15, 0.2, 5.699)
|
|
||||||
|
|
||||||
[node name="Test_BordiSentiero2" parent="." index="15" unique_id=514399948 instance=ExtResource("12_rrcoc")]
|
|
||||||
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 1.15, 0.2, 5.699)
|
|
||||||
|
|
||||||
[editable path="Chunk_C_L_1"]
|
|
||||||
Binary file not shown.
@@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://dveqtrbekuj5b"
|
|
||||||
path="res://.godot/imported/chunk_c_l_1.fbx-a2b79ee8404f6941548c817e413a845e.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://docs/museums/daynight/scenes/chunk_c_f_1/chunk_c_l_1.fbx"
|
|
||||||
dest_files=["res://.godot/imported/chunk_c_l_1.fbx-a2b79ee8404f6941548c817e413a845e.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
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
[gd_scene format=3 uid="uid://birttctl11th8"]
|
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://dveqtrbekuj5b" path="res://docs/museums/daynight/scenes/chunk_c_f_1/chunk_c_l_1.fbx" id="1_xwass"]
|
|
||||||
[ext_resource type="Script" uid="uid://dg2h4kbqe8j3m" path="res://core/biome_generator/chunk_info.gd" id="2_ib4lo"]
|
|
||||||
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/chunk_c_f_1/grass_chunk.tres" id="3_3x6ti"]
|
|
||||||
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/chunk_c_f_1/sentiero.tres" id="4_kwc5e"]
|
|
||||||
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/chunk_c_f_1/grass_blockout.tres" id="5_ag87g"]
|
|
||||||
|
|
||||||
[node name="Chunk_C_L_1" unique_id=47126446 instance=ExtResource("1_xwass")]
|
|
||||||
script = ExtResource("2_ib4lo")
|
|
||||||
sud = true
|
|
||||||
ovest = true
|
|
||||||
|
|
||||||
[node name="Chunk_005" parent="." index="0" unique_id=1667835125]
|
|
||||||
material_override = ExtResource("3_3x6ti")
|
|
||||||
|
|
||||||
[node name="Chunk_036" parent="." index="1" unique_id=248347357]
|
|
||||||
material_override = ExtResource("4_kwc5e")
|
|
||||||
|
|
||||||
[node name="Chunk_037" parent="." index="2" unique_id=1414101746]
|
|
||||||
material_override = ExtResource("4_kwc5e")
|
|
||||||
|
|
||||||
[node name="Cube_030" parent="." index="3" unique_id=807948711]
|
|
||||||
material_override = ExtResource("5_ag87g")
|
|
||||||
|
|
||||||
[node name="Cube_031" parent="." index="4" unique_id=1667337241]
|
|
||||||
material_override = ExtResource("5_ag87g")
|
|
||||||
|
|
||||||
[node name="Cube_034" parent="." index="5" unique_id=934323945]
|
|
||||||
material_override = ExtResource("5_ag87g")
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
[gd_resource type="ShaderMaterial" format=3 uid="uid://cd34mgvhj1d0r"]
|
|
||||||
|
|
||||||
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="1_f84ys"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
render_priority = 0
|
|
||||||
shader = ExtResource("1_f84ys")
|
|
||||||
shader_parameter/albedo_color = Color(0.46056616, 0.3895911, 0.06605037, 1)
|
|
||||||
shader_parameter/use_texture = true
|
|
||||||
shader_parameter/uv_scale = Vector2(1, 1)
|
|
||||||
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/emission_color = Color(0, 0, 0, 1)
|
|
||||||
shader_parameter/emission_energy = 0.0
|
|
||||||
Binary file not shown.
@@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://dllpmxm6ttwg"
|
|
||||||
path="res://.godot/imported/house_Muraglione.fbx-497d65ec53657e0986a27591d4598ea2.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://docs/museums/daynight/scenes/chunk_c_f_1/house_Muraglione.fbx"
|
|
||||||
dest_files=["res://.godot/imported/house_Muraglione.fbx-497d65ec53657e0986a27591d4598ea2.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
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
[gd_scene format=3 uid="uid://cahsl77384kf1"]
|
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://dllpmxm6ttwg" path="res://docs/museums/daynight/scenes/chunk_c_f_1/house_Muraglione.fbx" id="1_m4ocs"]
|
|
||||||
[ext_resource type="Material" uid="uid://biaudrjlfoflm" path="res://tgcc/chunk/prop/house/house.tres" id="2_7l0dg"]
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_bdf8l"]
|
|
||||||
|
|
||||||
[node name="House_Muraglione" unique_id=1060427946 groups=["weather_node"] instance=ExtResource("1_m4ocs")]
|
|
||||||
|
|
||||||
[node name="House_Muraglione" parent="." index="0" unique_id=517623360]
|
|
||||||
material_overlay = SubResource("ShaderMaterial_bdf8l")
|
|
||||||
surface_material_override/0 = ExtResource("2_7l0dg")
|
|
||||||
Binary file not shown.
@@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://cl8c5n0nw30u"
|
|
||||||
path="res://.godot/imported/house_xl_4.fbx-5b59de66a298b550bfd49357cb802fd7.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://docs/museums/daynight/scenes/chunk_c_f_1/house_xl_4.fbx"
|
|
||||||
dest_files=["res://.godot/imported/house_xl_4.fbx-5b59de66a298b550bfd49357cb802fd7.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
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
[gd_scene format=3 uid="uid://dte4p23pp14pv"]
|
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://cl8c5n0nw30u" path="res://docs/museums/daynight/scenes/chunk_c_f_1/house_xl_4.fbx" id="1_r3art"]
|
|
||||||
[ext_resource type="Material" uid="uid://biaudrjlfoflm" path="res://tgcc/chunk/prop/house/house.tres" id="2_mswf7"]
|
|
||||||
[ext_resource type="Shader" uid="uid://dh3j2jp6defuk" path="res://core/daynight/weather_overlay.gdshader" id="2_wanxj"]
|
|
||||||
[ext_resource type="Material" uid="uid://dbmyfi5t0yfy" path="res://tgcc/chunk/prop/house/house_emissiv.tres" id="3_n3fsy"]
|
|
||||||
|
|
||||||
[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_wanxj"]
|
|
||||||
gradient = SubResource("Gradient_n4qy2")
|
|
||||||
fill = 2
|
|
||||||
fill_from = Vector2(0.5, 0.5)
|
|
||||||
fill_to = Vector2(0.9017094, 0.12820514)
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_fprka"]
|
|
||||||
render_priority = 0
|
|
||||||
shader = ExtResource("2_wanxj")
|
|
||||||
shader_parameter/snow_noise_scale = 0.15
|
|
||||||
shader_parameter/snow_edge_softness = 0.2
|
|
||||||
shader_parameter/snow_roughness_variation = 0.15
|
|
||||||
shader_parameter/snow_color_variation = 0.05
|
|
||||||
shader_parameter/ripple_scale = 1.5
|
|
||||||
shader_parameter/ripple_speed = 2.0
|
|
||||||
shader_parameter/ripple_layers = 3.0
|
|
||||||
shader_parameter/streak_scale = 2.0
|
|
||||||
shader_parameter/streak_speed = 0.8
|
|
||||||
shader_parameter/wetness_darkening = 0.25
|
|
||||||
shader_parameter/wet_roughness = 0.05
|
|
||||||
shader_parameter/rain_normal_strength = 0.4
|
|
||||||
shader_parameter/puddle_noise_scale = 0.08
|
|
||||||
shader_parameter/puddle_threshold = 0.45
|
|
||||||
|
|
||||||
[node name="House_XL_4" unique_id=1350238174 groups=["weather_node"] instance=ExtResource("1_r3art")]
|
|
||||||
|
|
||||||
[node name="Shadow" type="Decal" parent="." index="0" unique_id=705347391]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.15501308)
|
|
||||||
size = Vector3(9, 0.5, 9)
|
|
||||||
texture_albedo = SubResource("GradientTexture2D_wanxj")
|
|
||||||
|
|
||||||
[node name="House_XL_4" parent="." index="1" unique_id=1851861956]
|
|
||||||
material_overlay = SubResource("ShaderMaterial_fprka")
|
|
||||||
surface_material_override/0 = ExtResource("2_mswf7")
|
|
||||||
surface_material_override/1 = ExtResource("3_n3fsy")
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
[gd_resource type="StandardMaterial3D" format=3 uid="uid://couj6glsrm6h3"]
|
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://m5it4ge0pgtm" path="res://docs/museums/daynight/scenes/chunk_f_l_2/texture_sentiero.png" id="1_lr0wl"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
albedo_color = Color(0.9811998, 0.8347986, 0.569528, 1)
|
|
||||||
albedo_texture = ExtResource("1_lr0wl")
|
|
||||||
uv1_scale = Vector3(2.165, 2.325, 1)
|
|
||||||
uv1_offset = Vector3(-0.555, 0, 0)
|
|
||||||
Binary file not shown.
@@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://2q81acvx3jua"
|
|
||||||
path="res://.godot/imported/tori_gate.fbx-4d875958b5e319189bb454a0080c008f.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://docs/museums/daynight/scenes/chunk_c_f_1/tori_gate.fbx"
|
|
||||||
dest_files=["res://.godot/imported/tori_gate.fbx-4d875958b5e319189bb454a0080c008f.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
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
[gd_scene format=3 uid="uid://dyolu5m0lgqm2"]
|
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://2q81acvx3jua" path="res://docs/museums/daynight/scenes/chunk_c_f_1/tori_gate.fbx" id="1_6kg7a"]
|
|
||||||
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="2_1ibku"]
|
|
||||||
[ext_resource type="Shader" uid="uid://btf3qpe7kwqig" path="res://core/snow.gdshader" id="2_ttfuh"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bt2j7x0gr6ndo" path="res://docs/museums/daynight/scenes/chunk_f_l_2/palette_train.png" id="3_6126s"]
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_yswvv"]
|
|
||||||
render_priority = 0
|
|
||||||
shader = ExtResource("2_ttfuh")
|
|
||||||
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1)
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_3mqnu"]
|
|
||||||
render_priority = 0
|
|
||||||
shader = ExtResource("2_1ibku")
|
|
||||||
shader_parameter/albedo_color = Color(1, 1, 1, 1)
|
|
||||||
shader_parameter/albedo_texture = ExtResource("3_6126s")
|
|
||||||
shader_parameter/use_texture = true
|
|
||||||
shader_parameter/uv_scale = Vector2(1, 1)
|
|
||||||
shader_parameter/palette_shift_y = 0.0
|
|
||||||
shader_parameter/gradient_color = Color(0.1, 0.1, 0.2, 1)
|
|
||||||
shader_parameter/gradient_start_y = 0.0
|
|
||||||
shader_parameter/gradient_end_y = 5.0
|
|
||||||
shader_parameter/gradient_intensity = 0.800000038
|
|
||||||
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/emission_color = Color(0, 0, 0, 1)
|
|
||||||
shader_parameter/emission_energy = 0.0
|
|
||||||
|
|
||||||
[node name="Tori1" unique_id=1219093134 instance=ExtResource("1_6kg7a")]
|
|
||||||
|
|
||||||
[node name="Sphere_001" parent="." index="0" unique_id=2137140690]
|
|
||||||
material_overlay = SubResource("ShaderMaterial_yswvv")
|
|
||||||
surface_material_override/0 = SubResource("ShaderMaterial_3mqnu")
|
|
||||||
Binary file not shown.
@@ -1,44 +0,0 @@
|
|||||||
[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
@@ -1,7 +0,0 @@
|
|||||||
[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")
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 6.2 KiB |
@@ -1,41 +0,0 @@
|
|||||||
[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.
@@ -1,44 +0,0 @@
|
|||||||
[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
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
[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://tgcc/chunk/prop/house/house.tres" id="3_njk5y"]
|
|
||||||
[ext_resource type="Material" uid="uid://dbmyfi5t0yfy" path="res://tgcc/chunk/prop/house/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.
|
Before Width: | Height: | Size: 185 KiB |
@@ -1,41 +0,0 @@
|
|||||||
[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.
|
Before Width: | Height: | Size: 14 KiB |
@@ -1,41 +0,0 @@
|
|||||||
[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
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
[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.
@@ -1,42 +0,0 @@
|
|||||||
[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
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
[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
|
|
||||||
Binary file not shown.
@@ -1,44 +0,0 @@
|
|||||||
[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
|
|
||||||
Binary file not shown.
@@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://h5r7ua0kkfqb"
|
|
||||||
path="res://.godot/imported/chunk_c_e_1.fbx-31fc56e764f398efbd0733dddc04c528.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://docs/museums/daynight/scenes/chunk_f_e_1/chunk_c_e_1.fbx"
|
|
||||||
dest_files=["res://.godot/imported/chunk_c_e_1.fbx-31fc56e764f398efbd0733dddc04c528.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
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
[gd_scene format=3 uid="uid://bi12g5nj421jv"]
|
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://h5r7ua0kkfqb" path="res://docs/museums/daynight/scenes/chunk_f_e_1/chunk_c_e_1.fbx" id="1_anwxh"]
|
|
||||||
[ext_resource type="Script" uid="uid://dg2h4kbqe8j3m" path="res://core/biome_generator/chunk_info.gd" id="2_scq5d"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://jj15telqu3rp" path="res://docs/museums/daynight/scenes/grass_test/grass_test.tscn" id="4_pynx0"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://d12t04rs47jq3" path="res://tgcc/chunk/prop/tree/tree_01.tscn" id="5_vyg4h"]
|
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pynx0"]
|
|
||||||
albedo_color = Color(0.3882353, 0.52156866, 0.20784314, 1)
|
|
||||||
|
|
||||||
[node name="Chunk_C_E_1" unique_id=1874739368 groups=["weather_node"] instance=ExtResource("1_anwxh")]
|
|
||||||
script = ExtResource("2_scq5d")
|
|
||||||
|
|
||||||
[node name="Chunk_026" parent="." index="0" unique_id=1048980551]
|
|
||||||
material_override = SubResource("StandardMaterial3D_pynx0")
|
|
||||||
|
|
||||||
[node name="TreeTest3" parent="." index="1" unique_id=838519336 instance=ExtResource("5_vyg4h")]
|
|
||||||
transform = Transform3D(-1.6420741, 0, 0.43999258, 0, 1.7000003, 0, -0.43999258, 0, -1.6420741, -6, 0, 7)
|
|
||||||
|
|
||||||
[node name="TreeTest7" parent="." index="2" unique_id=294124018 instance=ExtResource("5_vyg4h")]
|
|
||||||
transform = Transform3D(-0.8500001, 0, 1.4722435, 0, 1.9107201, 0, -1.4722435, 0, -0.8500001, -1, 0, 6)
|
|
||||||
|
|
||||||
[node name="TreeTest8" parent="." index="3" unique_id=1347052071 instance=ExtResource("5_vyg4h")]
|
|
||||||
transform = Transform3D(-0.8500001, 0, 1.4722435, 0, 1.7000005, 0, -1.4722435, 0, -0.8500001, 0, 0, 0)
|
|
||||||
|
|
||||||
[node name="TreeTest9" parent="." index="4" unique_id=809650464 instance=ExtResource("5_vyg4h")]
|
|
||||||
transform = Transform3D(-1.7000006, 0, -5.9604645e-08, 0, 1.5217258, 0, 5.9604645e-08, 0, -1.7000006, -6, 0, 0)
|
|
||||||
|
|
||||||
[node name="TreeTest10" parent="." index="5" unique_id=874463260 instance=ExtResource("5_vyg4h")]
|
|
||||||
transform = Transform3D(-0.8500001, 0, 1.4722435, 0, 1.8421628, 0, -1.4722435, 0, -0.8500001, -8, 0, -4)
|
|
||||||
|
|
||||||
[node name="TreeTest11" parent="." index="6" unique_id=1251577795 instance=ExtResource("5_vyg4h")]
|
|
||||||
transform = Transform3D(0.43999267, 0, 1.6420743, 0, 1.5772889, 0, -1.6420743, 0, 0.43999267, -5, 0, -6)
|
|
||||||
|
|
||||||
[node name="TreeTest12" parent="." index="7" unique_id=1738211323 instance=ExtResource("5_vyg4h")]
|
|
||||||
transform = Transform3D(1.6420745, 0, 0.4399924, 0, 2.0050228, 0, -0.4399924, 0, 1.6420745, 0, 0, -8)
|
|
||||||
|
|
||||||
[node name="TreeTest4" parent="." index="8" unique_id=2002110381 instance=ExtResource("5_vyg4h")]
|
|
||||||
transform = Transform3D(1.2020817, 0, 1.2020817, 0, 1.4763381, 0, -1.2020817, 0, 1.2020817, 5, 0, -8)
|
|
||||||
|
|
||||||
[node name="TreeTest6" parent="." index="9" unique_id=904012304 instance=ExtResource("5_vyg4h")]
|
|
||||||
transform = Transform3D(-1.2020816, 0, 1.2020816, 0, 2.069493, 0, -1.2020816, 0, -1.2020816, 7, 0, 0)
|
|
||||||
|
|
||||||
[node name="TreeTest5" parent="." index="10" unique_id=286631858 instance=ExtResource("5_vyg4h")]
|
|
||||||
transform = Transform3D(1.2020817, 0, -1.2020817, 0, 1.6411026, 0, 1.2020817, 0, 1.2020817, 7, 0, 4)
|
|
||||||
|
|
||||||
[node name="Grass" parent="." index="11" unique_id=329885752 instance=ExtResource("4_pynx0")]
|
|
||||||
transform = Transform3D(1.5, 0, 0, 0, 1, 0, 0, 0, 1.5, 0, 0.2, 0)
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://bwfw07dhn5hwa"
|
|
||||||
path="res://.godot/imported/borderpath.fbx-230ca6d3b71824fc98f419939c638ce3.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://docs/museums/daynight/scenes/chunk_f_l_2/borderpath.fbx"
|
|
||||||
dest_files=["res://.godot/imported/borderpath.fbx-230ca6d3b71824fc98f419939c638ce3.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
|
|
||||||
Binary file not shown.
@@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://rxo4x8lqnpds"
|
|
||||||
path="res://.godot/imported/chunk_c_l_2.fbx-e6504c3015cca0b63cb60efd99ae351e.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://docs/museums/daynight/scenes/chunk_f_l_2/chunk_c_l_2.fbx"
|
|
||||||
dest_files=["res://.godot/imported/chunk_c_l_2.fbx-e6504c3015cca0b63cb60efd99ae351e.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
Binary file not shown.
@@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://duc107s1wtp0b"
|
|
||||||
path="res://.godot/imported/column_blockout.fbx-292ffe04800976fa87bba71a681c4a88.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://docs/museums/daynight/scenes/chunk_f_l_2/column_blockout.fbx"
|
|
||||||
dest_files=["res://.godot/imported/column_blockout.fbx-292ffe04800976fa87bba71a681c4a88.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
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
[gd_scene format=3 uid="uid://b6f7gaoatj420"]
|
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://duc107s1wtp0b" path="res://docs/museums/daynight/scenes/chunk_f_l_2/column_blockout.fbx" id="1_iaqs2"]
|
|
||||||
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/chunk_f_l_2/palette_cel.tres" id="2_hqihs"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bt2j7x0gr6ndo" path="res://docs/museums/daynight/scenes/chunk_f_l_2/palette_train.png" id="3_jfj3v"]
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_dg33q"]
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_lrklx"]
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_bwl3q"]
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_n0srh"]
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_0mbrm"]
|
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6tlqt"]
|
|
||||||
specular_mode = 1
|
|
||||||
disable_ambient_light = true
|
|
||||||
disable_fog = true
|
|
||||||
disable_specular_occlusion = true
|
|
||||||
albedo_texture = ExtResource("3_jfj3v")
|
|
||||||
emission_enabled = true
|
|
||||||
emission_energy_multiplier = 8.0
|
|
||||||
emission_texture = ExtResource("3_jfj3v")
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_7dodf"]
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_63xe0"]
|
|
||||||
|
|
||||||
[node name="ArtTest3" unique_id=143340255 groups=["weather_node", "wind_node"] instance=ExtResource("1_iaqs2")]
|
|
||||||
|
|
||||||
[node name="Empty" parent="." index="0" unique_id=1251372369]
|
|
||||||
transform = Transform3D(50, 0, 0, 0, -2.1855694e-06, 50, 0, -50, -2.1855694e-06, 0, 0, 0)
|
|
||||||
|
|
||||||
[node name="Cube_004" parent="Empty" index="0" unique_id=143665017]
|
|
||||||
material_override = ExtResource("2_hqihs")
|
|
||||||
material_overlay = SubResource("ShaderMaterial_dg33q")
|
|
||||||
|
|
||||||
[node name="Cube_005" parent="Empty" index="1" unique_id=141217713]
|
|
||||||
material_override = ExtResource("2_hqihs")
|
|
||||||
material_overlay = SubResource("ShaderMaterial_lrklx")
|
|
||||||
|
|
||||||
[node name="Cube_006" parent="Empty" index="2" unique_id=2078409050]
|
|
||||||
material_override = ExtResource("2_hqihs")
|
|
||||||
material_overlay = SubResource("ShaderMaterial_bwl3q")
|
|
||||||
|
|
||||||
[node name="Cube_007" parent="Empty" index="3" unique_id=706314829]
|
|
||||||
material_override = ExtResource("2_hqihs")
|
|
||||||
material_overlay = SubResource("ShaderMaterial_n0srh")
|
|
||||||
|
|
||||||
[node name="Cube_008" parent="Empty" index="4" unique_id=1341246711]
|
|
||||||
material_override = ExtResource("2_hqihs")
|
|
||||||
material_overlay = SubResource("ShaderMaterial_0mbrm")
|
|
||||||
|
|
||||||
[node name="Cube_009" parent="Empty" index="5" unique_id=1358876075]
|
|
||||||
material_override = SubResource("StandardMaterial3D_6tlqt")
|
|
||||||
|
|
||||||
[node name="OmniLight3D" type="OmniLight3D" parent="Empty/Cube_009" index="0" unique_id=1295876317]
|
|
||||||
transform = Transform3D(0.02, 0, 0, 0, 0.02, -5.551115e-17, 0, 5.551115e-17, 0.02, 0, -1.8613413e-09, 0.02244059)
|
|
||||||
light_color = Color(0.8666949, 0.43160796, 0.0022084315, 1)
|
|
||||||
light_specular = 0.0
|
|
||||||
distance_fade_begin = 0.0
|
|
||||||
omni_range = 15.0
|
|
||||||
omni_attenuation = 2.621
|
|
||||||
omni_shadow_mode = 0
|
|
||||||
|
|
||||||
[node name="Cube_011" parent="Empty" index="6" unique_id=1669669268]
|
|
||||||
material_override = ExtResource("2_hqihs")
|
|
||||||
material_overlay = SubResource("ShaderMaterial_7dodf")
|
|
||||||
|
|
||||||
[node name="tetto 2" parent="Empty" index="7" unique_id=1674600040]
|
|
||||||
material_override = ExtResource("2_hqihs")
|
|
||||||
material_overlay = SubResource("ShaderMaterial_63xe0")
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
[gd_scene format=3 uid="uid://mj15bepbgy02"]
|
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://d25nuo0iyscu0" path="res://docs/museums/daynight/scenes/chunk_f_l_2/housetest_4.fbx" id="1_03u1s"]
|
|
||||||
[ext_resource type="Material" uid="uid://biaudrjlfoflm" path="res://tgcc/chunk/prop/house/house.tres" id="2_n4qy2"]
|
|
||||||
[ext_resource type="Shader" uid="uid://btf3qpe7kwqig" path="res://core/snow.gdshader" id="3_n4qy2"]
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_0x3ja"]
|
|
||||||
render_priority = 0
|
|
||||||
shader = ExtResource("3_n4qy2")
|
|
||||||
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_0x3ja"]
|
|
||||||
gradient = SubResource("Gradient_n4qy2")
|
|
||||||
fill = 2
|
|
||||||
fill_from = Vector2(0.5, 0.5)
|
|
||||||
fill_to = Vector2(0.9017094, 0.12820514)
|
|
||||||
|
|
||||||
[node name="HouseTest_4" unique_id=462882013 instance=ExtResource("1_03u1s")]
|
|
||||||
|
|
||||||
[node name="Cube_008" parent="." index="0" unique_id=2087805025]
|
|
||||||
material_override = ExtResource("2_n4qy2")
|
|
||||||
material_overlay = SubResource("ShaderMaterial_0x3ja")
|
|
||||||
|
|
||||||
[node name="Shadow" type="Decal" parent="." index="1" unique_id=30846848]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.059038162, 0, 0)
|
|
||||||
size = Vector3(9, 0.5, 9)
|
|
||||||
texture_albedo = SubResource("GradientTexture2D_0x3ja")
|
|
||||||
Binary file not shown.
@@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://d25nuo0iyscu0"
|
|
||||||
path="res://.godot/imported/housetest_4.fbx-23d43f0f665bfe6ba3569f6aca99ab7a.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://docs/museums/daynight/scenes/chunk_f_l_2/housetest_4.fbx"
|
|
||||||
dest_files=["res://.godot/imported/housetest_4.fbx-23d43f0f665bfe6ba3569f6aca99ab7a.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
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 185 KiB |
@@ -1,41 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://bygihc62pho6a"
|
|
||||||
path.s3tc="res://.godot/imported/leaf_test.png-31bf3b97663f194dd5e3af26288e2cf2.s3tc.ctex"
|
|
||||||
metadata={
|
|
||||||
"imported_formats": ["s3tc_bptc"],
|
|
||||||
"vram_texture": true
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://docs/museums/daynight/scenes/chunk_f_l_2/leaf_test.png"
|
|
||||||
dest_files=["res://.godot/imported/leaf_test.png-31bf3b97663f194dd5e3af26288e2cf2.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
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
[gd_resource type="ShaderMaterial" format=3 uid="uid://da8erd0d83kog"]
|
|
||||||
|
|
||||||
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="1_bjiey"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bt2j7x0gr6ndo" path="res://docs/museums/daynight/scenes/chunk_f_l_2/palette_train.png" id="2_e8nia"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
render_priority = 0
|
|
||||||
shader = ExtResource("1_bjiey")
|
|
||||||
shader_parameter/albedo_color = Color(1, 1, 1, 1)
|
|
||||||
shader_parameter/albedo_texture = ExtResource("2_e8nia")
|
|
||||||
shader_parameter/use_texture = true
|
|
||||||
shader_parameter/uv_scale = Vector2(1, 1)
|
|
||||||
shader_parameter/light_direction = Vector3(0.5, 1, 0.5)
|
|
||||||
shader_parameter/light_steps = 4.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/emission_color = Color(1, 1, 1, 1)
|
|
||||||
shader_parameter/emission_energy = 0.0
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 15 KiB |
@@ -1,41 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://bt2j7x0gr6ndo"
|
|
||||||
path.s3tc="res://.godot/imported/palette_train.png-cd3116eb3f79c169cc5b38ef39e56b4d.s3tc.ctex"
|
|
||||||
metadata={
|
|
||||||
"imported_formats": ["s3tc_bptc"],
|
|
||||||
"vram_texture": true
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://docs/museums/daynight/scenes/chunk_f_l_2/palette_train.png"
|
|
||||||
dest_files=["res://.godot/imported/palette_train.png-cd3116eb3f79c169cc5b38ef39e56b4d.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
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
[gd_resource type="StandardMaterial3D" format=3 uid="uid://couj6glsrm6h3"]
|
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://m5it4ge0pgtm" path="res://docs/museums/daynight/scenes/chunk_f_l_2/texture_sentiero.png" id="1_lr0wl"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
albedo_color = Color(0.9811998, 0.8347986, 0.569528, 1)
|
|
||||||
albedo_texture = ExtResource("1_lr0wl")
|
|
||||||
uv1_scale = Vector3(2.165, 2.325, 1)
|
|
||||||
uv1_offset = Vector3(-0.555, 0, 0)
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user