diff --git a/mat/main.tscn b/mat/main.tscn index ba846f8..4491859 100644 --- a/mat/main.tscn +++ b/mat/main.tscn @@ -1,9 +1,11 @@ -[gd_scene load_steps=9 format=3 uid="uid://cjjrdfywoxwgr"] +[gd_scene load_steps=11 format=3 uid="uid://cjjrdfywoxwgr"] [ext_resource type="Material" uid="uid://br11m0qg2yhid" path="res://mat/waterMat.tres" id="1_x7q1n"] +[ext_resource type="Script" uid="uid://dialqdlhpqqsg" path="res://mat/water.gd" id="2_0sebh"] [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"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_cdryl"] sky_top_color = Color(0.308708, 0.682951, 0.784164, 1) @@ -38,6 +40,7 @@ environment = SubResource("Environment_x7q1n") [node name="Water" type="MeshInstance3D" parent="."] mesh = SubResource("PlaneMesh_h5gxe") +script = ExtResource("2_0sebh") [node name="Env" type="Node3D" parent="."] @@ -52,3 +55,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="." instance=ExtResource("5_wio4u")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.208335, 0.773113, 1.74591) diff --git a/mat/water.gd b/mat/water.gd new file mode 100644 index 0000000..0ed145b --- /dev/null +++ b/mat/water.gd @@ -0,0 +1,21 @@ +extends MeshInstance3D + +var material: ShaderMaterial +var noise: FastNoiseLite = preload("res://mat/watershader.tres::FastNoiseLite_gokfr") + +var noise_UVscale:Vector2 +var wave_speed:float +var height_scale:float + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + material = mesh.surface_get_material(0) + if material: + noise_UVscale = material.get_shader_parameter("RippleTimeScale") + print(noise_UVscale) + FastNoiseLite + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass diff --git a/mat/water.gd.uid b/mat/water.gd.uid new file mode 100644 index 0000000..3e029c0 --- /dev/null +++ b/mat/water.gd.uid @@ -0,0 +1 @@ +uid://dialqdlhpqqsg diff --git a/mat/waterMat.tres b/mat/waterMat.tres index ec438f8..bd4a306 100644 --- a/mat/waterMat.tres +++ b/mat/waterMat.tres @@ -5,6 +5,7 @@ [resource] render_priority = 0 shader = ExtResource("1_337u2") +shader_parameter/Waves = false shader_parameter/CellsScale = Vector2(15, 15) shader_parameter/RippleTimeScale = Vector2(0.05, 0.08) shader_parameter/MaxRippleHeight = 0.15 diff --git a/mat/watershader.tres b/mat/watershader.tres index 7052974..e39f7e3 100644 --- a/mat/watershader.tres +++ b/mat/watershader.tres @@ -1,4 +1,4 @@ -[gd_resource type="VisualShader" load_steps=73 format=3 uid="uid://dju4bgl0vd6f5"] +[gd_resource type="VisualShader" load_steps=76 format=3 uid="uid://dju4bgl0vd6f5"] [sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_obdjg"] linked_parent_graph_frame = 49 @@ -317,6 +317,18 @@ default_input_values = [0, Vector2(0, 0), 1, Vector2(0, 0)] op_type = 0 operator = 2 +[sub_resource type="VisualShaderNodeBooleanParameter" id="VisualShaderNodeBooleanParameter_obdjg"] +parameter_name = "Waves" +default_value_enabled = true +default_value = true + +[sub_resource type="VisualShaderNodeSwitch" id="VisualShaderNodeSwitch_eafem"] +default_input_values = [0, false, 1, Vector3(1, 1, 1), 2, Vector3(0, 0, 0)] +op_type = 4 + +[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_dt65u"] +input_name = "vertex" + [sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_obdjg"] input_name = "time" @@ -348,13 +360,14 @@ varying_type = 3 [resource] code = "shader_type spatial; -render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_toon, specular_toon; +render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_toon, specular_toon, fog_disabled; // Varyings varying vec2 var_Noise; varying vec2 var_Cells; +uniform bool Waves = true; uniform vec2 CellsScale = vec2(0.500000, 0.500000); uniform vec2 RippleTimeScale = vec2(0.050000, 0.080000); uniform sampler2D tex_vtx_4; @@ -378,6 +391,10 @@ uniform float Spec : hint_range(0.0, 1.0) = 0.96899998188019; void vertex() { +// BooleanParameter:17 + bool n_out17p0 = Waves; + + // Input:15 vec2 n_out15p0 = UV; @@ -426,8 +443,17 @@ void vertex() { vec4 n_out7p0 = fma(n_out4p0, vec4(n_out11p0, 0.0), vec4(n_out5p0, 0.0)); +// Input:19 + vec3 n_out19p0 = VERTEX; + + + vec3 n_out18p0; +// Switch:18 + n_out18p0 = mix(n_out19p0, vec3(n_out7p0.xyz), float(n_out17p0)); + + // Output:0 - VERTEX = vec3(n_out7p0.xyz); + VERTEX = n_out18p0; // VaryingSetter:8 @@ -653,14 +679,15 @@ void fragment() { } " -graph_offset = Vector2(91.628, 272.02) +graph_offset = Vector2(-540.049, 106.316) modes/diffuse = 3 modes/specular = 1 +flags/fog_disabled = true varyings/Noise = "0,3" varyings/Cells = "0,3" -nodes/vertex/0/position = Vector2(1080, 320) +nodes/vertex/0/position = Vector2(1460, 340) nodes/vertex/2/node = SubResource("VisualShaderNodeInput_obdjg") -nodes/vertex/2/position = Vector2(-480, 260) +nodes/vertex/2/position = Vector2(-300, 460) nodes/vertex/3/node = SubResource("VisualShaderNodeUVFunc_vh75p") nodes/vertex/3/position = Vector2(-160, 200) nodes/vertex/4/node = SubResource("VisualShaderNodeTexture_0o2nh") @@ -680,14 +707,20 @@ nodes/vertex/11/position = Vector2(400, 480) nodes/vertex/12/node = SubResource("VisualShaderNodeFloatParameter_004we") nodes/vertex/12/position = Vector2(-100, 660) nodes/vertex/13/node = SubResource("VisualShaderNodeVec2Parameter_odxaq") -nodes/vertex/13/position = Vector2(-780, 740) +nodes/vertex/13/position = Vector2(-800, -180) nodes/vertex/14/node = SubResource("VisualShaderNodeVaryingSetter_ty10k") -nodes/vertex/14/position = Vector2(-390.622, 1049.07) +nodes/vertex/14/position = Vector2(-420, 140) nodes/vertex/15/node = SubResource("VisualShaderNodeInput_cgfff") -nodes/vertex/15/position = Vector2(-940, 640) +nodes/vertex/15/position = Vector2(-960, -280) nodes/vertex/16/node = SubResource("VisualShaderNodeVectorOp_savut") -nodes/vertex/16/position = Vector2(-417.362, 747.461) -nodes/vertex/connections = PackedInt32Array(2, 0, 3, 2, 3, 0, 4, 0, 5, 0, 7, 2, 4, 0, 7, 0, 10, 0, 8, 0, 10, 0, 3, 1, 7, 0, 0, 0, 6, 0, 11, 0, 11, 0, 7, 1, 12, 0, 11, 1, 13, 0, 14, 0, 15, 0, 16, 0, 13, 0, 16, 1, 16, 0, 3, 0) +nodes/vertex/16/position = Vector2(-440, -180) +nodes/vertex/17/node = SubResource("VisualShaderNodeBooleanParameter_obdjg") +nodes/vertex/17/position = Vector2(920, 80) +nodes/vertex/18/node = SubResource("VisualShaderNodeSwitch_eafem") +nodes/vertex/18/position = Vector2(1280, 140) +nodes/vertex/19/node = SubResource("VisualShaderNodeInput_dt65u") +nodes/vertex/19/position = Vector2(1100, 420) +nodes/vertex/connections = PackedInt32Array(2, 0, 3, 2, 3, 0, 4, 0, 5, 0, 7, 2, 4, 0, 7, 0, 10, 0, 8, 0, 10, 0, 3, 1, 6, 0, 11, 0, 11, 0, 7, 1, 12, 0, 11, 1, 13, 0, 14, 0, 15, 0, 16, 0, 13, 0, 16, 1, 16, 0, 3, 0, 7, 0, 18, 1, 17, 0, 18, 0, 18, 0, 0, 0, 19, 0, 18, 2) nodes/fragment/0/position = Vector2(1780, 1540) nodes/fragment/2/node = SubResource("VisualShaderNodeColorParameter_qysla") nodes/fragment/2/position = Vector2(240, 920)