fix godray orientation + fix blur

This commit is contained in:
2026-04-14 08:53:38 +02:00
parent 65294c7011
commit 060bccd96a
18 changed files with 445 additions and 23 deletions

Binary file not shown.

View File

@@ -3,14 +3,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;
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() {
float dist_from_center = abs(SCREEN_UV.y - 0.5); COLOR = textureLod(screen_texture, SCREEN_UV, blur_amount);
float mask = smoothstep(focus_size / 2.0, (focus_size / 2.0) + transition_softness, dist_from_center);
//Apply blur
vec4 blurred_screen = textureLod(screen_texture, SCREEN_UV, blur_amount * mask);
COLOR = blurred_screen;
} }

View File

@@ -187,9 +187,7 @@ 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.70000003325 shader_parameter/blur_amount = 0.6000000285
shader_parameter/focus_size = 0.250000011875
shader_parameter/transition_softness = 0.40000001830148
[sub_resource type="QuadMesh" id="QuadMesh_sxgg7"] [sub_resource type="QuadMesh" id="QuadMesh_sxgg7"]
size = Vector2(2, 2) size = Vector2(2, 2)
@@ -227,8 +225,6 @@ godray = ExtResource("5_411rw")
environment_dust = NodePath("EnvironmentDust") environment_dust = NodePath("EnvironmentDust")
blur = NodePath("Blur") blur = NodePath("Blur")
environment_shadows = NodePath("EnvironmentCloudsShadows") environment_shadows = NodePath("EnvironmentCloudsShadows")
thunder_sounds = null
rain_sounds = null
[node name="Particles_Fireflies" type="GPUParticles3D" parent="." unique_id=947538133] [node name="Particles_Fireflies" type="GPUParticles3D" parent="." unique_id=947538133]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)

View File

@@ -29,9 +29,9 @@ shader_parameter/edge_fade_power = 2.0
shader_parameter/intensity_multiplier = 0.5330000253175 shader_parameter/intensity_multiplier = 0.5330000253175
[node name="GodRay" type="Node3D" unique_id=1679441931] [node name="GodRay" type="Node3D" unique_id=1679441931]
script = ExtResource("2_v3yr3")
[node name="GodRays" type="MeshInstance3D" parent="." unique_id=341055819] [node name="GodRays" type="MeshInstance3D" parent="." unique_id=341055819]
transform = Transform3D(3.39, 0, 0, 0, -3.1996737e-07, 13, 0, -7.32, -5.68248e-07, 0, 0, 0) transform = Transform3D(3.39, 0, 0, 0, -3.1996737e-07, 13, 0, -7.32, -5.68248e-07, 0, 0, 0)
mesh = SubResource("PlaneMesh_l01hg") mesh = SubResource("PlaneMesh_l01hg")
surface_material_override/0 = SubResource("ShaderMaterial_joqvq") surface_material_override/0 = SubResource("ShaderMaterial_joqvq")
script = ExtResource("2_v3yr3")

View File

@@ -1,21 +1,72 @@
extends MeshInstance3D extends Node3D
@export_group("Animation") @export_group("Animation")
@export var life_time: float = 8.0 @export var life_time: float = 8.0
@export var fade_in_time: float = 4.0 @export var fade_in_time: float = 4.0
@export var max_base_alpha: float = 1.0 @export var max_base_alpha: float = 1.0
func _ready(): var _visual_scale: Vector3 = Vector3.ONE
var mat = get_active_material(0).duplicate() var _visual_rotation_degrees: Vector3 = Vector3.ZERO
set_surface_override_material(0, mat) var _mesh_base_position: Vector3 = Vector3.ZERO
var _mesh_base_rotation_degrees: Vector3 = Vector3.ZERO
var _mesh_base_scale: Vector3 = Vector3.ONE
#add_to_group("camere") @onready var godrays_mesh: MeshInstance3D = $GodRays
func _ready():
_mesh_base_position = godrays_mesh.position
_mesh_base_rotation_degrees = godrays_mesh.rotation_degrees
_mesh_base_scale = godrays_mesh.scale
_apply_visual_transform()
var mat: ShaderMaterial = godrays_mesh.get_active_material(0).duplicate()
godrays_mesh.set_surface_override_material(0, mat)
#set alpha to 0 before first frame to avoid "pop" #set alpha to 0 before first frame to avoid "pop"
mat.set_shader_parameter("base_alpha", 0.0) mat.set_shader_parameter("base_alpha", 0.0)
orient_to_camera()
animate_godray(mat) animate_godray(mat)
func _process(_delta: float) -> void:
orient_to_camera()
func set_visual_rotation_degrees(value: Vector3) -> void:
_visual_rotation_degrees = value
if is_node_ready():
_apply_visual_transform()
func set_visual_scale(value: Vector3) -> void:
_visual_scale = value
if is_node_ready():
_apply_visual_transform()
func orient_to_camera() -> void:
var current_camera: Camera3D = get_viewport().get_camera_3d()
if current_camera == null or not is_instance_valid(current_camera):
return
var look_direction: Vector3 = current_camera.global_basis.z
if look_direction.is_zero_approx():
return
# Use the camera orientation instead of its position so every godray keeps
# the same diagonal on screen, even when multiple rays are visible together.
look_at(global_position + look_direction, current_camera.global_basis.y, true)
func _apply_visual_transform() -> void:
godrays_mesh.position = _mesh_base_position
godrays_mesh.rotation_degrees = _mesh_base_rotation_degrees + _visual_rotation_degrees
godrays_mesh.scale = Vector3(
_mesh_base_scale.x * _visual_scale.x,
_mesh_base_scale.y * _visual_scale.y,
_mesh_base_scale.z * _visual_scale.z
)
func animate_godray(mat: ShaderMaterial): func animate_godray(mat: ShaderMaterial):
var tween_alpha = create_tween() var tween_alpha = create_tween()
tween_alpha.tween_property(mat, "shader_parameter/base_alpha", max_base_alpha, fade_in_time).from(0.0) tween_alpha.tween_property(mat, "shader_parameter/base_alpha", max_base_alpha, fade_in_time).from(0.0)

