From 5ea83b06ed26244f230af3ce4fb4b9d59c814a6a Mon Sep 17 00:00:00 2001 From: Rijad Zuzo Date: Wed, 8 Jul 2026 18:49:23 +0200 Subject: [PATCH] feat: directional wind breeze and painted-terrain Ghibli styling - Wind strokes now flow in a single prevailing direction (left-to-right breeze) with gentle flatness, narrow spread, and subtle tangential sway - Added floating white specks (WindSpecks) as sunlight pollen/dust motes - Two of each emitter (valley + ridge) for layered atmosphere - Terrain: disabled auto_base_texture for flatter painted look, enabled overlay texture, bolder macro-variation (yellow-green 0.78/0.90/0.42 and emerald 0.55/0.75/0.38), sharper material blends --- world/jajce/JajceWorld.tscn | 21 +++++++++++-------- world/jajce/WindSpecks.tscn | 37 ++++++++++++++++++++++++++++++++++ world/jajce/WindStrokes.tscn | 39 ++++++++++++++++++------------------ 3 files changed, 70 insertions(+), 27 deletions(-) create mode 100644 world/jajce/WindSpecks.tscn diff --git a/world/jajce/JajceWorld.tscn b/world/jajce/JajceWorld.tscn index 65d4e5e..586e404 100644 --- a/world/jajce/JajceWorld.tscn +++ b/world/jajce/JajceWorld.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=40 format=3] +[gd_scene load_steps=41 format=3] [ext_resource type="Terrain3DAssets" path="res://terrain/jajce/assets.tres" id="1_assets"] [ext_resource type="PackedScene" path="res://world/resource_nodes/ResourceNode.tscn" id="2_resource"] @@ -17,17 +17,18 @@ [ext_resource type="Script" path="res://world/activity/ActivitySite.gd" id="15_activity"] [ext_resource type="NavigationMesh" path="res://world/jajce/JajceNavigationMesh.tres" id="16_nav"] [ext_resource type="PackedScene" path="res://world/jajce/WindStrokes.tscn" id="19_windstrokes"] +[ext_resource type="PackedScene" path="res://world/jajce/WindSpecks.tscn" id="20_windspecks"] [sub_resource type="Terrain3DMaterial" id="Terrain3DMaterial_jajce"] _shader_parameters = { -"auto_base_texture": 1, -"auto_overlay_texture": 0, -"auto_slope": 0.68, -"blend_sharpness": 0.78, +"auto_base_texture": 0, +"auto_overlay_texture": 1, +"auto_slope": 0.62, +"blend_sharpness": 0.88, "enable_macro_variation": true, -"macro_variation1": Color(0.84, 0.92, 0.55, 1), -"macro_variation2": Color(0.62, 0.78, 0.48, 1), -"macro_variation_slope": 0.42 +"macro_variation1": Color(0.78, 0.9, 0.42, 1), +"macro_variation2": Color(0.55, 0.75, 0.38, 1), +"macro_variation_slope": 0.48 } world_background = 0 auto_shader = true @@ -606,6 +607,10 @@ directional_shadow_max_distance = 180.0 [node name="WindStrokes_Ridge" parent="." instance=ExtResource("19_windstrokes")] +[node name="WindSpecks_Valley" parent="." instance=ExtResource("20_windspecks")] + +[node name="WindSpecks_Ridge" parent="." instance=ExtResource("20_windspecks")] + [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_greybox") diff --git a/world/jajce/WindSpecks.tscn b/world/jajce/WindSpecks.tscn new file mode 100644 index 0000000..53ce22e --- /dev/null +++ b/world/jajce/WindSpecks.tscn @@ -0,0 +1,37 @@ +[gd_scene load_steps=4 format=3] + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_specks"] +lifetime_randomness = 0.8 +spread = 120.0 +flatness = 0.5 +gravity = Vector3(-0.35, 0.25, 0.0) +initial_velocity_min = 0.2 +initial_velocity_max = 1.2 +scale_min = 0.06 +scale_max = 0.28 +color = Color(1, 0.98, 0.9, 0.3) +color_ramp = 1 +emission_shape = 1 +emission_box_extents = Vector3(32.0, 14.0, 32.0) + +[sub_resource type="StandardMaterial3D" id="Material_speck"] +albedo_color = Color(1, 0.98, 0.92, 0.3) +transparency = 1 +shading_mode = 0 +billboard_mode = 1 +cull_mode = 0 + +[sub_resource type="QuadMesh" id="Mesh_speck"] +material = SubResource("Material_speck") +size = Vector2(0.12, 0.12) + +[node name="WindSpecks" type="GPUParticles3D"] +emitting = true +amount = 40 +lifetime = 6.0 +one_shot = false +preprocess = 4.0 +speed_scale = 1.0 +local_coords = false +process_material = SubResource("ParticleProcessMaterial_specks") +draw_pass_1 = SubResource("Mesh_speck") diff --git a/world/jajce/WindStrokes.tscn b/world/jajce/WindStrokes.tscn index 30d2231..84ba6c7 100644 --- a/world/jajce/WindStrokes.tscn +++ b/world/jajce/WindStrokes.tscn @@ -7,32 +7,33 @@ shader = ExtResource("1_shader") [sub_resource type="QuadMesh" id="Mesh_stroke"] material = SubResource("ShaderMaterial_stroke") -size = Vector2(1.8, 0.18) +size = Vector2(2.4, 0.14) [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_wind"] -lifetime_randomness = 0.5 -spread = 160.0 -gravity = Vector3(0, 0.15, 0) -initial_velocity_min = 0.6 -initial_velocity_max = 2.5 -angular_velocity_min = -0.6 -angular_velocity_max = 0.6 -radial_accel_min = -0.2 -radial_accel_max = 0.2 -tangential_accel_min = -0.3 -tangential_accel_max = 0.3 -scale_min = 0.5 -scale_max = 1.5 -color = Color(1, 1, 1, 0.5) +lifetime_randomness = 0.6 +spread = 55.0 +flatness = 0.7 +gravity = Vector3(-0.6, 0.35, 0.0) +initial_velocity_min = 0.8 +initial_velocity_max = 2.8 +angular_velocity_min = -0.25 +angular_velocity_max = 0.25 +radial_accel_min = 0.0 +radial_accel_max = 0.0 +tangential_accel_min = -0.08 +tangential_accel_max = 0.08 +scale_min = 0.3 +scale_max = 1.2 +color = Color(1, 1, 1, 0.35) emission_shape = 1 -emission_box_extents = Vector3(35.0, 10.0, 35.0) +emission_box_extents = Vector3(28.0, 8.0, 28.0) [node name="WindStrokes" type="GPUParticles3D"] emitting = true -amount = 18 -lifetime = 4.0 +amount = 24 +lifetime = 5.0 one_shot = false -preprocess = 2.0 +preprocess = 3.0 speed_scale = 1.0 local_coords = false process_material = SubResource("ParticleProcessMaterial_wind")