WIP: feat(scene) integrate beauty pass — shader water, building blockouts, wind, smoke, 6 textures

- Add 3 missing Terrain3D textures: Dirt Path (id=3), Riverbank Stone (id=4),
  Compacted Ground (id=5) with procedural albedo PNGs + generate tool
- Replace greybox river BoxMesh with animated vertex-displacement water shader
- Replace greybox waterfall BoxMesh with scrolling-UV waterfall shader
- Add WaterfallMist GPUParticles3D with upward drift and alpha fade
- Add wind vertex shader for tree canopies (sin-based, height-weighted sway)
- Replace StylizedTree.tscn with script-driven procedural tree supporting
  3 canopy color variants and position-based randomization
- Replace greybox house boxes with StylizedHouse (walls + pitched roof + door)
- Replace mill box with StylizedMill (body + roof + water wheel cylinder)
- Replace fortress box with FortressBlockout (keep + parapet + corner turret)
- Replace bridge box with BridgeBlockout (deck + pillar supports)
- Add ChimneySmoke GPUParticles3D on each house roof
- Height-snap buildings (fortress + village) to terrain surface in _ready()
- Update JajceWorld.tscn: remove all greybox landmark sub-resources, instance
  new scenes, keep terrain/navigation/sky/fog as-is
- Update scaffold test for new scene structure and beauty elements
This commit is contained in:
2026-07-05 20:10:45 +02:00
parent 6c11dc5dd6
commit 22613a445e
29 changed files with 669 additions and 169 deletions
+34 -2
View File
@@ -1,10 +1,15 @@
[gd_resource type="Terrain3DAssets" load_steps=7 format=3]
[gd_resource type="Terrain3DAssets" load_steps=13 format=3]
[ext_resource type="Texture2D" path="res://terrain/jajce/textures/rock_albedo.png" id="1_rock"]
[ext_resource type="Texture2D" path="res://terrain/jajce/textures/grass_albedo.png" id="2_grass"]
[ext_resource type="Texture2D" path="res://terrain/jajce/textures/soil_albedo.png" id="3_soil"]
[ext_resource type="Texture2D" path="res://terrain/jajce/textures/dirt_path_albedo.png" id="4_dirt"]
[ext_resource type="Texture2D" path="res://terrain/jajce/textures/riverbank_stone_albedo.png" id="5_river"]
[ext_resource type="Texture2D" path="res://terrain/jajce/textures/compacted_ground_albedo.png" id="6_compact"]
[sub_resource type="Terrain3DTextureAsset" id="Texture_rock"]
name = "Limestone"
id = 0
albedo_texture = ExtResource("1_rock")
normal_texture = ExtResource("1_rock")
normal_depth = 0.0
@@ -29,5 +34,32 @@ normal_depth = 0.0
uv_scale = 0.2
detiling_rotation = 0.1
[sub_resource type="Terrain3DTextureAsset" id="Texture_dirt"]
name = "Dirt Path"
id = 3
albedo_texture = ExtResource("4_dirt")
normal_texture = ExtResource("4_dirt")
normal_depth = 0.0
uv_scale = 0.22
detiling_rotation = 0.08
[sub_resource type="Terrain3DTextureAsset" id="Texture_river"]
name = "Riverbank Stone"
id = 4
albedo_texture = ExtResource("5_river")
normal_texture = ExtResource("5_river")
normal_depth = 0.0
uv_scale = 0.12
detiling_rotation = 0.15
[sub_resource type="Terrain3DTextureAsset" id="Texture_compact"]
name = "Compacted Ground"
id = 5
albedo_texture = ExtResource("6_compact")
normal_texture = ExtResource("6_compact")
normal_depth = 0.0
uv_scale = 0.2
detiling_rotation = 0.08
[resource]
texture_list = Array[Terrain3DTextureAsset]([SubResource("Texture_rock"), SubResource("Texture_grass"), SubResource("Texture_soil")])
texture_list = Array[Terrain3DTextureAsset]([SubResource("Texture_rock"), SubResource("Texture_grass"), SubResource("Texture_soil"), SubResource("Texture_dirt"), SubResource("Texture_river"), SubResource("Texture_compact")])