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
+3 -27
View File
@@ -1,30 +1,6 @@
[gd_scene load_steps=5 format=3]
[gd_scene load_steps=2 format=3]
[sub_resource type="StandardMaterial3D" id="Material_trunk"]
albedo_color = Color(0.27, 0.16, 0.09, 1)
roughness = 0.95
[sub_resource type="CylinderMesh" id="Mesh_trunk"]
material = SubResource("Material_trunk")
top_radius = 0.22
bottom_radius = 0.32
height = 2.8
[sub_resource type="StandardMaterial3D" id="Material_canopy"]
albedo_color = Color(0.19, 0.38, 0.17, 1)
roughness = 0.9
[sub_resource type="SphereMesh" id="Mesh_canopy"]
material = SubResource("Material_canopy")
radius = 1.35
height = 2.4
[ext_resource type="Script" path="res://world/jajce/StylizedTree.gd" id="1_script"]
[node name="StylizedTree" type="Node3D"]
[node name="Trunk" type="MeshInstance3D" parent="."]
position = Vector3(0, 1.4, 0)
mesh = SubResource("Mesh_trunk")
[node name="Canopy" type="MeshInstance3D" parent="."]
position = Vector3(0, 3.2, 0)
mesh = SubResource("Mesh_canopy")
script = ExtResource("1_script")