WIP: feat(scene) initial beauty baseline — terrain textures, sky, foam, mist, foliage, shadows

- Add 3 Terrain3D texture assets (limestone, valley grass, warm soil)
- Sculpt initial Terrain3D heightmap with ridge, valley, waterfall drop
- Replace plain water with emissive-tinged material
- Add foam mesh, mist spheres, and procedural sky with valley fog
- Add 10 StylizedTree instances around village perimeter
- Enable directional light shadows with extended cascade range
- Add tree height snapping to terrain surface
- Add refined scaffold tests for material count, terrain height, foliage, sky, fog
- Add terrain texture PNGs and StylizedTree.tscn scene
- Add generate_jajce_terrain.gd tool
This commit is contained in:
2026-07-05 20:05:44 +02:00
parent f12fb6ad78
commit 6c11dc5dd6
17 changed files with 468 additions and 12 deletions
+119 -9
View File
@@ -1,10 +1,21 @@
[gd_scene load_steps=21 format=3]
[gd_scene load_steps=27 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"]
[ext_resource type="Script" path="res://world/jajce/jajce_world.gd" id="3_world"]
[ext_resource type="PackedScene" path="res://world/jajce/StylizedTree.tscn" id="4_tree"]
[sub_resource type="Terrain3DMaterial" id="Terrain3DMaterial_jajce"]
_shader_parameters = {
"auto_base_texture": 1,
"auto_overlay_texture": 0,
"auto_slope": 0.72,
"blend_sharpness": 0.82,
"enable_macro_variation": true,
"macro_variation1": Color(0.9, 0.94, 0.82, 1),
"macro_variation2": Color(0.76, 0.81, 0.7, 1),
"macro_variation_slope": 0.38
}
world_background = 0
auto_shader = true
@@ -22,8 +33,13 @@ albedo_color = Color(0.34, 0.31, 0.27, 1)
albedo_color = Color(0.42, 0.5, 0.29, 1)
[sub_resource type="StandardMaterial3D" id="Material_water"]
albedo_color = Color(0.16, 0.43, 0.62, 0.78)
albedo_color = Color(0.12, 0.39, 0.55, 0.72)
transparency = 1
metallic = 0.18
roughness = 0.12
emission_enabled = true
emission = Color(0.05, 0.19, 0.24, 1)
emission_energy_multiplier = 0.45
[sub_resource type="StandardMaterial3D" id="Material_building"]
albedo_color = Color(0.62, 0.48, 0.32, 1)
@@ -63,12 +79,51 @@ size = Vector3(8, 0.5, 3)
material = SubResource("Material_water")
size = Vector3(5, 10, 0.5)
[sub_resource type="StandardMaterial3D" id="Material_foam"]
albedo_color = Color(0.82, 0.94, 0.94, 0.85)
transparency = 1
roughness = 0.25
emission_enabled = true
emission = Color(0.36, 0.52, 0.54, 1)
emission_energy_multiplier = 0.35
[sub_resource type="BoxMesh" id="Mesh_foam"]
material = SubResource("Material_foam")
size = Vector3(5.5, 0.12, 2.2)
[sub_resource type="StandardMaterial3D" id="Material_mist"]
albedo_color = Color(0.82, 0.91, 0.92, 0.16)
transparency = 1
shading_mode = 0
[sub_resource type="SphereMesh" id="Mesh_mist"]
material = SubResource("Material_mist")
radius = 2.8
height = 4.0
[sub_resource type="ProceduralSkyMaterial" id="SkyMaterial_jajce"]
sky_top_color = Color(0.23, 0.43, 0.62, 1)
sky_horizon_color = Color(0.82, 0.68, 0.5, 1)
ground_bottom_color = Color(0.12, 0.17, 0.12, 1)
ground_horizon_color = Color(0.62, 0.55, 0.42, 1)
sun_angle_max = 18.0
[sub_resource type="Sky" id="Sky_jajce"]
sky_material = SubResource("SkyMaterial_jajce")
[sub_resource type="Environment" id="Environment_greybox"]
background_mode = 1
background_color = Color(0.55, 0.72, 0.82, 1)
ambient_light_source = 2
ambient_light_color = Color(1, 0.9, 0.78, 1)
ambient_light_energy = 0.55
background_mode = 2
sky = SubResource("Sky_jajce")
ambient_light_source = 3
ambient_light_color = Color(0.88, 0.83, 0.73, 1)
ambient_light_energy = 0.62
reflected_light_source = 2
tonemap_mode = 2
fog_enabled = true
fog_light_color = Color(0.7, 0.76, 0.74, 1)
fog_light_energy = 0.65
fog_density = 0.0025
fog_sky_affect = 0.35
[node name="JajceWorld" type="Node3D"]
script = ExtResource("3_world")
@@ -89,6 +144,7 @@ top_level = true
[node name="GreyboxGround" type="StaticBody3D" parent="NavigationRegion3D"]
[node name="Mesh" type="MeshInstance3D" parent="NavigationRegion3D/GreyboxGround"]
visible = false
mesh = SubResource("Mesh_ground")
[node name="Collision" type="CollisionShape3D" parent="NavigationRegion3D/GreyboxGround"]
@@ -115,13 +171,27 @@ mesh = SubResource("Mesh_terrace")
[node name="WaterRoot" type="Node3D" parent="."]
[node name="RiverGreybox" type="MeshInstance3D" parent="WaterRoot"]
position = Vector3(25, 0.08, 0)
position = Vector3(25, 0.12, 0)
mesh = SubResource("Mesh_river")
[node name="WaterfallGreybox" type="MeshInstance3D" parent="WaterRoot"]
position = Vector3(25, 5, -24)
mesh = SubResource("Mesh_waterfall")
[node name="WaterfallFoam" type="MeshInstance3D" parent="WaterRoot"]
position = Vector3(25, 0.22, -20.5)
mesh = SubResource("Mesh_foam")
[node name="Mist_01" type="MeshInstance3D" parent="WaterRoot"]
position = Vector3(24, 1.7, -20)
scale = Vector3(1.5, 0.55, 1)
mesh = SubResource("Mesh_mist")
[node name="Mist_02" type="MeshInstance3D" parent="WaterRoot"]
position = Vector3(27, 2.2, -22)
scale = Vector3(1.1, 0.4, 0.8)
mesh = SubResource("Mesh_mist")
[node name="VillageRoot" type="Node3D" parent="."]
[node name="House_01" type="MeshInstance3D" parent="VillageRoot"]
@@ -146,6 +216,44 @@ mesh = SubResource("Mesh_bridge")
[node name="FoliageRoot" type="Node3D" parent="."]
[node name="Tree_West_01" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-33, 0, -15)
scale = Vector3(1.25, 1.25, 1.25)
[node name="Tree_West_02" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-29, 0, -21)
scale = Vector3(0.9, 0.9, 0.9)
[node name="Tree_West_03" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-38, 0, 2)
scale = Vector3(1.4, 1.4, 1.4)
[node name="Tree_North_01" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-2, 0, 25)
[node name="Tree_North_02" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(7, 0, 28)
scale = Vector3(1.2, 1.2, 1.2)
[node name="Tree_North_03" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(15, 0, 24)
scale = Vector3(0.85, 0.85, 0.85)
[node name="Tree_South_01" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-16, 0, -27)
scale = Vector3(1.15, 1.15, 1.15)
[node name="Tree_South_02" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-4, 0, -30)
[node name="Tree_River_01" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(19, 0, 18)
scale = Vector3(0.9, 0.9, 0.9)
[node name="Tree_River_02" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(31, 0, 14)
scale = Vector3(1.25, 1.25, 1.25)
[node name="WorldObjects" type="Node3D" parent="."]
[node name="ResourceNodes" type="Node3D" parent="WorldObjects"]
@@ -192,7 +300,9 @@ position = Vector3(4, 0, 5)
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
rotation_degrees = Vector3(-55, -35, 0)
light_color = Color(1, 0.87, 0.72, 1)
light_energy = 1.25
light_energy = 1.45
shadow_enabled = true
directional_shadow_max_distance = 180.0
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_greybox")