Skip to content

Commit 2810746

Browse files
committed
feat: shaders and luts
1 parent d6f3778 commit 2810746

10 files changed

Lines changed: 260 additions & 74 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@
66

77
- Third Person Controller: https://youtu.be/C-1AerTEjFU?si=5_kOrdYYsfkj8BPi
88
- Robot Model: https://quaternius.com/packs/universalanimationlibrary.html
9+
- Water Shader: https://www.youtube.com/watch?v=U20foZ_axG4

entities/chunks/chunk.tscn

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ size = Vector2(40, 40)
1111
size = Vector3(40, 10, 40)
1212

1313
[sub_resource type="PrismMesh" id="PrismMesh_g8snm"]
14+
material = ExtResource("3_dyb2e")
1415
left_to_right = 1.5
1516
size = Vector3(4, 2, 40)
1617

@@ -46,15 +47,13 @@ shape = SubResource("BoxShape3D_sugp2")
4647
[node name="MeshInstance3D2" type="MeshInstance3D" parent="Floor"]
4748
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 20, -1, -4)
4849
mesh = SubResource("PrismMesh_g8snm")
49-
surface_material_override/0 = ExtResource("3_dyb2e")
5050

5151
[node name="CollisionShape3D2" type="CollisionShape3D" parent="Floor"]
5252
shape = SubResource("ConvexPolygonShape3D_dyb2e")
5353

5454
[node name="MeshInstance3D3" type="MeshInstance3D" parent="Floor"]
5555
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 44, -1, 20)
5656
mesh = SubResource("PrismMesh_g8snm")
57-
surface_material_override/0 = ExtResource("3_dyb2e")
5857

5958
[node name="CollisionShape3D3" type="CollisionShape3D" parent="Floor"]
6059
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 40, 0, 0)
@@ -72,7 +71,6 @@ shape = SubResource("ConvexPolygonShape3D_dyb2e")
7271
[node name="MeshInstance3D5" type="MeshInstance3D" parent="Floor"]
7372
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, -1, 20)
7473
mesh = SubResource("PrismMesh_g8snm")
75-
surface_material_override/0 = ExtResource("3_dyb2e")
7674

7775
[node name="CollisionShape3D5" type="CollisionShape3D" parent="Floor"]
7876
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 40)

entities/chunks/pillar.tres

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[gd_resource type="StandardMaterial3D" format=3 uid="uid://c2a5fonntckg0"]
22

33
[resource]
4-
metallic = 1.0
4+
metallic = 0.5
55
roughness = 0.5

entities/water/caustics.tres

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
[gd_resource type="VisualShader" load_steps=18 format=3 uid="uid://dqkjmlhhumhgf"]
2+
3+
[sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_p3vkb"]
4+
operator = 2
5+
6+
[sub_resource type="VisualShaderNodeCompare" id="VisualShaderNodeCompare_4bg14"]
7+
default_input_values = [0, 0.0, 1, 0.5, 2, 1e-05]
8+
function = 3
9+
10+
[sub_resource type="FastNoiseLite" id="FastNoiseLite_027yt"]
11+
noise_type = 2
12+
frequency = 0.1
13+
fractal_type = 0
14+
fractal_gain = 0.0
15+
cellular_distance_function = 1
16+
17+
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_t8xqg"]
18+
width = 256
19+
height = 128
20+
seamless = true
21+
seamless_blend_skirt = 1.0
22+
noise = SubResource("FastNoiseLite_027yt")
23+
24+
[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_he0g8"]
25+
texture = SubResource("NoiseTexture2D_t8xqg")
26+
27+
[sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_dlula"]
28+
29+
[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_ohb8j"]
30+
parameter_name = "uv_scale"
31+
default_value_enabled = true
32+
default_value = 64.0
33+
34+
[sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_crb68"]
35+
36+
[sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_wsdan"]
37+
38+
[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_3ckc2"]
39+
input_name = "time"
40+
41+
[sub_resource type="VisualShaderNodeVec2Parameter" id="VisualShaderNodeVec2Parameter_y5pgd"]
42+
parameter_name = "direction_1"
43+
default_value_enabled = true
44+
default_value = Vector2(0.01, 0.01)
45+
46+
[sub_resource type="VisualShaderNodeVec2Parameter" id="VisualShaderNodeVec2Parameter_3jkoy"]
47+
parameter_name = "direction_2"
48+
default_value_enabled = true
49+
default_value = Vector2(0.01, 0.01)
50+
51+
[sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_tg5xa"]
52+
function = 1
53+
54+
[sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_22gys"]
55+
function = 1
56+
57+
[sub_resource type="FastNoiseLite" id="FastNoiseLite_dwbrq"]
58+
noise_type = 2
59+
seed = 115
60+
frequency = 0.15
61+
fractal_type = 0
62+
fractal_gain = 0.0
63+
cellular_distance_function = 1
64+
65+
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_ubb2d"]
66+
width = 256
67+
height = 128
68+
seamless = true
69+
seamless_blend_skirt = 1.0
70+
noise = SubResource("FastNoiseLite_dwbrq")
71+
72+
[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_g5d63"]
73+
texture = SubResource("NoiseTexture2D_ubb2d")
74+
75+
[resource]
76+
code = "shader_type spatial;
77+
render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_lambert, specular_schlick_ggx;
78+
79+
uniform float uv_scale = 64.0;
80+
uniform vec2 direction_2 = vec2(0.010000, 0.010000);
81+
uniform sampler2D tex_frg_9;
82+
uniform vec2 direction_1 = vec2(0.010000, 0.010000);
83+
uniform sampler2D tex_frg_12;
84+
85+
86+
87+
void fragment() {
88+
// FloatParameter:14
89+
float n_out14p0 = uv_scale;
90+
91+
92+
// UVFunc:7
93+
vec2 n_in7p2 = vec2(0.00000, 0.00000);
94+
vec2 n_out7p0 = (UV - n_in7p2) * vec2(n_out14p0) + n_in7p2;
95+
96+
97+
// Vector2Parameter:6
98+
vec2 n_out6p0 = direction_2;
99+
100+
101+
// Input:4
102+
float n_out4p0 = TIME;
103+
104+
105+
// UVFunc:3
106+
vec2 n_out3p0 = vec2(n_out4p0) * n_out6p0 + n_out7p0;
107+
108+
109+
// Texture2D:9
110+
vec4 n_out9p0 = texture(tex_frg_9, n_out3p0);
111+
112+
113+
// UVFunc:8
114+
vec2 n_in8p2 = vec2(0.00000, 0.00000);
115+
vec2 n_out8p0 = (UV - n_in8p2) * vec2(n_out14p0) + n_in8p2;
116+
117+
118+
// Vector2Parameter:5
119+
vec2 n_out5p0 = direction_1;
120+
121+
122+
// UVFunc:2
123+
vec2 n_out2p0 = vec2(n_out4p0) * n_out5p0 + n_out8p0;
124+
125+
126+
// Texture2D:12
127+
vec4 n_out12p0 = texture(tex_frg_12, n_out2p0);
128+
129+
130+
// VectorOp:13
131+
vec3 n_out13p0 = vec3(n_out9p0.xyz) + vec3(n_out12p0.xyz);
132+
133+
134+
// Compare:11
135+
float n_in11p1 = 0.50000;
136+
bool n_out11p0 = n_out13p0.x >= n_in11p1;
137+
138+
139+
// VectorOp:10
140+
vec3 n_out10p0 = n_out13p0 * vec3(n_out11p0 ? 1.0 : 0.0);
141+
142+
143+
// Output:0
144+
ALBEDO = n_out10p0;
145+
ALPHA = n_out10p0.x;
146+
147+
148+
}
149+
"
150+
graph_offset = Vector2(398.705, 102.4)
151+
nodes/fragment/0/position = Vector2(1520, 300)
152+
nodes/fragment/2/node = SubResource("VisualShaderNodeUVFunc_crb68")
153+
nodes/fragment/2/position = Vector2(265.563, 58.5239)
154+
nodes/fragment/3/node = SubResource("VisualShaderNodeUVFunc_wsdan")
155+
nodes/fragment/3/position = Vector2(265.563, 418.524)
156+
nodes/fragment/4/node = SubResource("VisualShaderNodeInput_3ckc2")
157+
nodes/fragment/4/position = Vector2(-54.4373, 298.524)
158+
nodes/fragment/5/node = SubResource("VisualShaderNodeVec2Parameter_y5pgd")
159+
nodes/fragment/5/position = Vector2(-54.4373, -201.476)
160+
nodes/fragment/6/node = SubResource("VisualShaderNodeVec2Parameter_3jkoy")
161+
nodes/fragment/6/position = Vector2(-54.4373, 598.524)
162+
nodes/fragment/7/node = SubResource("VisualShaderNodeUVFunc_tg5xa")
163+
nodes/fragment/7/position = Vector2(-334.437, 398.524)
164+
nodes/fragment/8/node = SubResource("VisualShaderNodeUVFunc_22gys")
165+
nodes/fragment/8/position = Vector2(-334.437, 58.5239)
166+
nodes/fragment/9/node = SubResource("VisualShaderNodeTexture_g5d63")
167+
nodes/fragment/9/position = Vector2(545.563, 418.524)
168+
nodes/fragment/10/node = SubResource("VisualShaderNodeVectorOp_p3vkb")
169+
nodes/fragment/10/position = Vector2(1269.46, 308.92)
170+
nodes/fragment/11/node = SubResource("VisualShaderNodeCompare_4bg14")
171+
nodes/fragment/11/position = Vector2(1029.46, 488.92)
172+
nodes/fragment/12/node = SubResource("VisualShaderNodeTexture_he0g8")
173+
nodes/fragment/12/position = Vector2(545.563, 58.5239)
174+
nodes/fragment/13/node = SubResource("VisualShaderNodeVectorOp_dlula")
175+
nodes/fragment/13/position = Vector2(789.458, 308.92)
176+
nodes/fragment/14/node = SubResource("VisualShaderNodeFloatParameter_ohb8j")
177+
nodes/fragment/14/position = Vector2(-654.437, 218.524)
178+
nodes/fragment/connections = PackedInt32Array(4, 0, 2, 2, 4, 0, 3, 2, 2, 0, 12, 0, 3, 0, 9, 0, 5, 0, 2, 1, 6, 0, 3, 1, 7, 0, 3, 0, 14, 0, 7, 1, 8, 0, 2, 0, 14, 0, 8, 1, 9, 0, 13, 0, 12, 0, 13, 1, 13, 0, 11, 0, 11, 0, 10, 1, 13, 0, 10, 0, 10, 0, 0, 0, 10, 0, 0, 1)

entities/water/water_shader.tres

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ void fragment() {
197197

198198
}
199199
"
200-
graph_offset = Vector2(1357.11, 28.4051)
200+
graph_offset = Vector2(345.562, -104.248)
201201
modes/blend = 1
202202
nodes/fragment/0/position = Vector2(1760, 220)
203203
nodes/fragment/2/node = SubResource("VisualShaderNodeTexture_aegcx")

etc/inception_lut.png

45.1 KB
Loading

etc/inception_lut.png.import

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
[remap]
2+
3+
importer="3d_texture"
4+
type="CompressedTexture3D"
5+
uid="uid://c8wwwal5iuy3d"
6+
path="res://.godot/imported/inception_lut.png-08f0c3a6f3dc6be60179fe92310ee808.ctex3d"
7+
metadata={
8+
"vram_texture": false
9+
}
10+
11+
[deps]
12+
13+
source_file="res://etc/inception_lut.png"
14+
dest_files=["res://.godot/imported/inception_lut.png-08f0c3a6f3dc6be60179fe92310ee808.ctex3d"]
15+
16+
[params]
17+
18+
compress/mode=0
19+
compress/high_quality=false
20+
compress/lossy_quality=0.7
21+
compress/hdr_compression=1
22+
compress/channel_pack=0
23+
mipmaps/generate=false
24+
mipmaps/limit=-1
25+
slices/horizontal=33
26+
slices/vertical=1

scenes/main.tscn

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
[gd_scene load_steps=13 format=3 uid="uid://cmer4d6sqw3tl"]
1+
[gd_scene load_steps=14 format=3 uid="uid://cmer4d6sqw3tl"]
22

33
[ext_resource type="PackedScene" uid="uid://gbybg78jk1ob" path="res://entities/player/player.tscn" id="1_o5qli"]
4+
[ext_resource type="CompressedTexture3D" uid="uid://c8wwwal5iuy3d" path="res://etc/inception_lut.png" id="1_tbgi4"]
45
[ext_resource type="Script" uid="uid://decv7hlbor200" path="res://entities/chunks/chunk_loader.gd" id="2_jyhfs"]
56
[ext_resource type="Shader" uid="uid://dm07b6gx2l2yo" path="res://entities/water/water_shader.tres" id="3_jyhfs"]
6-
[ext_resource type="Material" uid="uid://m0e53km677hd" path="res://textures/coast_sand_01_4k.gltf/coast_sand.tres" id="4_jyhfs"]
7+
[ext_resource type="Material" uid="uid://oy8ibawdu7r" path="res://textures/coast_sand_01_4k.gltf/coast_sand_caustics.tres" id="4_jyhfs"]
78

89
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_o5qli"]
910
sky_horizon_color = Color(0.662243, 0.671743, 0.686743, 1)
@@ -16,16 +17,29 @@ sky_material = SubResource("ProceduralSkyMaterial_o5qli")
1617
background_mode = 2
1718
sky = SubResource("Sky_0wfyh")
1819
tonemap_mode = 2
20+
fog_enabled = true
21+
fog_mode = 1
22+
fog_light_color = Color(0.436113, 0.510324, 0.518836, 1)
23+
fog_light_energy = 0.2
24+
fog_sun_scatter = 0.4
25+
fog_density = 1.0
26+
fog_sky_affect = 0.5
27+
fog_height = 1.0
28+
fog_height_density = -0.01
29+
fog_depth_end = 50.0
30+
volumetric_fog_enabled = true
31+
adjustment_enabled = true
32+
adjustment_color_correction = ExtResource("1_tbgi4")
1933

2034
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jyhfs"]
2135
transparency = 1
22-
albedo_color = Color(0.312357, 0.644623, 0.775114, 0.227451)
36+
albedo_color = Color(0.334721, 0.44869, 0.464202, 0.458824)
2337

2438
[sub_resource type="ShaderMaterial" id="ShaderMaterial_tbgi4"]
2539
render_priority = 0
2640
next_pass = SubResource("StandardMaterial3D_jyhfs")
2741
shader = ExtResource("3_jyhfs")
28-
shader_parameter/uv_scale = 4.0
42+
shader_parameter/uv_scale = 8.0
2943
shader_parameter/direction_1 = Vector2(-0.01, 0.01)
3044
shader_parameter/direction_2 = Vector2(-0.05, 0.01)
3145
shader_parameter/highlight_threshold = 0.5
@@ -47,27 +61,31 @@ size = Vector3(400, 1, 400)
4761
environment = SubResource("Environment_sugp2")
4862

4963
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
50-
transform = Transform3D(-0.997684, -0.0146053, 0.0664288, 0, 0.976672, 0.214735, -0.0680154, 0.214238, -0.974411, 0, 0, 0)
51-
visible = false
64+
transform = Transform3D(-4.37113e-08, 0.214735, -0.976673, 0, 0.976672, 0.214735, 0.999999, 9.38638e-09, -4.26917e-08, 0, 0, 0)
65+
light_color = Color(0.687694, 0.814377, 0.803779, 1)
66+
light_energy = 0.5
5267
shadow_enabled = true
5368

5469
[node name="Player" parent="." instance=ExtResource("1_o5qli")]
5570

5671
[node name="ChunkLoader" type="Node" parent="."]
5772
script = ExtResource("2_jyhfs")
5873

59-
[node name="Water" type="MeshInstance3D" parent="."]
74+
[node name="Ocean" type="Node3D" parent="."]
75+
76+
[node name="Water" type="MeshInstance3D" parent="Ocean"]
6077
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
6178
mesh = SubResource("PlaneMesh_tbgi4")
79+
skeleton = NodePath("../..")
6280

63-
[node name="Floor" type="StaticBody3D" parent="."]
81+
[node name="Floor" type="StaticBody3D" parent="Ocean"]
6482
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2, 0)
6583

66-
[node name="MeshInstance3D" type="MeshInstance3D" parent="Floor"]
84+
[node name="MeshInstance3D" type="MeshInstance3D" parent="Ocean/Floor"]
6785
transform = Transform3D(400, 0, 0, 0, 1, 0, 0, 0, 400, 0, 0, 0)
6886
mesh = SubResource("PlaneMesh_sugp2")
6987
surface_material_override/0 = ExtResource("4_jyhfs")
7088

71-
[node name="CollisionShape3D" type="CollisionShape3D" parent="Floor"]
89+
[node name="CollisionShape3D" type="CollisionShape3D" parent="Ocean/Floor"]
7290
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0)
7391
shape = SubResource("BoxShape3D_jyhfs")

0 commit comments

Comments
 (0)