View File

@@ -497,8 +497,16 @@ func spawn_single_godray() -> void:
if camera and is_instance_valid(camera): if camera and is_instance_valid(camera):
center = camera.global_position center = camera.global_position
ray.global_position = Vector3(center.x + random_x, environment_config.godray_spawn_height, center.z + random_z) ray.global_position = Vector3(center.x + random_x, environment_config.godray_spawn_height, center.z + random_z)
ray.rotation_degrees = environment_config.godray_rotation_degrees if ray.has_method("set_visual_rotation_degrees"):
ray.scale = environment_config.godray_scale ray.call("set_visual_rotation_degrees", environment_config.godray_rotation_degrees)
else:
ray.rotation_degrees = environment_config.godray_rotation_degrees
if ray.has_method("set_visual_scale"):
ray.call("set_visual_scale", environment_config.godray_scale)
else:
ray.scale = environment_config.godray_scale
if ray.has_method("orient_to_camera"):
ray.call("orient_to_camera")
var godray_tween: Tween = create_tween() var godray_tween: Tween = create_tween()
godray_tween.tween_interval(2.0) godray_tween.tween_interval(2.0)
@@ -611,8 +619,18 @@ func toggle_blur(value: bool) -> void:
if blur: if blur:
blur.visible = value blur.visible = value
ApplyPostProcessBlurConfig()
func toggle_shadows(value: bool) -> void: func toggle_shadows(value: bool) -> void:
if environment_shadows: if environment_shadows:
environment_shadows.visible = value environment_shadows.visible = value
func ApplyPostProcessBlurConfig() -> void:
if blur == null:
return
var blur_material := blur.material as ShaderMaterial
if blur_material:
blur_material.set_shader_parameter("blur_amount", environment_config.blur_amount)
#endregion #endregion

View File

@@ -83,6 +83,7 @@ extends Resource
@export var enable_dust: bool = true #Floating dust particles overlay @export var enable_dust: bool = true #Floating dust particles overlay
@export var enable_blur: bool = true #Screen blur effect @export var enable_blur: bool = true #Screen blur effect
@export var enable_environment_shadows: bool = true #Cloud shadow projection on terrain @export var enable_environment_shadows: bool = true #Cloud shadow projection on terrain
@export var blur_amount: float = 0.6
#Shader materials used by weather and sky systems #Shader materials used by weather and sky systems
@export_group("Environment Materials") @export_group("Environment Materials")

File diff suppressed because one or more lines are too long

View File

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

View File

