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")])
Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://e0ahjmsbpagw"
path="res://.godot/imported/compacted_ground_albedo.png-853b290b9071b670529ac36a7c0f1085.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://terrain/jajce/textures/compacted_ground_albedo.png"
dest_files=["res://.godot/imported/compacted_ground_albedo.png-853b290b9071b670529ac36a7c0f1085.ctex"]
[params]
compress/mode=0
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=false
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=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ca7nmo3t6rhtj"
path="res://.godot/imported/dirt_path_albedo.png-5b614f109c8e7fb434df75c19c11f4e0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://terrain/jajce/textures/dirt_path_albedo.png"
dest_files=["res://.godot/imported/dirt_path_albedo.png-5b614f109c8e7fb434df75c19c11f4e0.ctex"]
[params]
compress/mode=0
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=false
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=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bsl74sdmhj270"
path="res://.godot/imported/riverbank_stone_albedo.png-397520344cf47d44b72a984365941d39.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://terrain/jajce/textures/riverbank_stone_albedo.png"
dest_files=["res://.godot/imported/riverbank_stone_albedo.png-397520344cf47d44b72a984365941d39.ctex"]
[params]
compress/mode=0
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=false
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=1