diff --git a/Scenes/WaterPlane.tscn b/Scenes/WaterPlane.tscn index 8edb945..bb27610 100644 --- a/Scenes/WaterPlane.tscn +++ b/Scenes/WaterPlane.tscn @@ -49,6 +49,9 @@ material = SubResource("ShaderMaterial_g1sji") [sub_resource type="BoxShape3D" id="BoxShape3D_bt6if"] +[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_wkpnq"] +points = PackedVector3Array(-0.669005, -0.162939, -0.133625, -0.498217, -1.05109, -0.207684, -0.418063, -0.924207, 0.112045, -0.480143, -0.14392, 0.172168, -0.449365, 0.636117, 0.122917, -0.609805, 0.724956, -0.204108, 0, -1.11465, -0.229865, 0, 1.44193, -0.267368, 0, -0.947981, 0.0959932, -0.143152, -0.759541, 0.326779, -0.269409, -0.0640898, 0.373622, -0.219902, 0.631612, 0.329479, 0, 0.875608, 0.420392, 0, 1.24648, 0.0675372, 0.498086, -1.05109, -0.207684, 0.417932, -0.924207, 0.112045, 0.609674, 0.724956, -0.204108, 0.143021, -0.759541, 0.326779, 0, -0.644926, 0.381283, 0, 0.115842, 0.478034, 0.269278, -0.0640898, 0.373622, 0.219771, 0.631612, 0.329479, 0.449234, 0.636117, 0.122917, 0.669005, -0.162939, -0.133625, 0.480012, -0.14392, 0.172168) + [sub_resource type="PlaneMesh" id="PlaneMesh_wuatm"] size = Vector2(50, 50) subdivide_width = 20 @@ -58,9 +61,6 @@ subdivide_depth = 20 transparency = 1 albedo_color = Color(0, 0.372549, 1, 0.6) -[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_wkpnq"] -points = PackedVector3Array(-0.669005, -0.162939, -0.133625, -0.498217, -1.05109, -0.207684, -0.418063, -0.924207, 0.112045, -0.480143, -0.14392, 0.172168, -0.449365, 0.636117, 0.122917, -0.609805, 0.724956, -0.204108, 0, -1.11465, -0.229865, 0, 1.44193, -0.267368, 0, -0.947981, 0.0959932, -0.143152, -0.759541, 0.326779, -0.269409, -0.0640898, 0.373622, -0.219902, 0.631612, 0.329479, 0, 0.875608, 0.420392, 0, 1.24648, 0.0675372, 0.498086, -1.05109, -0.207684, 0.417932, -0.924207, 0.112045, 0.609674, 0.724956, -0.204108, 0.143021, -0.759541, 0.326779, 0, -0.644926, 0.381283, 0, 0.115842, 0.478034, 0.269278, -0.0640898, 0.373622, 0.219771, 0.631612, 0.329479, 0.449234, 0.636117, 0.122917, 0.669005, -0.162939, -0.133625, 0.480012, -0.14392, 0.172168) - [node name="WaterPlane" type="Node3D"] [node name="MeshInstance3D" type="MeshInstance3D" parent="."] @@ -75,12 +75,8 @@ mesh = SubResource("PlaneMesh_w7hsm") [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_8bg6o") -[node name="Camera3D" type="Camera3D" parent="."] -transform = Transform3D(-0.718151, 0, 0.695888, 0, 1, 0, -0.695888, 0, -0.718151, 20.1979, 4.08685, -9.30518) -fov = 70.0 - [node name="Cube" type="RigidBody3D" parent="." node_paths=PackedStringArray("samplePoints")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.0169, 0.583377, -1.69189) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.4682, 1.58338, 8.16784) linear_damp = 1.5 angular_damp = 5.0 script = ExtResource("4_f67eq") @@ -116,18 +112,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -0.5, -0.5) [node name="Node3D8" type="Node3D" parent="Cube"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, -0.5, -0.5) -[node name="MeshInstance3D3" type="MeshInstance3D" parent="."] -visible = false -mesh = SubResource("PlaneMesh_wuatm") -surface_material_override/0 = SubResource("StandardMaterial3D_84jie") -script = ExtResource("5_ltuhf") -amplitude = 0.085 -speed = 1.355 -waveCount = 1 -amplitudeScaleFactor = 0.85 -frequencyScaleFactor = 1.145 -dirs = Array[Vector2]([Vector2(0.981, -0.588)]) - [node name="Boat" type="RigidBody3D" parent="." node_paths=PackedStringArray("samplePoints")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5064, 0.747465, 0.384609) linear_damp = 1.5 @@ -170,6 +154,22 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.7, -0.236, 1.2) [node name="Node3D8" type="Node3D" parent="Boat"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.7, -0.236, -1.2) +[node name="Camera3D" type="Camera3D" parent="Boat"] +transform = Transform3D(-0.992757, 0, 0.120137, 0, 1, 0, -0.120137, 0, -0.992757, 0.072, 0.76, -0.291) +fov = 70.0 + +[node name="MeshInstance3D3" type="MeshInstance3D" parent="."] +visible = false +mesh = SubResource("PlaneMesh_wuatm") +surface_material_override/0 = SubResource("StandardMaterial3D_84jie") +script = ExtResource("5_ltuhf") +amplitude = 0.085 +speed = 1.355 +waveCount = 1 +amplitudeScaleFactor = 0.85 +frequencyScaleFactor = 1.145 +dirs = Array[Vector2]([Vector2(0.981, -0.588)]) + [node name="WaveManager" type="Node" parent="."] script = ExtResource("8_jes3c") amplitude = 0.085 diff --git a/Shaders/Water2.gdshader b/Shaders/Water2.gdshader index f4da0ec..b1270f3 100644 --- a/Shaders/Water2.gdshader +++ b/Shaders/Water2.gdshader @@ -45,6 +45,19 @@ void fragment() { ALPHA = 0.9; float dep = texture(depth, SCREEN_UV).x; vec3 ndc = vec3(SCREEN_UV * 2.0 - 1.0, dep); + vec4 view = INV_PROJECTION_MATRIX * vec4(ndc, 1.0); + view.xyz /= view.w; + float linear_depth = -view.z; + + float object_depth = FRAGCOORD.z; + vec3 object_ndc = vec3(SCREEN_UV * 2.0 - 1.0, object_depth); + vec4 object_view = INV_PROJECTION_MATRIX * vec4(object_ndc, 1.0); + object_view.xyz /= object_view.w; + float linear_object_depth = -object_view.z; + if (linear_depth - linear_object_depth < 1.0){ + discard; + //ALPHA = 0.9 * clamp(linear_depth - linear_object_depth - 0.7, 0.0, 1.0); + } } //void light() {