@@ -0,0 +1,172 @@
[gd_scene format=4 uid="uid://dpstb26gs581l"]
[ext_resource type="PackedScene" uid="uid://c2j2jey3l0hv4" path="res://docs/museums/daynight/scenes/mountain_test/chunck_m_n-o-e-s1.fbx" id="1_anh2f"]
[ext_resource type="Script" uid="uid://s1ohbgbpyu5n" path="res://docs/museums/daynight/scenes/mountain_test/info_chunk.gd" id="2_2wsw6"]
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/mountain_test/treno3.tres" id="3_grv42"]
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/mountain_test/trainchunk.tres" id="4_0s706"]
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/mountain_test/treno1.tres" id="5_e6288"]
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="6_grv42"]
[ext_resource type="Texture2D" uid="uid://cwfjkujogfhm7" path="res://docs/museums/daynight/scenes/mountain_test/rock_color.png" id="7_0s706"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_e6288"]
render_priority = 0
shader = ExtResource("6_grv42")
shader_parameter/albedo_color = Color(0.80049086, 0.80049074, 0.80049074, 1)
shader_parameter/albedo_texture = ExtResource("7_0s706")
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = -5.62
shader_parameter/gradient_end_y = 10.505
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
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_80fwj"]
[sub_resource type="ArrayMesh" id="ArrayMesh_xjipq"]
_surfaces = [{
"aabb": AABB(-0.8691641, -1.0336405, -0.8410101, 1.7731525, 2.0458593, 1.8830655),
"format": 34896613377,
"index_count": 852,
"index_data": PackedByteArray("NgA3AGoANgBqAAgACABqADcANgAEADcACAA3AGsANwBVAGsACABrAFUANwASAFUANgAIAAMANgBsAAQANgADAGwAbQAEAGwABABuADcAAABsAAMAbQAuAAQABAAuAG4AbQBsAAIAAAACAGwAbQBvAC4AbQAvAG8AbQACAC8ALgBvAC8ANwBuAGcANwBnABIAAgA9AC8AAABwAAIAAgBwAD0AAAABAHAAbgBxAGcAAAByAAEAAAADAHIAAQA1AHAABQByAAMABQADAAgAAQByADoABQAGAHIABgA6AHIABQAIADgABQA4ADkABQA5AAYAOQA4AAgABgA7ADoABgAJADsAOgA7AAkABgA5AAkAAQA6AHMAAQBzADUAOgAJAHQAOgB0AAcACQAHAHQAcwA6AEAAOgAHAEAAcwBAAHUAcwB1AEEAcwBBADUAQQB1AEAACQB2AAcACQA/AHYABwB2AD8ACQA8AD8AOQA8AAkABwA/AEcAPAAPAD8ARwA/AA8APAAOAA8AOQALADwACwAOADwAOQAKAAsAOQB3AAoAOQAIAHcACAAKAHcACAAMAAoACABVAAwACwAKAA0ADAANAAoACwBUAA4ACwANAFQADABVABEAEgARAFUADABXAA0ADAARAFcAVAANABMAVwATAA0AVAATAHgAVAB4AFMAVABTAA4AUwB4ABMAUgAOAFMADwAOAFIAUgBTAFYAUwATAFYADwBSABAARwAPABAAUgBWAHkAUgB5ABAAVwB6ABMAVwAUAHoAEwB6ABQAVwARABQAVgATABYAEwAUABYAeQBWAFoAVgAWAFoAHQAQAHkASABHABAASAAQAB0AewBHAEgABwBHAHsAHQB5ABoAeQBaABoABwB7AEUAQAAHAEUAQABFAHwARAB8AEUAQAB8AEQAQABEAH0AQQBAAH0AQQB9AEQARgBFAHsARABFAEYAQQBEAH4ARgB7AH8AewBIAH8AQQB+ADIAMgB+AEQAQQAyADQAHgBEAEYAMgBEAB4ASQBGAH8AHgBGAEkAQwAyAB4ANAAyAEMANQBBADQAQwAeACQAJAAeAEkANABDAEIASgBDACQASgBCAEMAMQA0AEIANQA0ADEAgABCAEoAMQBCACoAgAAqAEIAPQAxACoAPgA1ADEAPQA+ADEAPgAzADUAgQA1ADMAgQAzAD4AgQBwADUAgQA9AHAAgQA+AIIAPQCCAD4AgQCCAD0APQAqADAALAAwACoAPQAwACwALAAqAIAAPQAsAIMAaQA9AIMAaQCDACwAaQAvAD0ALgAvAGkAaQAsAC0ALgBpAC0ALACAACkALAApACsALQAsACsAgAAmACkAgABKACYATgApACYATgArACkAJgBKACMAIwBKACQAJgAjAE0ATgAmAE0AIwAkACIAJABJACIATQAjAEwATAAjACIAIgBJAEsASQB/AEsATAAiAE8AIgBLAE8AfwCEAEsAfwBIAIQAhABIAB0AhACFAEsATwBLAIUAhAAdAFEAhABRAIUAUQAdABoATwCFAFAAhQAhAFAAIQBPAFAAhQBRACEAIQBMAE8AUQAaAF8AIQBRAF8AGgBbAF8AYABMACEATQBMAGAAGgBaAFsAYQBNAGAAYQBOAE0AYAAhACAAhgBhAGAAhgBgACAAIAAhABwAIQBfABwAIAAcAB8AGwAgAB8AHAAbAB8AGwCGACAAXwAZABwAHAAZABsAXwBbABkAFwCGABsAGQAXABsAFwAYAIYAGABhAIYAGQBeABcAWwBeABkAhwAYABcAXgCHABcAGAAlAGEAJQBOAGEAhwBiABgAYgAlABgAJQAnAE4AJwArAE4AYgBkACUAZAAnACUAKAArACcAZAAoACcAKACIACsALQArAIgALQCIACgAiQAoAGQALQAoAIkAZQBkAGIAiQBkAGUAZQBiAGMAYwBiAIcAcQCJAGUAZgBlAGMAZgBxAGUAZgBnAHEAcQBoAIkAaAAtAIkAbgBoAHEALgBoAG4AaACKAC0ALgAtAIoALgCKAGgAWQBnAGYAEgBnAFkAEgBZAIsAEgCLABEAEQCLAFkAWQBmAIwAEQBZAIwAZgBjAIwAEQCMAFgAEQBYABQAjABjAF0AjABdAFgAYwCHAF0AXgBdAIcAFgAUAFgAXABdAF4AXABYAF0AFgBYAFwAWwBcAF4AFgBcAI0AjQBcAFsAFgCNAI4AFgCOAFoAjQBbAI8AWwBaAI8AFQCOAI0AWgCOABUAFQCNAI8AjwBaABUA"),
"lods": [0.04496627, PackedByteArray("NgAEADcABAA2AAIAAAACADYAAAA2AAMAAAADAAEAAAABAAIANgAIAAMACAA2ADcABQADAAgABQABAAMABQAIADgABQA4ADkAOQA4AAgABQAGAAEABQA5AAYABgA6AAEABgA7ADoABgAJADsAOgA7AAkABgA5AAkAAQA6ADUAAQA1AAIACQAHADoAMwACADUAOQA8AAkAMwA9AAIAPgAzADUAMwA+AD0ACQA/AAcACQA8AD8AOgAHAEAANQA6AEAAPgA1ADEAPQA+ADEANQBAAEEANQA0ADEANQBBADQAMQA0AEIAMQBCACoAPQAxACoANABDAEIAQQAyADQANAAyAEMAQQBAAEQAQQBEADIAQABFAEQAQAAHAEUAMgBEAB4AQwAyAB4ARABFAEYAHgBEAEYABwBHAEUABwA/AEcARgBFAEgARQBHAEgAHgBGAEkASQBGAEgAQwAeACQAJAAeAEkASgBDACQASgBCAEMAKgBCAEoAIwBKACQAJABJACIAIwAkACIAIgBJAEsASQBIAEsATAAjACIAJgBKACMAKgBKACYAJgAjAE0ATQAjAEwAKgAmACkATgAmAE0ATgApACYATAAiAE8AIgBLAE8ATwBLAFAASABQAEsAIQBMAE8AIQBPAFAASABRAFAAUABRACEASAAdAFEASAAQAB0ASABHABAAUQAdABoAHQAQABoARwAPABAARwA/AA8APAAPAD8ADwBSABAAUgAaABAAPAAOAA8ADwAOAFIACwAOADwAOQALADwAUgAOAFMAOQAKAAsAOQAIAAoACwBUAA4AVABTAA4ACwAKAA0ACwANAFQACAAMAAoADAANAAoACABVAAwAVAANABMAUwBUABMACAA3AFUAUgBTAFYAUwATAFYAUgBWABoAVwATAA0ADABXAA0ADABVABEADAARAFcANwASAFUAEgARAFUAVwAUABMAVwARABQAEwAUABYAVgATABYAEQBYABQAFgAUAFgAEgBZABEAEQBZAFgAVgAWAFoAGgBWAFoAFgAVAFoAGgBaAFsAWwBaABUAFgBcABUAFgBYAFwAFQBcAFsAXABYAF0AWQBdAFgAWwBcAF4AXABdAF4AGgBbAF8AUQAaAF8AIQBRAF8AXwBbABkAWwBeABkAIQBfABwAXwAZABwAIAAhABwAGQBeABcAHAAZABsAGQAXABsAHAAbAB8AIAAcAB8AGwAgAB8AGwAYACAAFwAYABsAYAAhACAAGABgACAAYABMACEATQBMAGAAYQBNAGAAGABhAGAAYQBOAE0AYgAYABcAXgBiABcAGAAlAGEAJQBOAGEAYgAlABgAXgBdAGIAJQAnAE4AYwBiAF0AWQBjAF0AYgBkACUAZAAnACUAZQBiAGMAZQBkAGIAZgBjAFkAZgBlAGMAWQBnAGYAEgBnAFkANwBnABIANwAuAGcALgBmAGcABAAuADcAZgBoAGUAaABkAGUALgBoAGYAaAAoAGQAZAAoACcALgAtAGgALQAoAGgABAAvAC4ABAACAC8ALgBpAC0ALgAvAGkAAgA9AC8AaQAvAD0AKAArACcALQArACgAJwArAE4ATgArACkALQAsACsAaQAsAC0ALAApACsAPQAsAGkALAAqACkAPQAqADAALAAwACoAPQAwACwA"), 0.20663747, PackedByteArray("AAABAAIAAAADAAEAAAAEAAMAAAACAAQABQABAAMABQAGAAEABgAHAAEABQADAAgABAAIAAMABgAFAAkABwAGAAkABQAIAAoABQALAAkABQAKAAsACAAMAAoACAAEAAwACwAKAA0ADAANAAoACwAOAAkACwANAA4ACQAPAAcACQAOAA8ABwAPABAADwAOABAADAARAA0ABAASAAwAEgARAAwADgANABMADQARABQADQAUABMAFQAOABMAEAAOABUAEwAUABYAFQATABYAFgAUABUAEQAXABQAFQAUABcAEQAYABcAEgAYABEAGQAVABcAEAAVABoAGgAVABkAGQAXABsAFwAYABsAGgAZABwAHAAZABsAHQAQABoAHQAaABwAHgAQAB0AHgAHABAAHAAbAB8AGwAgAB8AIAAcAB8AGwAYACAAIQAdABwAIAAhABwAIgAdACEAIgAeAB0AIwAhACAAIwAiACEAGAAjACAAJAAeACIAIwAkACIAGAAlACMAEgAlABgAJgAkACMAJQAnACMAJwAmACMAJQAoACcAKAAlABIAJwApACYAKgAkACYAKgAmACkAJwArACkAKAArACcALAApACsALAAqACkALQArACgALQAsACsAEgAuACgALgAtACgABAAuABIALgAvAC0ABAAvAC4ALwAsAC0ABAACAC8ALAAwACoAMQAwACwAMQAsAC8AMQAqADAAAgAxAC8AKgAyACQAMQAyACoAMgAeACQAMwAxAAIAMQA0ADIAMwACADUAMQAzADUANQA0ADEANQAyADQANQAeADIAAQA1AAIABwAeADUAAQAHADUA")],
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 144,
"vertex_data": PackedByteArray("KkI8K97OAADbZ+YogNcAALw9dBT2iAAAGj2FNIDRAAAAAD9KE44AAMFNP0Zc3wAA22CsPrvjAAC607dyic0AAEk2rml7vgAA0IbMasD6AABzUYeUStMAAEdj6pTz6gAA+0EohEW4AAAMUUS7yNIAAHaF878A9gAAirBVsIvbAACEvGrBxcMAAP8ZEsdSlgAAlggvlqmIAACWXuHlmcgAAKks8OkonAAAIIL//2mNAACqZrf6QqcAAN1sZd6lEwAAimNuv/4CAAC5j0P9rEAAAGa1ut4slgAAmImY6tcXAAASwajh3jQAAPjDI8uKlgAA///pM3FqAADAtH7eziQAAEa/ecQdIAAAodcuxuc0AACV7p5s0z0AAOnKvmwSLQAAXe5YStBDAAC4V0yYAAAAAIqyzkZdJgAA730ZVEATAABlOGtt5QUAANmET0OIFwAAVZWaLEgmAACMZqdToCQAAGVfR0tSOwAAZjxrVP84AAA7BRZB4WkAAFYwkh/2cgAAiXDRKldMAAB9hRcIGmwAAFXrUiApagAAzosAAIKEAABF0CESKnEAADSWUwRamQAAFRsSSMStAADYAf9rEpEAAKVKN2V82QAAvVlJctbmAAAhl2hBKs0AAO58zUt06gAAhIOWlP//AADPY8oVBmgAAOOKewRVcgAASLoKmSjdAABTvAFJcbIAAH+7VhEqiwAA6saFJr4+AACU28Mn81AAAJTwm0nAlQAAQOPEaOy3AAD36wReE6MAADvPrpNdyAAA+NI+nsmUAADs87xqIlwAAGfEuTxoLwAAJeNWlrRrAADrygySeScAADKz8GyuKQAAa3afaCwaAACa7CiVUDwAADHi/K4hQQAAMNSJwbFpAAAYpRHLj9AAAMCCENqD3wAASXBVyGbnAACfKY6IaaAAAFOGJuuuyAAA9TwHxBS8AADHMF7eCmcAAGEWubZDcAAACofI+k+hAADnkLz/z2IAAHRn5vLLZgAARUdZ4ClCAAABW3bn7jMAAC2+buNMagAAncX7mMMkAAALk8OUeBcAALtF5L0FIAAAijRQxLg7AABESIyQtgMAAAsnAph2PgAA8CBUp81UAAAVFD2YHmUAAEgZl1qoOgAA5zZrNbRZAAB/Hqtd/qwAAPslQHhZpwAA/yNVNECiAABYHi0vMIUAAEUJLm3/aAAAWB+GLdRyAAAYZwML5Y4AAO0duYxhTQAAuWgFLVXaAAAEgnAWorgAAIqoklpN1AAA7ayiLqasAAD5uAJ0reEAAM5Op3+k1QAAWW/x1H7eAADxr9TVZ7MAAExG/+EyuAAADduJhR+xAAAR3KtVzq0AAMHKJzyboQAACODaKqCGAACP3I6KAJUAAF+Spi+6IwAAD3pFBsONAACien8JVXIAANNQHjIaVQAANdblo3x6AACk3K2vKF4AACiP6cPlDAAAjE5e0PwoAACaTadYYigAAF0jzmQRKQAAyxNsUr5IAADgE2K9GY8AAB8fLsPPZAAAYXhD+UFzAADIfpH/45gAAIyOhf+9awAA")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_sf63q"]
resource_name = "rock2_Cube_001"
_surfaces = [{
"aabb": AABB(-0.8691641, -1.0336405, -0.8410101, 1.7731525, 2.0458593, 1.8830655),
"format": 34896613383,
"index_count": 852,
"index_data": PackedByteArray("jwDmAOcAjwAFAOYAjwDnAAYAjwAGAAcACAAHAAYACAAGAJEABgDnAJAAkgCRAAYAkAAKAJMAkACTAOgABgCQAOgABgDoAJMABgCTAAkAkgAGAOkABgALAOkAkgDpAAsABgAMAAsAkgALAA0ADQALAA4ADwAOAAsADwCVAA4ADwAQAJUADwCUABAA6gAQAJQA6gDrABAADQAOAJcADQCXABMADQATAJgAlwAOABIAlwASAOwAlgASAA4AlgDtABIAlgARAO0AlgDuABEAmQANAJgAmQCYABQAFgCZABQAFgAUAJoAFQCZABYAFQCbAJkAAADvAAIAAAABAO8AAQADAO8AAQDwAAMA8QDvAAMA8QADAAQAnADyAB0AnAAeAPIAHADyAB4AHAAfAPIA8wAdAPIA8wDyAB8A8wAhAB0A8wAfACAA8wD0ACEA8wAgAPQAFwD1ABkAFwAbAPUAGgAZAPUAGgD1ABgA9gAjACQA9gD3ACMAQACtAPgAQAD5AK0AQQBAAPgAQQD4AKwA+ACtAPoArAD4AKsA+AD6AKsArACrADkA+gCtAPsAOQCrAPwAOQD8AP0A/ACrAKYApgCrAPoA/ACmAP4ApgD/AP4ApgD6AK4ApgCuAP8A+gD7AK4ArgAAAf8ArgABAQAB+wABAa4A+wA/AAEBoQApACoAoQACASkAogApAAIBoQCiAAIBogAuACkAogAyAC4AogADATIAMwAuADIAMwAyAAQBMwAEATQAMwA0ADUAoQAoAKIAKwAoAKEAKwAFASgAKwChACoAKwAqAAYBowAGASoAowAqAAcBKgAtAAcBKgAIAS0ALQAIAS8AKgAvAAgBLQAvADAAKgAxAC8AsgCzAAkBsgC1ALMAtgCyAAkBtgAJAQoBRQC1ALIARQBDALUACwGyALYARQCyAAsBCwG2AAwBRQALAQ0BQgALAQwBQgANAQsBsAA+ADoAsACvAD4ADgGwADoADgE6ADwAsQAOATwApwCwAA4BsQCpAA4BpwAOAakADwGnAKkADwGpAKoAOwAPAaoAOwCqAD0AOwCoAA8BOwAQAagAEQG4AEoAEQESAbgAEQG3ABIBuAASAbcAEQG8ALcATQC8ABEBTQATAbwATgC8ABMBTgC9ALwAvAC9AE8AvABPABQBTwBIABQBvAAUAUgATwAVAUgAvABIALcAtwBIALoAtwC6ABYBtwAWAbkAuAC3ABcBtwC5ABcBuAAXAbkAuAC5ABgBSwAYAbkASwC5AEkAGQEYAUsAGQFLAEwAGgEbAbsAGgEcARsBvgBSAL8AvgBRAFIAUAC+AL8AUAC/AB0BUwAdAb8AUwC/AMAAwAC/AB4BwAAeAVQAHgHBAFQAHgFVAMEAwQBVAMIAwQDCAMMAwQAfAVQAwQDDAB8BWgBUAB8BHwHDAMQAWgAfAVcAHwHEAFcAxwBaAFcAIAHEAFYAxQDEACABVwDEAMUAVwDFAMYAxgDFAFgAxgBYAFkAxwBXAMgAXADHAMgAXADIAFsAIQHHAFwAIQFcAMkA0QAhAckAIgHHACEB0QDQACEBIgEhAdAAXQDQANEAIgEjAccAXQDPANAAIgHKACMBygBfACMBygAkAV8AJQEiAdAAJQHKACIBzwAlAdAAJgEkAcoAJgHKACUBzwDNACUBzQAmASUBXgDNAM8AXgDOAM0AzQDMACYBYAAmAcwAYADLACYBYQDSAGMAYQBkANIAZADTANIAZABiANMAJwFmANUAJwFoAGYAZgBnANUAZgDZAGcAZwDZAGwAZwBsAG0A2gBnAG0A2gBtANsA1QBnANgA1QDYANcA1gDVANcA1gDUANUAKAHWANcAKAHXAGsAagDWACgBagBpANYAaQApAdYAaQBlACkBeADhAHoAeAB5AOEAKgErAXQAKgHeACsBKgHfAN4AKgFzAN8A3gDfAOAA3gDgAHUA4AB3AHUA4AB2AHcALAEtAdwALAEuAS0B3QAuASwB3QAsAW8AewB8AH0AewB+AHwAfwCAAIEAfwAvAYAAgwAvAX8AgwCCAC8BcABxAHIAcABuAHEAJwAwAaAAoAAwASUAnwAnAKAAnwAiACcAnQAiAJ8AnQAxASIAngAxAZ0AngCdACYApAClACwAMgE4AKUAMgGlADMBpAAzAaUAMgEzAaQAMgGkADQBNgA0AaQANgCkADcANQGFAOIA4gCFAIYARgBEAEcARgC0AEQA5ACLAIkA5ACKAIsAjACNAI4AjADlAI0A4wCEAIcA4wCIAIQA"),
"lods": [0.04496627, PackedByteArray("jwAFAJAABgCPAJAAjwAGAAcACAAHAAYACAAGAJEAkgCRAAYABgCQAJMAkAAKAJMABgCTAAkAkgAGAAsABgAMAAsAkgALAA0ACgAQAJQADwCUABAADwAQAJUADwCVAA4ADwAOAAsADQALAA4AlgAQABEAlgARABIAlgASAA4AlwAOABIADQAOAJcADQCXABMADQATAJgAmQANAJgAmQCYABQAFgCZABQAFgAUAJoAFQCZABYAFQCbAJkAAAABAAIAAQADAAIABAACAAMAFwAYABkAGgAZABgAFwAbABgAHACcAB4AHAAfAJwAHQCcAB8AHQAfACAAHQAgACEAIgAjACQAnQCeACIAngCdACYAnQAiAJ8AnwAiACcAnwAnAKAAJwAlAKAAoQApACoAogApAKEAogAuACkAoQAoAKIAKwAoAKEAKwChACoAKwAqAKMAKgAtAKMAogAyAC4AogAsADIAMwAuADIAMwAyADQAMwA0ADUAKgAvAC0ALQAvADAAKgAxAC8ApAClACwAOAClAKQAOACkADYANgCkADcApgCnAKgAqACnAKkAqACpAKoAOwCoAKoAOwCqAD0AOQCoADsAOQCrAKgAqACrAKYArACrADkArABAAKsAQACmAKsAQQBAAKwAQACtAKYApgCtAK4ApgCuAKcArQCvAK4ArQA/AK8ArgCwAKcArgCvALAApwCwAKkAsACvAD4AsQCpALAAsAA+ADoAsQCwADwAsAA6ADwAsgCzALQAsgC1ALMARQC1ALIARQBDALUARQCyAEIAQgCyALYAtgCyALQAtgC0AEYARgC0AEQARgBEAEcASgC3ALgAuABLAEwAuAC5AEsASwC5AEkAuAC3ALkAtwC6ALkAuQC6ALsAtwBIALoASgC8ALcAvABIALcATQC8AEoATwBIALwATgC8AE0AvAC9AE8ATgC9ALwAvgBSAL8AUAC+AL8AvgBRAFIAUAC/AFMAUwC/AMAAwAC/AFIAwABSAFQAUgDBAFQAUgBVAMEAwQBVAMIAwQDCAMMAwQBXAFQAwQDDAFcAVwDDAMQAWgBUAFcAVwDEAMUAxQDEAFYAVwDFAMYAxgDFAFgAxgBYAFkAxwBaAFcAxwBXAMgAXADHAMgAXADIAFsAyQDHAFwAygBaAMcAygDHAMkAygBfAFoAygDLAF8AYADLAMwAzADLAMoAzQDMAMoAXgDOAM0AXgDNAM8AzwDNAMoAzwDKANAAygDJANAAXQDPANAA0QDQAMkAXQDQANEAYQDSAGMAYQBkANIAZADTANIAZABiANMA1ABmANUA1ABoAGYAaQBlANQAaQDUANYA1gDUANUAagBpANYAagDWANcA1gDVANcAagDXAGsA1QDYANcA1QBnANgAZgBnANUAZgDZAGcAZwDZAGwAZwBsAG0A2gBnAG0A2gBtANsAbgDaANsAbgDbANwA3QDaAG4A3QBuAG8AcABuAHEAcABxAHIAcwBmAHQAcwDeAGYAcwDfAN4A3gDfAOAA3gDgAHUA4AB3AHUA4AB2AHcAeADhAHoAeAB5AOEAewB8AH0AewB+AHwAfwCAAIEAfwCCAIAAgwCCAH8AhACFAOIA4gCFAIYA4wCIAIQA4wCEAIcA5ACLAIkA5ACKAIsAjACNAI4AjADlAI0A"), 0.20663747, PackedByteArray("AAABAAIAAQADAAIABAACAAMABQAGAAcACAAHAAYABgAFAAkABQAKAAkACAAGAAsABgAMAAsACAALAA0ADQALAA4ADwAOAAsACgAQAA8ADwAQAA4ADgAQABEADgARABIAEwAOABIADQAOABMADQATABQAFQANABQAFgAVABQAFwAYABkAGgAZABgAFwAbABgAHAAdAB4AHAAfAB0AHQAfACAAHQAgACEAIgAjACQAJQAmACIAJQAiACcAKAApACoAKwAoACoALAApACgAKwAqAC0ALAAuACkAKgAvAC0ALQAvADAAKgAxAC8ALAAyAC4AMwAuADIAMwAyADQAMwA0ADUANgAsADcAOAAsADYAOQA6ADsAOwA6ADwAOwA8AD0AOQA+ADoAPwA+ADkAOQBAAD8AQQBAADkAQgBDAEQARQBDAEIARgBCAEQARgBEAEcASABJAEoASgBJAEsASgBLAEwATQBIAEoATgBIAE0ASABOAE8AUABRAFIAUABSAFMAUwBSAFQAUgBVAFQAVABVAFYAVABWAFcAVwBWAFgAVwBYAFkAWgBUAFcAWgBXAFsAXABaAFsAXQBaAFwAXQBeAFoAXgBfAFoAXgBgAF8AYQBiAGMAYQBkAGIAZQBmAGcAZQBoAGYAaQBlAGcAagBpAGcAagBnAGsAZgBsAGcAZwBsAG0AZwBtAG4AZwBuAG8AcABuAHEAcABxAHIAcwBmAHQAcwB1AGYAcwB2AHUAdgB3AHUAeAB5AHoAewB8AH0AewB+AHwAfwCAAIEAfwCCAIAAgwCCAH8AhACFAIYAhwCIAIQAiQCKAIsAjACNAI4A")],
"material": SubResource("StandardMaterial3D_80fwj"),
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 310,
"vertex_data": PackedByteArray("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")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_xjipq")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_am2a4"]
render_priority = 0
shader = ExtResource("6_grv42")
shader_parameter/albedo_color = Color(1, 1, 1, 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
[node name="Chunck_M_N-O-E-S1" unique_id=515911998 instance=ExtResource("1_anh2f")]
script = ExtResource("2_2wsw6")
altezza_nord = 1
altezza_est = 1
altezza_sud = 1
altezza_ovest = 1
[node name="Chunk_059" parent="." index="0" unique_id=2099343421]
surface_material_override/0 = ExtResource("3_grv42")
[node name="Orto_Big_003" parent="." index="1" unique_id=1086972900]
visible = false
material_override = ExtResource("4_0s706")
[node name="Orto_Big_004" parent="." index="2" unique_id=802928204]
visible = false
material_override = ExtResource("4_0s706")
[node name="Orto_Big_006" parent="." index="4" unique_id=1448199652]
visible = false
material_override = ExtResource("5_e6288")
[node name="Orto_Big_007" parent="." index="5" unique_id=891591826]
visible = false
material_override = ExtResource("4_0s706")
[node name="Orto_Big_008" parent="." index="6" unique_id=1331556355]
visible = false
[node name="Orto_Big_009" parent="." index="7" unique_id=1202989086]
visible = false
material_override = ExtResource("5_e6288")
[node name="Orto_Big_010" parent="." index="8" unique_id=1821355826]
visible = false
material_override = ExtResource("4_0s706")
[node name="Orto_Big_011" parent="." index="9" unique_id=611082346]
visible = false
[node name="rock17" type="MeshInstance3D" parent="." index="10" unique_id=1326861948]
transform = Transform3D(8.425, 0, 0, 0, 28.28, 0, 0, 0, 8.425, 0, 3.0042515, -0.34401035)
material_override = SubResource("ShaderMaterial_e6288")
mesh = SubResource("ArrayMesh_sf63q")
skeleton = NodePath("")
surface_material_override/0 = SubResource("ShaderMaterial_am2a4")
[node name="rock18" type="MeshInstance3D" parent="." index="11" unique_id=321722626]
transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, 4.6011515, 3.0042515, 4.2182083)
material_override = SubResource("ShaderMaterial_e6288")
mesh = SubResource("ArrayMesh_sf63q")
skeleton = NodePath("")
surface_material_override/0 = SubResource("ShaderMaterial_am2a4")
[node name="rock19" type="MeshInstance3D" parent="." index="12" unique_id=1217722920]
transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, 4.9510026, 3.0042515, -1.9219375)
material_override = SubResource("ShaderMaterial_e6288")
mesh = SubResource("ArrayMesh_sf63q")
skeleton = NodePath("")
surface_material_override/0 = SubResource("ShaderMaterial_am2a4")
[node name="rock20" type="MeshInstance3D" parent="." index="13" unique_id=1505508041]
transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, 1.9908776, 3.0042515, -4.2711177)
material_override = SubResource("ShaderMaterial_e6288")
mesh = SubResource("ArrayMesh_sf63q")
skeleton = NodePath("")
surface_material_override/0 = SubResource("ShaderMaterial_am2a4")
[node name="rock21" type="MeshInstance3D" parent="." index="14" unique_id=369205689]
transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, -4.7941666, 3.0042515, -4.4119973)
material_override = SubResource("ShaderMaterial_e6288")
mesh = SubResource("ArrayMesh_sf63q")
skeleton = NodePath("")
surface_material_override/0 = SubResource("ShaderMaterial_am2a4")
[node name="rock22" type="MeshInstance3D" parent="." index="15" unique_id=406332215]
transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, -4.748951, 3.0042515, 1.0487113)
material_override = SubResource("ShaderMaterial_e6288")
mesh = SubResource("ArrayMesh_sf63q")
skeleton = NodePath("")
surface_material_override/0 = SubResource("ShaderMaterial_am2a4")
[node name="rock23" type="MeshInstance3D" parent="." index="16" unique_id=1395308700]
transform = Transform3D(2.7808597, 1.4774096, 3.845124, -4.0206614, -0.035087757, 2.9212925, 0.8955459, -4.7452006, 1.1755714, -4.718422, 3.0042515, 4.200246)
material_override = SubResource("ShaderMaterial_e6288")
mesh = SubResource("ArrayMesh_sf63q")
skeleton = NodePath("")
surface_material_override/0 = SubResource("ShaderMaterial_am2a4")

