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:
@@ -9,7 +9,14 @@ func _initialize_world_presentation() -> void:
|
||||
var active_camera := get_viewport().get_camera_3d()
|
||||
if active_camera != null:
|
||||
terrain.set_camera(active_camera)
|
||||
for tree in $FoliageRoot.get_children():
|
||||
var terrain_height: float = terrain.data.get_height(tree.global_position)
|
||||
if not is_nan(terrain_height):
|
||||
tree.global_position.y = terrain_height
|
||||
var groups_to_snap: Array[Node] = []
|
||||
groups_to_snap.append_array($FoliageRoot.get_children())
|
||||
if has_node("FortressBlockout"):
|
||||
groups_to_snap.append($FortressBlockout)
|
||||
for child in $VillageRoot.get_children():
|
||||
groups_to_snap.append(child)
|
||||
for item in groups_to_snap:
|
||||
var pos := item.global_position
|
||||
var h: float = terrain.data.get_height(pos)
|
||||
if not is_nan(h):
|
||||
item.global_position.y = h
|
||||
|
||||
Reference in New Issue
Block a user