feat: implemented terrain shader

This commit is contained in:
Sara Gerretsen 2025-11-20 23:33:21 +01:00
parent f5a78e10c7
commit b875c2089b
5 changed files with 198 additions and 51 deletions

View file

@ -1,29 +1,7 @@
[gd_scene load_steps=14 format=3 uid="uid://xm383pc5pcnn"]
[gd_scene load_steps=13 format=3 uid="uid://xm383pc5pcnn"]
[ext_resource type="PackedScene" uid="uid://cnux2fqne284i" path="res://objects/primitive_nodes/point_primitive_node.tscn" id="1_b1cmn"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_sldah"]
sky_top_color = Color(0.22, 0.3575, 0.55, 1)
sky_horizon_color = Color(0.662243, 0.671743, 0.686743, 1)
ground_bottom_color = Color(0.167133, 0.2, 0.132, 1)
ground_horizon_color = Color(0.662243, 0.671743, 0.686743, 1)
[sub_resource type="Sky" id="Sky_b1cmn"]
sky_material = SubResource("ProceduralSkyMaterial_sldah")
[sub_resource type="Environment" id="Environment_pxqd5"]
background_mode = 2
sky = SubResource("Sky_b1cmn")
ambient_light_source = 2
ambient_light_color = Color(0.2546, 0.27132, 0.38, 1)
tonemap_mode = 2
glow_enabled = true
volumetric_fog_density = 0.0
volumetric_fog_emission_energy = 1024.0
volumetric_fog_length = 831.81
volumetric_fog_detail_spread = 0.5
volumetric_fog_sky_affect = 0.904
volumetric_fog_temporal_reprojection_amount = 0.99
[ext_resource type="Material" uid="uid://8j7uyk0vnllg" path="res://assets/materials/terrain_material.tres" id="1_pxqd5"]
[sub_resource type="PointPrimitive" id="PointPrimitive_pxqd5"]
slope = -0.585
@ -55,8 +33,28 @@ interpolation_color_space = 2
offsets = PackedFloat32Array(0.0743595, 0.315422, 0.678597, 0.725377)
colors = PackedColorArray(0.17652, 0.24, 0.0744, 1, 0.129706, 0.117486, 0.129714, 1, 0.216666, 0.201746, 0.216677, 1, 0.786852, 0.768096, 0.786791, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_b1cmn"]
vertex_color_use_as_albedo = true
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_sldah"]
sky_top_color = Color(0.22, 0.3575, 0.55, 1)
sky_horizon_color = Color(0.662243, 0.671743, 0.686743, 1)
ground_bottom_color = Color(0.167133, 0.2, 0.132, 1)
ground_horizon_color = Color(0.662243, 0.671743, 0.686743, 1)
[sub_resource type="Sky" id="Sky_b1cmn"]
sky_material = SubResource("ProceduralSkyMaterial_sldah")
[sub_resource type="Environment" id="Environment_pxqd5"]
background_mode = 2
sky = SubResource("Sky_b1cmn")
ambient_light_source = 2
ambient_light_color = Color(0.2546, 0.27132, 0.38, 1)
tonemap_mode = 2
glow_enabled = true
volumetric_fog_density = 0.0
volumetric_fog_emission_energy = 1024.0
volumetric_fog_length = 831.81
volumetric_fog_detail_spread = 0.5
volumetric_fog_sky_affect = 0.904
volumetric_fog_temporal_reprojection_amount = 0.99
[sub_resource type="GDScript" id="GDScript_b1cmn"]
script/source = "extends Camera3D
@ -103,10 +101,18 @@ func _unhandled_input(event: InputEvent) -> void:
global_position = (global_position - pivot).normalized() * distance + pivot
"
[sub_resource type="BoxMesh" id="BoxMesh_sldah"]
[node name="Node3D" type="Node3D"]
[node name="TerrainMeshEditor" type="TerrainMeshEditor" parent="."]
primitives = [SubResource("PointPrimitive_pxqd5"), SubResource("NoisePrimitive_ba0ut"), SubResource("NoisePrimitive_pxqd5")]
vertex_color_gradient = SubResource("Gradient_b1cmn")
color_gradient_end_height = 200.0
chunk_size = 500.0
lod1_detail = 30
chunk_count = 5
material = ExtResource("1_pxqd5")
point_primitive_object = ExtResource("1_b1cmn")
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_pxqd5")
@ -117,24 +123,10 @@ shadow_enabled = true
shadow_reverse_cull_face = true
directional_shadow_max_distance = 300.0
[node name="TerrainMeshEditor" type="TerrainMeshEditor" parent="."]
primitives = [SubResource("PointPrimitive_pxqd5"), SubResource("NoisePrimitive_ba0ut"), SubResource("NoisePrimitive_pxqd5")]
vertex_color_gradient = SubResource("Gradient_b1cmn")
color_gradient_end_height = 200.0
chunk_size = 500.0
lod1_detail = 10
chunk_count = 5
material = SubResource("StandardMaterial3D_b1cmn")
point_primitive_object = ExtResource("1_b1cmn")
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(0.707107, -0.377082, 0.598171, 0, 0.845942, 0.533275, -0.707107, -0.377082, 0.598171, 504.544, 443.732, 504.544)
fov = 57.3
far = 2000.0
script = SubResource("GDScript_b1cmn")
[node name="ReferenceBox" type="MeshInstance3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5.88292, 0)
mesh = SubResource("BoxMesh_sldah")
[connection signal="primitives_changed" from="TerrainMeshEditor" to="TerrainMeshEditor" method="_on_primitives_changed"]