View File

@@ -0,0 +1,51 @@
extends Node3D
class_name InfoChunk
@export_enum("Bioma", "Binario_Dritto", "Binario_Curva") var tipo_chunk: int = 0
@export_group("Regole Set Piece (Pezzi Unici)")
@export var bioma_esclusivo: String = "" # Es: scrivi "Foresta"
@export_group("Uscite Base (Senza Rotazione)")
@export var nord: bool = false
@export var est: bool = false
@export var sud: bool = false
@export var ovest: bool = false
@export_group("Altitudini Bordi (Livelli 0, 1, 2)")
@export var altezza_nord: int = 0
@export var altezza_est: int = 0
@export var altezza_sud: int = 0
@export var altezza_ovest: int = 0
# --- NUOVA AGGIUNTA AUTOMATICA ---
func _ready() -> void:
# Se hai scritto un bioma nell'Inspector, il pezzo capisce di essere
# un pezzo speciale e si aggiunge al gruppo dei fantasmi da solo!
if bioma_esclusivo != "":
add_to_group("set_pieces")
# ... qui sotto continua la tua normale funzione get_dati_ruotati() ...
func get_dati_ruotati(scatti_90_gradi: int) -> Dictionary:
var uscite_originali = [nord, est, sud, ovest]
var altezze_originali = [altezza_nord, altezza_est, altezza_sud, altezza_ovest]
var uscite_calcolate = []
var altezze_calcolate = []
for i in range(4):
var indice = (i - scatti_90_gradi + 4) % 4
uscite_calcolate.append(uscite_originali[indice])
altezze_calcolate.append(altezze_originali[indice])
return {
"connessioni": {
"nord": uscite_calcolate[0], "est": uscite_calcolate[1],
"sud": uscite_calcolate[2], "ovest": uscite_calcolate[3]
},
"altezze": {
"nord": altezze_calcolate[0], "est": altezze_calcolate[1],
"sud": altezze_calcolate[2], "ovest": altezze_calcolate[3]
}
}

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cwfjkujogfhm7"
path.s3tc="res://.godot/imported/rock_color.png-429338834323b73eb96ccc49093ebaf5.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://docs/museums/daynight/scenes/mountain_test/rock_color.png"
dest_files=["res://.godot/imported/rock_color.png-429338834323b73eb96ccc49093ebaf5.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

View File

@@ -0,0 +1,4 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://d1xcve6aswe3d"]
[resource]
albedo_color = Color(0.4964038, 0.3703512, 0.09901195, 1)

View File

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

View File

@@ -0,0 +1,23 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://bu8wmlp0ffark"]
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="1_gtyqp"]
[resource]
render_priority = 0
shader = ExtResource("1_gtyqp")
shader_parameter/albedo_color = Color(0.40934297, 0.38911393, 0.34586716, 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 = 5.0
shader_parameter/light_steps = 5.0
shader_parameter/step_softness = 0.00999999977648
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