From: Clifton Palmer Date: Sat, 7 Jun 2025 14:24:37 +0000 (+0300) Subject: Added shaders to projectile X-Git-Url: http://git.purplebirdman.com/frog-ninja.git/commitdiff_plain/df26d4a32e30692efba3fb3b7270501dc005bbff?ds=sidebyside Added shaders to projectile --- diff --git a/asset/character/model/state/dashing_state.gd b/asset/character/model/state/dashing_state.gd index 2931f96..0c6ea9e 100644 --- a/asset/character/model/state/dashing_state.gd +++ b/asset/character/model/state/dashing_state.gd @@ -29,7 +29,7 @@ func update(input: InputPacket, delta: float): if input.player_movement_direction == Vector2.ZERO: dir = Vector2(player.last_movement_vector.x, player.last_movement_vector.z) else: - dir = input.player_movement_direction + dir = input.player_movement_direction.normalized() new_position = player.global_position + Vector3(dir.x, 0, dir.y) * dash_length rotate_skin(new_position) diff --git a/asset/map/test.tscn b/asset/map/test.tscn index b3524da..8c45a22 100644 --- a/asset/map/test.tscn +++ b/asset/map/test.tscn @@ -65,6 +65,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.92252, 0.5, 9.21799) [node name="Player" parent="." instance=ExtResource("1_37kl0")] transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) input_is_relative_to_camera = true +energy_points = 10.0 [node name="Robot" parent="." instance=ExtResource("8_415ew")] transform = Transform3D(-0.709448, 0, 0.704758, 0, 1, 0, -0.704758, 0, -0.709448, -4.55426, 9.53674e-07, 3.62123) @@ -82,6 +83,22 @@ script = ExtResource("7_y18ei") target = NodePath("../../Player") metadata/_custom_type_script = "uid://b6bncm81voh5s" +[node name="Robot3" parent="." instance=ExtResource("8_415ew")] +transform = Transform3D(-0.709448, 0, 0.704758, 0, 1, 0, -0.704758, 0, -0.709448, 12.3299, 9.53674e-07, 10.0307) + +[node name="Input" type="Node" parent="Robot3" node_paths=PackedStringArray("target")] +script = ExtResource("7_y18ei") +target = NodePath("../../Player") +metadata/_custom_type_script = "uid://b6bncm81voh5s" + +[node name="Robot4" parent="." instance=ExtResource("8_415ew")] +transform = Transform3D(-0.709448, 0, 0.704758, 0, 1, 0, -0.704758, 0, -0.709448, 12.3299, 9.53674e-07, 18.3525) + +[node name="Input" type="Node" parent="Robot4" node_paths=PackedStringArray("target")] +script = ExtResource("7_y18ei") +target = NodePath("../../Player") +metadata/_custom_type_script = "uid://b6bncm81voh5s" + [node name="CameraHandler" parent="." node_paths=PackedStringArray("tracking_node") instance=ExtResource("4_f4bcd")] tracking_node = NodePath("../Player") tracking_lock = 0.821 diff --git a/asset/projectile/projectile.gd b/asset/projectile/projectile.gd index 376ebb0..7727320 100644 --- a/asset/projectile/projectile.gd +++ b/asset/projectile/projectile.gd @@ -16,13 +16,20 @@ var _origin: Vector3 func _ready() -> void: - if not last_movement_direction: - last_movement_direction = Vector3.BACK.rotated(Vector3.UP, rotation.y) + if last_movement_direction: + last_movement_direction = last_movement_direction.normalized() + else: + last_movement_direction = Vector3.BACK.rotated(Vector3.UP, global_rotation.y) + hurtbox.weapon = weapon hurtbox.is_attacking = true hurtbox.set_collision_layer(collision_layer) hurtbox.set_collision_mask(collision_mask) _origin = global_position + + # TODO: if projectile gets reflected, this must be recalculated! + var target_angle := Vector3.BACK.signed_angle_to(last_movement_direction, Vector3.UP) + global_rotate(Vector3.UP, target_angle) func _process(delta: float) -> void: @@ -31,6 +38,6 @@ func _process(delta: float) -> void: else: global_position = lerp( global_position, - global_position + speed * last_movement_direction.normalized(), + global_position + speed * last_movement_direction, delta ) diff --git a/asset/projectile/projectile.tscn b/asset/projectile/projectile.tscn index 48dd9fe..94df554 100644 --- a/asset/projectile/projectile.tscn +++ b/asset/projectile/projectile.tscn @@ -1,18 +1,96 @@ -[gd_scene load_steps=6 format=3 uid="uid://dxmuwbdsw1cux"] +[gd_scene load_steps=22 format=3 uid="uid://dxmuwbdsw1cux"] [ext_resource type="Script" uid="uid://dhljelflbvhq0" path="res://asset/projectile/projectile.gd" id="1_a85iw"] [ext_resource type="Script" uid="uid://bfwn8qkon3k0y" path="res://asset/character/model/hurtbox.gd" id="2_qxf0c"] +[ext_resource type="Shader" uid="uid://cb1uqpepu0fu8" path="res://asset/projectile/projectile_outer_shader.tres" id="3_eos0u"] +[ext_resource type="Shader" uid="uid://bl8vglcme53cn" path="res://asset/projectile/projectile_inner_shader.tres" id="4_k4v71"] +[ext_resource type="Shader" uid="uid://w1pxn1nolx5n" path="res://asset/projectile/projectile_trail_shader.tres" id="5_4ycb3"] [sub_resource type="SphereShape3D" id="SphereShape3D_a85iw"] -radius = 0.115693 +radius = 0.3 -[sub_resource type="SphereMesh" id="SphereMesh_qxf0c"] -radius = 0.1 -height = 0.2 +[sub_resource type="ShaderMaterial" id="ShaderMaterial_eos0u"] +render_priority = 0 +shader = ExtResource("3_eos0u") +shader_parameter/base_color = Color(2, 0.134, 0.709, 1) +shader_parameter/rotation_speed = 0.83 +shader_parameter/speed = 1.4 -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qxf0c"] +[sub_resource type="CylinderMesh" id="CylinderMesh_eos0u"] +top_radius = 0.0 +height = 1.0 +cap_top = false +cap_bottom = false + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_4ycb3"] +render_priority = 1 +shader = ExtResource("4_k4v71") +shader_parameter/base_color = Color(4, 0.397, 2, 1) +shader_parameter/fresnel_power = 4.0 + +[sub_resource type="SphereMesh" id="SphereMesh_eos0u"] + +[sub_resource type="Gradient" id="Gradient_4ycb3"] +offsets = PackedFloat32Array(0.4, 0.5, 0.6) +colors = PackedColorArray(0.416952, 0.00912567, 0.0775737, 1, 3, 0, 2, 1, 0.416952, 0.00912567, 0.0775737, 1) +metadata/_snap_enabled = true + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_xofgy"] +gradient = SubResource("Gradient_4ycb3") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_xofgy"] +render_priority = 0 +shader = ExtResource("5_4ycb3") +shader_parameter/colors = SubResource("GradientTexture1D_xofgy") +shader_parameter/speed = 1.0 + +[sub_resource type="PlaneMesh" id="PlaneMesh_k4v71"] +size = Vector2(0.77, 3) +center_offset = Vector3(0, 0, -1.5) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4ycb3"] +blend_mode = 1 +cull_mode = 2 shading_mode = 0 -albedo_color = Color(1, 0, 1, 1) +disable_ambient_light = true +disable_fog = true +vertex_color_use_as_albedo = true +vertex_color_is_srgb = true + +[sub_resource type="Gradient" id="Gradient_xofgy"] +colors = PackedColorArray(4, 1, 2, 1, 0.646777, 0, 0.300858, 1) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_e5gjc"] +gradient = SubResource("Gradient_xofgy") +use_hdr = true + +[sub_resource type="Curve" id="Curve_4ycb3"] +_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="CurveTexture" id="CurveTexture_xofgy"] +curve = SubResource("Curve_4ycb3") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_4ycb3"] +lifetime_randomness = 0.46 +particle_flag_align_y = true +emission_shape = 1 +emission_sphere_radius = 0.2 +direction = Vector3(0, 0, -2) +spread = 34.315 +initial_velocity_min = 2.0 +initial_velocity_max = 10.0 +angular_velocity_min = -4.18002 +angular_velocity_max = 79.79 +gravity = Vector3(0, 0, 0) +scale_curve = SubResource("CurveTexture_xofgy") +color_ramp = SubResource("GradientTexture1D_e5gjc") +hue_variation_min = -0.1 +hue_variation_max = 0.07 + +[sub_resource type="QuadMesh" id="QuadMesh_xofgy"] +size = Vector2(0.02, 0.06) +orientation = 0 [node name="Projectile" type="Node3D"] script = ExtResource("1_a85iw") @@ -28,7 +106,29 @@ shape = SubResource("SphereShape3D_a85iw") debug_color = Color(1, 0.6, 0.701961, 0.419608) [node name="Visual" type="Node3D" parent="."] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0, 0, 0) + +[node name="OuterFlame" type="MeshInstance3D" parent="Visual"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, -0.0675984) +material_override = SubResource("ShaderMaterial_eos0u") +cast_shadow = 0 +mesh = SubResource("CylinderMesh_eos0u") + +[node name="InnerBall" type="MeshInstance3D" parent="Visual"] +transform = Transform3D(0.35, 0, 0, 0, 0.35, 0, 0, 0, 0.35, 0.00562227, -0.000371352, 0.000506699) +material_override = SubResource("ShaderMaterial_4ycb3") +cast_shadow = 0 +mesh = SubResource("SphereMesh_eos0u") + +[node name="Trail" type="MeshInstance3D" parent="Visual"] +material_override = SubResource("ShaderMaterial_xofgy") +cast_shadow = 0 +mesh = SubResource("PlaneMesh_k4v71") -[node name="MeshInstance3D" type="MeshInstance3D" parent="Visual"] -mesh = SubResource("SphereMesh_qxf0c") -surface_material_override/0 = SubResource("StandardMaterial3D_qxf0c") +[node name="Sparks" type="GPUParticles3D" parent="Visual"] +material_override = SubResource("StandardMaterial3D_4ycb3") +cast_shadow = 0 +lifetime = 0.28 +explosiveness = 0.15 +process_material = SubResource("ParticleProcessMaterial_4ycb3") +draw_pass_1 = SubResource("QuadMesh_xofgy") diff --git a/asset/projectile/projectile_inner_shader.tres b/asset/projectile/projectile_inner_shader.tres new file mode 100644 index 0000000..4c61167 --- /dev/null +++ b/asset/projectile/projectile_inner_shader.tres @@ -0,0 +1,56 @@ +[gd_resource type="VisualShader" load_steps=4 format=3 uid="uid://bl8vglcme53cn"] + +[sub_resource type="VisualShaderNodeColorParameter" id="VisualShaderNodeColorParameter_l41o0"] +parameter_name = "base_color" +default_value_enabled = true +default_value = Color(4, 0.397, 2, 1) + +[sub_resource type="VisualShaderNodeFresnel" id="VisualShaderNodeFresnel_l41o0"] +default_input_values = [2, true, 3, 4.0] + +[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_l41o0"] +parameter_name = "fresnel_power" +default_value_enabled = true +default_value = 4.0 + +[resource] +code = "shader_type spatial; +render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_lambert, specular_schlick_ggx, unshaded, shadows_disabled, ambient_light_disabled; + +uniform vec4 base_color : source_color = vec4(4.000000, 0.397000, 2.000000, 1.000000); +uniform float fresnel_power = 4.0; + + + +void fragment() { +// ColorParameter:2 + vec4 n_out2p0 = base_color; + + +// FloatParameter:4 + float n_out4p0 = fresnel_power; + + +// Fresnel:3 + float n_out3p0 = pow(clamp(dot(NORMAL, VIEW), 0.0, 1.0), n_out4p0); + + +// Output:0 + ALBEDO = vec3(n_out2p0.xyz); + ALPHA = n_out3p0; + + +} +" +graph_offset = Vector2(-597.218, -20.1925) +flags/unshaded = true +flags/shadows_disabled = true +flags/ambient_light_disabled = true +nodes/fragment/0/position = Vector2(400, 160) +nodes/fragment/2/node = SubResource("VisualShaderNodeColorParameter_l41o0") +nodes/fragment/2/position = Vector2(-420, 180) +nodes/fragment/3/node = SubResource("VisualShaderNodeFresnel_l41o0") +nodes/fragment/3/position = Vector2(-400, 700) +nodes/fragment/4/node = SubResource("VisualShaderNodeFloatParameter_l41o0") +nodes/fragment/4/position = Vector2(-1180, 860) +nodes/fragment/connections = PackedInt32Array(2, 0, 0, 0, 3, 0, 0, 1, 4, 0, 3, 3) diff --git a/asset/projectile/projectile_outer_shader.tres b/asset/projectile/projectile_outer_shader.tres new file mode 100644 index 0000000..b297036 --- /dev/null +++ b/asset/projectile/projectile_outer_shader.tres @@ -0,0 +1,171 @@ +[gd_resource type="VisualShader" load_steps=17 format=3 uid="uid://cb1uqpepu0fu8"] + +[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_caymd"] +parameter_name = "speed" +default_value_enabled = true +default_value = 1.0 + +[sub_resource type="VisualShaderNodeVectorCompose" id="VisualShaderNodeVectorCompose_wi2x2"] +op_type = 0 + +[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_wi2x2"] +default_input_values = [0, 0.0, 1, -1.0] +operator = 2 + +[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_wi2x2"] +parameter_name = "rotation_speed" +default_value_enabled = true +default_value = 1.0 + +[sub_resource type="VisualShaderNodeColorParameter" id="VisualShaderNodeColorParameter_caymd"] +parameter_name = "base_color" +default_value_enabled = true +default_value = Color(3.3, 0, 0.577, 1) + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_caymd"] +noise_type = 0 +frequency = 0.017 + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_caymd"] +width = 256 +height = 256 +seamless = true +noise = SubResource("FastNoiseLite_caymd") + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_wi2x2"] +output_port_for_preview = 0 +texture = SubResource("NoiseTexture2D_caymd") +texture_type = 1 + +[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_caymd"] +output_port_for_preview = 0 +operator = 1 + +[sub_resource type="Gradient" id="Gradient_caymd"] + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_wi2x2"] +gradient = SubResource("Gradient_caymd") +fill_from = Vector2(1, 0) +fill_to = Vector2(1, 0.423077) + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_3tmym"] +output_port_for_preview = 0 +texture = SubResource("GradientTexture2D_wi2x2") +texture_type = 1 + +[sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_caymd"] + +[sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_caymd"] +default_input_values = [0, Vector2(0, 0), 1, Vector2(0, -1)] +op_type = 0 +operator = 2 + +[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_caymd"] +input_name = "time" + +[sub_resource type="VisualShaderNodeClamp" id="VisualShaderNodeClamp_caymd"] +default_input_values = [0, 0.0, 1, 0.0, 2, 0.5] + +[resource] +code = "shader_type spatial; +render_mode blend_mix, depth_draw_opaque, cull_disabled, diffuse_lambert, specular_schlick_ggx, unshaded, shadows_disabled, ambient_light_disabled; + +uniform vec4 base_color : source_color = vec4(3.300000, 0.000000, 0.577000, 1.000000); +uniform float rotation_speed = 1.0; +uniform float speed = 1.0; +uniform sampler2D tex_frg_3 : source_color; +uniform sampler2D tex_frg_5 : source_color; + + + +void fragment() { +// ColorParameter:2 + vec4 n_out2p0 = base_color; + + +// Input:8 + float n_out8p0 = TIME; + + +// FloatParameter:13 + float n_out13p0 = rotation_speed; + + +// FloatParameter:10 + float n_out10p0 = speed; + + +// FloatOp:12 + float n_in12p1 = -1.00000; + float n_out12p0 = n_out10p0 * n_in12p1; + + +// VectorCompose:11 + vec2 n_out11p0 = vec2(n_out13p0, n_out12p0); + + +// VectorOp:7 + vec2 n_out7p0 = vec2(n_out8p0) * n_out11p0; + + +// UVFunc:6 + vec2 n_in6p1 = vec2(1.00000, 1.00000); + vec2 n_out6p0 = n_out7p0 * n_in6p1 + UV; + + +// Texture2D:3 + vec4 n_out3p0 = texture(tex_frg_3, n_out6p0); + + +// Texture2D:5 + vec4 n_out5p0 = texture(tex_frg_5, UV); + + +// FloatOp:4 + float n_out4p0 = n_out3p0.x - n_out5p0.x; + + +// Clamp:9 + float n_in9p1 = 0.00000; + float n_in9p2 = 0.50000; + float n_out9p0 = clamp(n_out4p0, n_in9p1, n_in9p2); + + +// Output:0 + ALBEDO = vec3(n_out2p0.xyz); + ALPHA = n_out9p0; + + +} +" +graph_offset = Vector2(-646.088, -139.978) +modes/cull = 2 +flags/unshaded = true +flags/shadows_disabled = true +flags/ambient_light_disabled = true +nodes/fragment/0/position = Vector2(1180, 160) +nodes/fragment/2/node = SubResource("VisualShaderNodeColorParameter_caymd") +nodes/fragment/2/position = Vector2(-680, -180) +nodes/fragment/3/node = SubResource("VisualShaderNodeTexture_wi2x2") +nodes/fragment/3/position = Vector2(-640, 300) +nodes/fragment/4/node = SubResource("VisualShaderNodeFloatOp_caymd") +nodes/fragment/4/position = Vector2(-20, 520) +nodes/fragment/5/node = SubResource("VisualShaderNodeTexture_3tmym") +nodes/fragment/5/position = Vector2(-640, 1260) +nodes/fragment/6/node = SubResource("VisualShaderNodeUVFunc_caymd") +nodes/fragment/6/position = Vector2(-1280, 500) +nodes/fragment/7/node = SubResource("VisualShaderNodeVectorOp_caymd") +nodes/fragment/7/position = Vector2(-1860, 520) +nodes/fragment/8/node = SubResource("VisualShaderNodeInput_caymd") +nodes/fragment/8/position = Vector2(-2700, 460) +nodes/fragment/9/node = SubResource("VisualShaderNodeClamp_caymd") +nodes/fragment/9/position = Vector2(500, 480) +nodes/fragment/10/node = SubResource("VisualShaderNodeFloatParameter_caymd") +nodes/fragment/10/position = Vector2(-3460, 880) +nodes/fragment/11/node = SubResource("VisualShaderNodeVectorCompose_wi2x2") +nodes/fragment/11/position = Vector2(-2380, 760) +nodes/fragment/12/node = SubResource("VisualShaderNodeFloatOp_wi2x2") +nodes/fragment/12/position = Vector2(-2860, 820) +nodes/fragment/13/node = SubResource("VisualShaderNodeFloatParameter_wi2x2") +nodes/fragment/13/position = Vector2(-3460, 360) +nodes/fragment/connections = PackedInt32Array(2, 0, 0, 0, 3, 0, 4, 0, 5, 0, 4, 1, 6, 0, 3, 0, 7, 0, 6, 2, 8, 0, 7, 0, 4, 0, 9, 0, 9, 0, 0, 1, 11, 0, 7, 1, 10, 0, 12, 0, 12, 0, 11, 1, 13, 0, 11, 0) diff --git a/asset/projectile/projectile_trail_shader.tres b/asset/projectile/projectile_trail_shader.tres new file mode 100644 index 0000000..27b93cc --- /dev/null +++ b/asset/projectile/projectile_trail_shader.tres @@ -0,0 +1,202 @@ +[gd_resource type="VisualShader" load_steps=23 format=3 uid="uid://w1pxn1nolx5n"] + +[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_baanr"] +parameter_name = "speed" +default_value_enabled = true +default_value = 1.0 + +[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_baanr"] +operator = 2 + +[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_2mh5s"] +input_name = "time" + +[sub_resource type="Gradient" id="Gradient_2mh5s"] + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_baanr"] +gradient = SubResource("Gradient_2mh5s") +fill_from = Vector2(0.854701, 0.965812) +fill_to = Vector2(0.433761, 1) + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_baanr"] +texture = SubResource("GradientTexture2D_baanr") + +[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_2mh5s"] +operator = 2 + +[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_4g5rp"] +output_port_for_preview = 0 +operator = 2 + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_luuak"] +gradient = SubResource("Gradient_2mh5s") +fill_from = Vector2(0.119658, 0.970085) +fill_to = Vector2(0.529915, 1) + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_1f1av"] +texture = SubResource("GradientTexture2D_luuak") + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_2mh5s"] +source = 5 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_4g5rp"] +parameter_name = "colors" + +[sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_2mh5s"] +expanded_output_ports = [0] + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_4g5rp"] +gradient = SubResource("Gradient_2mh5s") +fill_from = Vector2(0, 0.568376) +fill_to = Vector2(0, 0) + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_luuak"] +output_port_for_preview = 0 +texture = SubResource("GradientTexture2D_4g5rp") + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_baanr"] +frequency = 0.0033 + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_2mh5s"] +seamless = true +noise = SubResource("FastNoiseLite_baanr") + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_4g5rp"] +output_port_for_preview = 0 +texture = SubResource("NoiseTexture2D_2mh5s") + +[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_luuak"] +operator = 1 + +[sub_resource type="VisualShaderNodeClamp" id="VisualShaderNodeClamp_baanr"] + +[sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_baanr"] + +[sub_resource type="VisualShaderNodeVectorCompose" id="VisualShaderNodeVectorCompose_baanr"] +default_input_values = [0, 1.0, 1, 0.0, 2, 0.0] +op_type = 0 + +[resource] +code = "shader_type spatial; +render_mode blend_mix, depth_draw_opaque, cull_disabled, diffuse_lambert, specular_schlick_ggx; + +uniform sampler2D colors; +uniform float speed = 1.0; +uniform sampler2D tex_frg_4; +uniform sampler2D tex_frg_3; +uniform sampler2D tex_frg_13; +uniform sampler2D tex_frg_18; + + + +void fragment() { +// UVFunc:21 + vec2 n_in21p1 = vec2(1.00000, 1.00000); + vec2 n_in21p2 = vec2(0.00000, 0.00000); + vec2 n_out21p0 = n_in21p2 * n_in21p1 + UV; + + + vec4 n_out19p0; +// Texture2D:19 + n_out19p0 = texture(colors, n_out21p0); + + +// Input:12 + float n_out12p0 = TIME; + + +// FloatParameter:10 + float n_out10p0 = speed; + + +// FloatOp:11 + float n_out11p0 = n_out12p0 * n_out10p0; + + +// VectorCompose:8 + float n_in8p0 = 1.00000; + vec2 n_out8p0 = vec2(n_in8p0, n_out11p0); + + +// UVFunc:7 + vec2 n_in7p1 = vec2(1.00000, 1.00000); + vec2 n_out7p0 = n_out8p0 * n_in7p1 + UV; + + +// Texture2D:4 + vec4 n_out4p0 = texture(tex_frg_4, n_out7p0); + + +// Texture2D:3 + vec4 n_out3p0 = texture(tex_frg_3, UV); + + +// FloatOp:5 + float n_out5p0 = n_out4p0.x - n_out3p0.x; + + +// Texture2D:13 + vec4 n_out13p0 = texture(tex_frg_13, UV); + + +// Texture2D:18 + vec4 n_out18p0 = texture(tex_frg_18, UV); + + +// FloatOp:17 + float n_out17p0 = n_out13p0.x * n_out18p0.x; + + +// FloatOp:15 + float n_out15p0 = n_out5p0 * n_out17p0; + + +// Clamp:6 + float n_in6p1 = 0.00000; + float n_in6p2 = 1.00000; + float n_out6p0 = clamp(n_out15p0, n_in6p1, n_in6p2); + + +// Output:0 + ALBEDO = vec3(n_out19p0.xyz); + ALPHA = n_out6p0; + + +} +" +graph_offset = Vector2(-285.482, -150.426) +modes/cull = 2 +nodes/fragment/0/position = Vector2(2860, 360) +nodes/fragment/3/node = SubResource("VisualShaderNodeTexture_luuak") +nodes/fragment/3/position = Vector2(-420, 1440) +nodes/fragment/4/node = SubResource("VisualShaderNodeTexture_4g5rp") +nodes/fragment/4/position = Vector2(-420, 500) +nodes/fragment/5/node = SubResource("VisualShaderNodeFloatOp_luuak") +nodes/fragment/5/position = Vector2(240, 700) +nodes/fragment/6/node = SubResource("VisualShaderNodeClamp_baanr") +nodes/fragment/6/position = Vector2(2320, 780) +nodes/fragment/7/node = SubResource("VisualShaderNodeUVFunc_baanr") +nodes/fragment/7/position = Vector2(-1100, 700) +nodes/fragment/8/node = SubResource("VisualShaderNodeVectorCompose_baanr") +nodes/fragment/8/position = Vector2(-1609.15, 727.385) +nodes/fragment/10/node = SubResource("VisualShaderNodeFloatParameter_baanr") +nodes/fragment/10/position = Vector2(-2920, 1220) +nodes/fragment/11/node = SubResource("VisualShaderNodeFloatOp_baanr") +nodes/fragment/11/position = Vector2(-2167.19, 791.113) +nodes/fragment/12/node = SubResource("VisualShaderNodeInput_2mh5s") +nodes/fragment/12/position = Vector2(-2900, 780) +nodes/fragment/13/node = SubResource("VisualShaderNodeTexture_baanr") +nodes/fragment/13/position = Vector2(580, 1120) +nodes/fragment/15/node = SubResource("VisualShaderNodeFloatOp_2mh5s") +nodes/fragment/15/position = Vector2(1660, 700) +nodes/fragment/17/node = SubResource("VisualShaderNodeFloatOp_4g5rp") +nodes/fragment/17/position = Vector2(1140, 1420) +nodes/fragment/18/node = SubResource("VisualShaderNodeTexture_1f1av") +nodes/fragment/18/position = Vector2(600, 1700) +nodes/fragment/19/node = SubResource("VisualShaderNodeTexture_2mh5s") +nodes/fragment/19/position = Vector2(1620, -140) +nodes/fragment/20/node = SubResource("VisualShaderNodeTexture2DParameter_4g5rp") +nodes/fragment/20/position = Vector2(20, -140) +nodes/fragment/21/node = SubResource("VisualShaderNodeUVFunc_2mh5s") +nodes/fragment/21/position = Vector2(900, -240) +nodes/fragment/connections = PackedInt32Array(6, 0, 0, 1, 3, 0, 5, 1, 4, 0, 5, 0, 7, 0, 4, 0, 8, 0, 7, 2, 11, 0, 8, 1, 10, 0, 11, 1, 12, 0, 11, 0, 5, 0, 15, 0, 15, 0, 6, 0, 13, 0, 17, 0, 18, 0, 17, 1, 17, 0, 15, 1, 19, 0, 0, 0, 20, 0, 19, 2, 21, 0, 19, 0)