Compare commits
2 commits
dc706de0e2
...
a3cbb44571
Author | SHA1 | Date | |
---|---|---|---|
a3cbb44571 | |||
b0b9df011e |
14 changed files with 338 additions and 80 deletions
15
.fork/custom-commands.json
Normal file
15
.fork/custom-commands.json
Normal file
|
@ -0,0 +1,15 @@
|
|||
[
|
||||
{
|
||||
"version" : 2
|
||||
},
|
||||
{
|
||||
"action" : {
|
||||
"script" : "start project.godot",
|
||||
"showOutput" : false,
|
||||
"type" : "sh",
|
||||
"waitForExit" : false
|
||||
},
|
||||
"name" : "Open Project",
|
||||
"target" : "repository"
|
||||
}
|
||||
]
|
11
boat/BuyancyNode.gd
Normal file
11
boat/BuyancyNode.gd
Normal file
|
@ -0,0 +1,11 @@
|
|||
extends Marker3D
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
1
boat/BuyancyNode.gd.uid
Normal file
1
boat/BuyancyNode.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://dliyvpt05xo5u
|
|
@ -14,14 +14,14 @@ var submerged := false
|
|||
|
||||
var is_docked: bool = false
|
||||
|
||||
@export var ocean : Ocean #= get_tree().get_nodes_in_group("ocean")[0]
|
||||
@export var ocean : OceanTile
|
||||
|
||||
@export var max_thrust_force: float = 2048
|
||||
@export var max_steering: float = 128
|
||||
@export var max_thrust_force: float = 2048*3.0
|
||||
@export var max_steering: float = 50.0
|
||||
|
||||
var steering: float = 0 # steering rudder angle in radians
|
||||
var thrust_force: float = 0 # forward thrust force in Newtons
|
||||
|
||||
var cam_rotation:Vector3
|
||||
|
||||
func _process(_delta):
|
||||
if Input.get_action_strength("move_forward") > 0.0:
|
||||
|
@ -30,6 +30,10 @@ func _process(_delta):
|
|||
steer_right()
|
||||
if Input.get_action_strength("turn_left") > 0.0:
|
||||
steer_left()
|
||||
if Input.get_action_strength("camera_left") > 0.0:
|
||||
cam_rotation += Vector3(0.0,1.0,0.0)*_delta
|
||||
if Input.get_action_strength("camera_right") > 0.0:
|
||||
cam_rotation += Vector3(0.0,-1.0,0.0)*_delta
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
|
@ -63,15 +67,15 @@ func _integrate_forces(state: PhysicsDirectBodyState3D):
|
|||
|
||||
|
||||
|
||||
func thrust():
|
||||
func thrust(_strength:=1.0):
|
||||
if not is_docked:
|
||||
thrust_force = max_thrust_force
|
||||
|
||||
func steer_right():
|
||||
func steer_right(_strength:=1.0):
|
||||
if not is_docked:
|
||||
steering = -PI * max_steering
|
||||
|
||||
func steer_left():
|
||||
func steer_left(_strength:=1.0):
|
||||
if not is_docked:
|
||||
steering = PI * max_steering
|
||||
|
||||
|
|
122
boat/boat.tscn
122
boat/boat.tscn
|
@ -1,7 +1,8 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://babgqvkugifk1"]
|
||||
[gd_scene load_steps=12 format=3 uid="uid://babgqvkugifk1"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://du135dtrpwm7o" path="res://boat/WalkableBoat.gd" id="1_ml88t"]
|
||||
[ext_resource type="PackedScene" uid="uid://bcdjvsj0la72h" path="res://boat/source/untitled.fbx" id="2_enlnh"]
|
||||
[ext_resource type="Script" uid="uid://dliyvpt05xo5u" path="res://boat/BuyancyNode.gd" id="3_ml88t"]
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_enlnh"]
|
||||
resource_name = "NoRotation"
|
||||
|
@ -9,49 +10,130 @@ script/source = "extends Node3D
|
|||
|
||||
|
||||
func _process(_delta):
|
||||
global_rotation = Vector3()
|
||||
global_rotation = $\"../..\".cam_rotation
|
||||
"
|
||||
|
||||
[sub_resource type="Curve" id="Curve_enlnh"]
|
||||
_limits = [0.0, 10.0, 0.0, 5.0]
|
||||
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(2.83988, 10), 0.299357, 0.0, 0, 0]
|
||||
point_count = 2
|
||||
|
||||
[sub_resource type="CurveTexture" id="CurveTexture_ml88t"]
|
||||
curve = SubResource("Curve_enlnh")
|
||||
|
||||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_enlnh"]
|
||||
lifetime_randomness = 0.14
|
||||
emission_shape = 1
|
||||
emission_sphere_radius = 2.42
|
||||
angle_min = -63.4
|
||||
angle_max = 360.0
|
||||
inherit_velocity_ratio = 1.384
|
||||
spread = 21.0
|
||||
initial_velocity_max = 1.0
|
||||
angular_velocity_min = -144.39
|
||||
angular_velocity_max = 40.97
|
||||
gravity = Vector3(0, 0.7, 0)
|
||||
scale_min = 0.5
|
||||
scale_curve = SubResource("CurveTexture_ml88t")
|
||||
scale_over_velocity_max = 5.0
|
||||
color = Color(1, 1, 1, 0.219608)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ml88t"]
|
||||
transparency = 1
|
||||
blend_mode = 1
|
||||
depth_draw_mode = 1
|
||||
diffuse_mode = 3
|
||||
specular_mode = 2
|
||||
disable_ambient_light = true
|
||||
disable_fog = true
|
||||
heightmap_scale = 9.055
|
||||
billboard_mode = 3
|
||||
billboard_keep_scale = true
|
||||
particles_anim_h_frames = 1
|
||||
particles_anim_v_frames = 1
|
||||
particles_anim_loop = false
|
||||
point_size = 8.0
|
||||
|
||||
[sub_resource type="SphereMesh" id="SphereMesh_ml88t"]
|
||||
material = SubResource("StandardMaterial3D_ml88t")
|
||||
radius = 0.08
|
||||
height = 0.15
|
||||
radial_segments = 4
|
||||
rings = 2
|
||||
|
||||
[sub_resource type="SphereMesh" id="SphereMesh_enlnh"]
|
||||
radius = 0.1
|
||||
height = 0.2
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_enlnh"]
|
||||
size = Vector3(1.5252, 0.507935, 1)
|
||||
|
||||
[node name="Boat" type="RigidBody3D"]
|
||||
mass = 10.0
|
||||
mass = 50.0
|
||||
script = ExtResource("1_ml88t")
|
||||
float_force = 30.0
|
||||
water_drag = 0.01
|
||||
max_thrust_force = 2000.0
|
||||
max_steering = 250.0
|
||||
|
||||
[node name="Node3D" type="Node3D" parent="."]
|
||||
[node name="Model" parent="." instance=ExtResource("2_enlnh")]
|
||||
transform = Transform3D(-0.1, 0, -1.50996e-08, 0, 0.1, 0, 1.50996e-08, 0, -0.1, 0, 0.260904, 0)
|
||||
|
||||
[node name="CamRoot" type="Node3D" parent="Model"]
|
||||
transform = Transform3D(-10, 0, 1.50996e-06, 0, 10, 0, -1.50996e-06, 0, -10, 0, 0, 0)
|
||||
script = SubResource("GDScript_enlnh")
|
||||
|
||||
[node name="SpringArm3D" type="SpringArm3D" parent="Node3D"]
|
||||
[node name="SpringArm3D" type="SpringArm3D" parent="Model/CamRoot"]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.893285, 0.449491, 0, -0.449491, 0.893285, 0, 0.350159, 0)
|
||||
spring_length = 2.255
|
||||
spring_length = 3.5
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="Node3D/SpringArm3D"]
|
||||
[node name="Camera3D" type="Camera3D" parent="Model/CamRoot/SpringArm3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.107117, 0.323316, 2.70191)
|
||||
|
||||
[node name="untitled" parent="." instance=ExtResource("2_enlnh")]
|
||||
transform = Transform3D(-0.1, 0, -1.50996e-08, 0, 0.1, 0, 1.50996e-08, 0, -0.1, 0, -0.169637, 0)
|
||||
[node name="PuffFX" type="GPUParticles3D" parent="Model"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.92513, 10.9874, -0.18139)
|
||||
cast_shadow = 0
|
||||
amount = 64
|
||||
lifetime = 15.0
|
||||
interp_to_end = 0.01
|
||||
speed_scale = 0.8
|
||||
randomness = 0.4
|
||||
visibility_aabb = AABB(-4, -2.58, -6.945, 13.755, 23.63, 16.17)
|
||||
draw_order = 3
|
||||
process_material = SubResource("ParticleProcessMaterial_enlnh")
|
||||
draw_pass_1 = SubResource("SphereMesh_ml88t")
|
||||
|
||||
[node name="ProbeContainer" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.105972, 0)
|
||||
|
||||
[node name="Cale2" type="Marker3D" parent="ProbeContainer"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.25)
|
||||
|
||||
[node name="Cale7" type="Marker3D" parent="ProbeContainer"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.25)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.465993, 0)
|
||||
|
||||
[node name="Cale3" type="Marker3D" parent="ProbeContainer"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.507, 0, -0.2)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.719583, 0, -0.00873816)
|
||||
script = ExtResource("3_ml88t")
|
||||
|
||||
[node name="MeshInstance3D3" type="MeshInstance3D" parent="ProbeContainer/Cale3"]
|
||||
mesh = SubResource("SphereMesh_enlnh")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Cale5" type="Marker3D" parent="ProbeContainer"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.507, 0, 0.2)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.783989, 0, -0.0544244)
|
||||
|
||||
[node name="MeshInstance3D4" type="MeshInstance3D" parent="ProbeContainer/Cale5"]
|
||||
mesh = SubResource("SphereMesh_enlnh")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Cale4" type="Marker3D" parent="ProbeContainer"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.568, 0, 0.25)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0411369, 0, 0.481184)
|
||||
|
||||
[node name="MeshInstance3D5" type="MeshInstance3D" parent="ProbeContainer/Cale4"]
|
||||
mesh = SubResource("SphereMesh_enlnh")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Cale6" type="Marker3D" parent="ProbeContainer"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.568, 0, -0.25)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0411369, 0, -0.538607)
|
||||
|
||||
[node name="MeshInstance3D6" type="MeshInstance3D" parent="ProbeContainer/Cale6"]
|
||||
mesh = SubResource("SphereMesh_enlnh")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00595701, 0.251318, 0)
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
[gd_scene load_steps=11 format=3 uid="uid://cjjrdfywoxwgr"]
|
||||
[gd_scene load_steps=10 format=3 uid="uid://cjjrdfywoxwgr"]
|
||||
|
||||
[ext_resource type="Material" uid="uid://br11m0qg2yhid" path="res://mat/waterMat.tres" id="1_x7q1n"]
|
||||
[ext_resource type="PackedScene" uid="uid://cpykugh40l23q" path="res://kaykit/medieval/building_windmill_herited.tscn" id="2_cdryl"]
|
||||
[ext_resource type="PackedScene" uid="uid://j4cu75dnf3u8" path="res://kaykit/medieval/building_well_red.fbx" id="4_wio4u"]
|
||||
[ext_resource type="PackedScene" uid="uid://chcjbpt2tr5k3" path="res://kaykit/medieval/building_watermill_herited.tscn" id="4_x7q1n"]
|
||||
[ext_resource type="PackedScene" uid="uid://babgqvkugifk1" path="res://boat/boat.tscn" id="5_wio4u"]
|
||||
[ext_resource type="Texture2D" uid="uid://dn01vy45t0mnc" path="res://mat/wavenoise.tres" id="6_0sebh"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_cdryl"]
|
||||
sky_top_color = Color(0.308708, 0.682951, 0.784164, 1)
|
||||
|
@ -55,8 +54,6 @@ transform = Transform3D(0.676092, 0, -0.736817, 0, 1, 0, 0.736817, 0, 0.676092,
|
|||
[node name="OmniLight3D" type="OmniLight3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.50488, 1.99753, 0.0326443)
|
||||
|
||||
[node name="Boat" parent="." node_paths=PackedStringArray("WaterNode") instance=ExtResource("5_wio4u")]
|
||||
[node name="Boat" parent="." instance=ExtResource("5_wio4u")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.208335, 0.773113, 1.74591)
|
||||
can_sleep = false
|
||||
WaterNode = NodePath("../Water")
|
||||
ripple_texture = ExtResource("6_0sebh")
|
||||
|
|
|
@ -614,6 +614,7 @@ void fragment() {
|
|||
|
||||
}
|
||||
"
|
||||
graph_offset = Vector2(266.202, -169.806)
|
||||
modes/diffuse = 3
|
||||
modes/specular = 1
|
||||
flags/fog_disabled = true
|
||||
|
@ -683,13 +684,13 @@ nodes/fragment/19/position = Vector2(800, 1920)
|
|||
nodes/fragment/22/node = SubResource("VisualShaderNodeVaryingGetter_obdjg")
|
||||
nodes/fragment/22/position = Vector2(-1600, 1740)
|
||||
nodes/fragment/23/node = SubResource("VisualShaderNodeProximityFade_obdjg")
|
||||
nodes/fragment/23/position = Vector2(-620, 60)
|
||||
nodes/fragment/23/position = Vector2(-580, 60)
|
||||
nodes/fragment/24/node = SubResource("VisualShaderNodeFloatFunc_vh75p")
|
||||
nodes/fragment/24/position = Vector2(-400, 60)
|
||||
nodes/fragment/26/node = SubResource("VisualShaderNodeFloatFunc_eafem")
|
||||
nodes/fragment/26/position = Vector2(380, -40)
|
||||
nodes/fragment/27/node = SubResource("VisualShaderNodeInput_004we")
|
||||
nodes/fragment/27/position = Vector2(-680, -80)
|
||||
nodes/fragment/27/position = Vector2(-500, -360)
|
||||
nodes/fragment/29/node = SubResource("VisualShaderNodeFloatFunc_0o2nh")
|
||||
nodes/fragment/29/position = Vector2(560, -40)
|
||||
nodes/fragment/30/node = SubResource("VisualShaderNodeFloatOp_jwewd")
|
||||
|
@ -705,7 +706,7 @@ nodes/fragment/35/position = Vector2(200, -80)
|
|||
nodes/fragment/36/node = SubResource("VisualShaderNodeFloatParameter_gokfr")
|
||||
nodes/fragment/36/position = Vector2(-500, 180)
|
||||
nodes/fragment/37/node = SubResource("VisualShaderNodeFloatParameter_5fl1t")
|
||||
nodes/fragment/37/position = Vector2(-620, -400)
|
||||
nodes/fragment/37/position = Vector2(-500, -260)
|
||||
nodes/fragment/38/node = SubResource("VisualShaderNodeMultiplyAdd_tk76b")
|
||||
nodes/fragment/38/position = Vector2(-80, -100)
|
||||
nodes/fragment/39/node = SubResource("VisualShaderNodeMix_y7ycs")
|
||||
|
@ -727,7 +728,7 @@ nodes/fragment/47/position = Vector2(-720, 2160)
|
|||
nodes/fragment/48/node = SubResource("VisualShaderNodeInput_ft6xr")
|
||||
nodes/fragment/48/position = Vector2(-1040, 2420)
|
||||
nodes/fragment/50/node = SubResource("VisualShaderNodeFloatParameter_obdjg")
|
||||
nodes/fragment/50/position = Vector2(-960, 80)
|
||||
nodes/fragment/50/position = Vector2(-860, 60)
|
||||
nodes/fragment/51/node = SubResource("VisualShaderNodeSwitch_vh75p")
|
||||
nodes/fragment/51/position = Vector2(1300, -280)
|
||||
nodes/fragment/52/node = SubResource("VisualShaderNodeBooleanParameter_eafem")
|
||||
|
|
|
@ -38,24 +38,27 @@ seamless = true
|
|||
noise = SubResource("FastNoiseLite_xta2c")
|
||||
|
||||
[resource]
|
||||
resource_name = "PlaneMesh_Current"
|
||||
render_priority = 0
|
||||
shader = ExtResource("1_u0w43")
|
||||
shader_parameter/albedo = Color(0, 0.32, 0.43, 1)
|
||||
shader_parameter/albedo2 = Color(0, 0.47, 0.76, 1)
|
||||
shader_parameter/color_deep = Color(0.11, 0.29, 0.33, 1)
|
||||
shader_parameter/color_shallow = Color(0, 0.47, 0.76, 1)
|
||||
shader_parameter/color_shallow = Color(1, 1, 1, 1)
|
||||
shader_parameter/shore_fade = 0.165
|
||||
shader_parameter/shore_intensity = 0.285
|
||||
shader_parameter/metallic = 0.0
|
||||
shader_parameter/roughness = 0.02
|
||||
shader_parameter/texture_normal = SubResource("NoiseTexture2D_mf4pf")
|
||||
shader_parameter/texture_normal2 = SubResource("NoiseTexture2D_nojbg")
|
||||
shader_parameter/wave = SubResource("NoiseTexture2D_0vxpe")
|
||||
shader_parameter/wave_time = 7.905
|
||||
shader_parameter/wave_direction = Vector2(2, 0)
|
||||
shader_parameter/wave_2_direction = Vector2(0, 1)
|
||||
shader_parameter/time_scale = 0.025
|
||||
shader_parameter/wave_speed = 0.02
|
||||
shader_parameter/noise_scale = 8.23
|
||||
shader_parameter/height_scale = 0.34
|
||||
shader_parameter/wave_time = 0.0
|
||||
shader_parameter/wave_direction = Vector2(0.8, 0)
|
||||
shader_parameter/wave_2_direction = Vector2(0, 2)
|
||||
shader_parameter/time_scale = 0.01
|
||||
shader_parameter/wave_speed = 0.05
|
||||
shader_parameter/noise_scale = 15.0
|
||||
shader_parameter/height_scale = 1.08
|
||||
shader_parameter/beers_law = 2.0
|
||||
shader_parameter/depth_offset = -0.75
|
||||
shader_parameter/edge_scale = 0.1
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
[gd_scene load_steps=11 format=3 uid="uid://hs3a438it6j6"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://btd340abbfpke" path="res://ocean/oceanTEST.gd" id="1_2qsx7"]
|
||||
[ext_resource type="Material" uid="uid://djvstk5qjvdan" path="res://ocean/Ocean2.tres" id="1_kiaws"]
|
||||
[ext_resource type="Script" uid="uid://c12fpc7inp27s" path="res://ocean/ocean.gd" id="2_ap626"]
|
||||
[ext_resource type="PackedScene" uid="uid://babgqvkugifk1" path="res://boat/boat.tscn" id="3_ap626"]
|
||||
|
@ -18,32 +19,25 @@ tonemap_mode = 2
|
|||
glow_enabled = true
|
||||
|
||||
[sub_resource type="PlaneMesh" id="PlaneMesh_mf4pf"]
|
||||
resource_name = "OceanTile_Current"
|
||||
material = ExtResource("1_kiaws")
|
||||
size = Vector2(10, 10)
|
||||
size = Vector2(10.5, 10.5)
|
||||
subdivide_width = 100
|
||||
subdivide_depth = 100
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ap626"]
|
||||
transparency = 1
|
||||
blend_mode = 3
|
||||
shading_mode = 0
|
||||
diffuse_mode = 3
|
||||
disable_fog = true
|
||||
albedo_color = Color(0, 0.754224, 0.124756, 1)
|
||||
[sub_resource type="PlaneMesh" id="PlaneMesh_ap626"]
|
||||
resource_name = "OceanTile_Near"
|
||||
material = ExtResource("1_kiaws")
|
||||
size = Vector2(10.5, 10.5)
|
||||
subdivide_width = 50
|
||||
subdivide_depth = 50
|
||||
|
||||
[sub_resource type="SphereMesh" id="SphereMesh_2qsx7"]
|
||||
material = SubResource("StandardMaterial3D_ap626")
|
||||
radius = 0.2
|
||||
height = 0.4
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_ap626"]
|
||||
script/source = "extends MeshInstance3D
|
||||
@export var ocean : Ocean #= get_tree().get_nodes_in_group(\"ocean\")[0]
|
||||
|
||||
func _process(_delta):
|
||||
var depthwater = ocean.get_water_level(Vector3.ZERO)
|
||||
global_position = Vector3(0.0,depthwater,0.0)
|
||||
"
|
||||
[sub_resource type="PlaneMesh" id="PlaneMesh_2qsx7"]
|
||||
resource_name = "OceanTile_Far"
|
||||
material = ExtResource("1_kiaws")
|
||||
size = Vector2(10.5, 10.5)
|
||||
subdivide_width = 25
|
||||
subdivide_depth = 25
|
||||
|
||||
[node name="Node3D" type="Node3D"]
|
||||
|
||||
|
@ -55,41 +49,160 @@ transform = Transform3D(-0.866025, -0.433013, 0.25, 0, 0.5, 0.866025, -0.5, 0.75
|
|||
shadow_enabled = true
|
||||
|
||||
[node name="Ocean" type="Node3D" parent="."]
|
||||
script = ExtResource("1_2qsx7")
|
||||
|
||||
[node name="Water_Tile_00" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0531927, 0.00491202, 0.00426149)
|
||||
mesh = SubResource("PlaneMesh_mf4pf")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_02" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0)
|
||||
mesh = SubResource("PlaneMesh_mf4pf")
|
||||
mesh = SubResource("PlaneMesh_ap626")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_01" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10)
|
||||
mesh = SubResource("PlaneMesh_mf4pf")
|
||||
mesh = SubResource("PlaneMesh_ap626")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_03" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -10)
|
||||
mesh = SubResource("PlaneMesh_mf4pf")
|
||||
mesh = SubResource("PlaneMesh_ap626")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_04" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0)
|
||||
mesh = SubResource("PlaneMesh_mf4pf")
|
||||
mesh = SubResource("PlaneMesh_ap626")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_05" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -10)
|
||||
mesh = SubResource("PlaneMesh_ap626")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_06" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 10)
|
||||
mesh = SubResource("PlaneMesh_ap626")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_07" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 10)
|
||||
mesh = SubResource("PlaneMesh_ap626")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_08" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, -10)
|
||||
mesh = SubResource("PlaneMesh_ap626")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_09" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 0)
|
||||
mesh = SubResource("PlaneMesh_2qsx7")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_11" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 10)
|
||||
mesh = SubResource("PlaneMesh_2qsx7")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_10" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 20)
|
||||
mesh = SubResource("PlaneMesh_2qsx7")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_12" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 20)
|
||||
mesh = SubResource("PlaneMesh_2qsx7")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_13" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 20)
|
||||
mesh = SubResource("PlaneMesh_2qsx7")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_14" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 20)
|
||||
mesh = SubResource("PlaneMesh_2qsx7")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_15" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20, 0, 20)
|
||||
mesh = SubResource("PlaneMesh_2qsx7")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_16" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20, 0, 0)
|
||||
mesh = SubResource("PlaneMesh_2qsx7")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_17" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20, 0, -10)
|
||||
mesh = SubResource("PlaneMesh_2qsx7")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_18" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20, 0, -20)
|
||||
mesh = SubResource("PlaneMesh_2qsx7")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_19" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, -20)
|
||||
mesh = SubResource("PlaneMesh_2qsx7")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_20" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20, 0, 10)
|
||||
mesh = SubResource("PlaneMesh_2qsx7")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_21" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -20)
|
||||
mesh = SubResource("PlaneMesh_2qsx7")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_22" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -20)
|
||||
mesh = SubResource("PlaneMesh_2qsx7")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_23" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, -20)
|
||||
mesh = SubResource("PlaneMesh_2qsx7")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Water_Tile_24" type="MeshInstance3D" parent="Ocean"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, -10)
|
||||
mesh = SubResource("PlaneMesh_2qsx7")
|
||||
skeleton = NodePath("../..")
|
||||
script = ExtResource("2_ap626")
|
||||
|
||||
[node name="Boat" parent="." node_paths=PackedStringArray("ocean") instance=ExtResource("3_ap626")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.461916, 0)
|
||||
ocean = NodePath("../Ocean/Water_Tile_00")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="." node_paths=PackedStringArray("ocean")]
|
||||
mesh = SubResource("SphereMesh_2qsx7")
|
||||
script = SubResource("GDScript_ap626")
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.473399, -0.51799, 0)
|
||||
float_force = 75.0
|
||||
ocean = NodePath("../Ocean/Water_Tile_00")
|
||||
max_thrust_force = 3000.0
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
@icon("uid://cbqveb0y8fkiv")
|
||||
extends MeshInstance3D
|
||||
class_name Ocean
|
||||
class_name OceanTile
|
||||
|
||||
var material: ShaderMaterial
|
||||
var noise: Image
|
||||
|
|
|
@ -8,7 +8,8 @@ uniform vec3 albedo : source_color = vec3(0.0,0.32,0.43);
|
|||
uniform vec3 albedo2 : source_color= vec3(0.0,0.47,0.76);
|
||||
uniform vec4 color_deep : source_color= vec4(0.11,0.29,0.33,1.0);
|
||||
uniform vec4 color_shallow : source_color= vec4(0.0,0.47,0.76,1.0);
|
||||
|
||||
uniform float shore_fade = 1.0;
|
||||
uniform float shore_intensity = 1.0;
|
||||
uniform float metallic : hint_range(0.0, 1.0) = 0;
|
||||
uniform float roughness : hint_range(0.0, 1.0) = 0.02;
|
||||
|
||||
|
@ -55,6 +56,13 @@ void fragment() {
|
|||
depth = depth + VERTEX.z;
|
||||
float depth_blend = exp((depth + depth_offset) * -beers_law);
|
||||
depth_blend = clamp(1.0 - depth_blend, 0.0, 1.0);
|
||||
|
||||
float depth_tex = texture(DEPTH_TEXTURE, SCREEN_UV).r;
|
||||
vec4 depth_world_pos = INV_PROJECTION_MATRIX * vec4(SCREEN_UV * 2.0 - 1.0, depth_tex, 1.0);
|
||||
depth_world_pos.xyz /= depth_world_pos.w;
|
||||
|
||||
float shore_line = clamp(1.0 - smoothstep(depth_world_pos.z + shore_fade, depth_world_pos.z, VERTEX.z), 0.0, 1.0);
|
||||
vec3 shore_color = mix(color_shallow.rgb, edge_color, shore_line);
|
||||
|
||||
vec3 screen_color = textureLod(SCREEN_TEXTURE, SCREEN_UV, depth_blend * 2.5).rgb;
|
||||
vec3 depth_color = mix(color_shallow.rgb, color_deep.rgb, depth_blend);
|
||||
|
@ -73,7 +81,7 @@ void fragment() {
|
|||
vec3 surface_color = mix(albedo, albedo2, fresnel);
|
||||
vec3 depth_color_adj = mix(edge_color, color, step(edge_scale, z_dif));
|
||||
|
||||
ALBEDO = clamp(surface_color + depth_color_adj,vec3(0),vec3(1.0));
|
||||
ALBEDO = clamp(surface_color + depth_color_adj + shore_color * shore_intensity,vec3(0),vec3(1.0));
|
||||
ALPHA = 1.0;
|
||||
METALLIC = metallic;
|
||||
ROUGHNESS = roughness;
|
||||
|
|
12
ocean/oceanTEST.gd
Normal file
12
ocean/oceanTEST.gd
Normal file
|
@ -0,0 +1,12 @@
|
|||
extends Node3D
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
global_position.x = $"../Boat".global_position.x
|
||||
global_position.z = $"../Boat".global_position.z
|
1
ocean/oceanTEST.gd.uid
Normal file
1
ocean/oceanTEST.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://btd340abbfpke
|
|
@ -48,7 +48,17 @@ turn_right={
|
|||
}
|
||||
turn_left={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":113,"location":0,"echo":false,"script":null)
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":113,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null)
|
||||
]
|
||||
}
|
||||
camera_right={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":1.0,"script":null)
|
||||
]
|
||||
}
|
||||
camera_left={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":-1.0,"script":null)
|
||||
]
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue