From a935cdd077ecac5d6ca2eaac5d58172e26c20e19 Mon Sep 17 00:00:00 2001 From: Rob Kelly Date: Fri, 6 Dec 2024 18:46:08 -0700 Subject: [PATCH] Zephyr particle effect --- levels/debug_level/debug_level.tscn | 16 +++- .../effects/zephyr/zephyr_mesh_curve.tres | 5 ++ .../effects/zephyr/zephyr_mesh_material.tres | 13 +++ src/world/effects/zephyr/zephyr_particle.tscn | 89 +++++++++++++++++++ .../effects/zephyr/zephyr_scale_curve.tres | 8 ++ 5 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 src/world/effects/zephyr/zephyr_mesh_curve.tres create mode 100644 src/world/effects/zephyr/zephyr_mesh_material.tres create mode 100644 src/world/effects/zephyr/zephyr_particle.tscn create mode 100644 src/world/effects/zephyr/zephyr_scale_curve.tres diff --git a/levels/debug_level/debug_level.tscn b/levels/debug_level/debug_level.tscn index 0ebcf9e..98e6f5c 100644 --- a/levels/debug_level/debug_level.tscn +++ b/levels/debug_level/debug_level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=37 format=3 uid="uid://bm2o3mex10v11"] +[gd_scene load_steps=38 format=3 uid="uid://bm2o3mex10v11"] [ext_resource type="Terrain3DAssets" uid="uid://cwl34gstabgrx" path="res://levels/debug_level/terrain_assets.res" id="1_5smdk"] [ext_resource type="Shader" path="res://src/shaders/psx_water.gdshader" id="6_0efu4"] @@ -10,6 +10,7 @@ [ext_resource type="PackedScene" uid="uid://di7aql54lksn7" path="res://src/props/scenery/trees/palm_tree/palm_tree.tscn" id="12_sswxf"] [ext_resource type="PackedScene" uid="uid://c7l58wuuahn7w" path="res://src/props/flag/flag.tscn" id="13_6jtao"] [ext_resource type="PackedScene" uid="uid://cl0goj38u7r72" path="res://src/props/scenery/beach/sailboat.tscn" id="14_6reiy"] +[ext_resource type="PackedScene" uid="uid://dwfckgdxnwwru" path="res://src/world/effects/zephyr/zephyr_particle.tscn" id="16_2kyww"] [ext_resource type="Texture2D" uid="uid://du3vk5nnksohs" path="res://assets/sprites/particles/sparkle.png" id="16_2m5yu"] [ext_resource type="PackedScene" uid="uid://nqar1qcun8ax" path="res://src/props/scenery/highway/guard_rail/guard_rail.tscn" id="16_xtxyj"] [ext_resource type="PackedScene" uid="uid://d0tcr6uijpym5" path="res://src/props/scenery/highway/highway_road.tscn" id="17_amems"] @@ -233,7 +234,7 @@ shape = SubResource("BoxShape3D_x3wvm") transform = Transform3D(-0.74629, 0, -0.665621, 0, 1, 0, 0.665621, 0, -0.74629, 381.024, -0.5, 224.968) [node name="Flag" parent="Course" instance=ExtResource("13_6jtao")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 540, 4, 452) +transform = Transform3D(-0.777146, 0, -0.629321, 0, 1, 0, 0.629321, 0, -0.777146, 540, 4, 452) [node name="PlayerSpawn1" type="Marker3D" parent="Course" groups=["PlayerSpawn"]] transform = Transform3D(-0.842697, 0, -0.538388, 0, 1, 0, 0.538388, 0, -0.842697, 212.717, 4, 294.073) @@ -368,3 +369,14 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.107056, 54.6249, 58.7148) [node name="Umineko2" parent="NorthSea" instance=ExtResource("21_ch6qk")] transform = Transform3D(-0.911669, 0, -0.410926, 0, 1, 0, 0.410926, 0, -0.911669, 46.6726, 54.6249, 64.5933) + +[node name="GlobalEffects" type="Node3D" parent="."] + +[node name="ZephyrParticle" parent="GlobalEffects" instance=ExtResource("16_2kyww")] +transform = Transform3D(0.744591, 0, -0.667521, 0, 1, 0, 0.667521, 0, 0.744591, 343.248, 54.9445, 208.568) + +[node name="ZephyrParticle2" parent="GlobalEffects" instance=ExtResource("16_2kyww")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -159.689, 62.5083, 1162.07) + +[node name="ZephyrParticle3" parent="GlobalEffects" instance=ExtResource("16_2kyww")] +transform = Transform3D(0.258819, 0, -0.965926, 0, 1, 0, 0.965926, 0, 0.258819, -406.175, 99.5943, 417.273) diff --git a/src/world/effects/zephyr/zephyr_mesh_curve.tres b/src/world/effects/zephyr/zephyr_mesh_curve.tres new file mode 100644 index 0000000..54b364d --- /dev/null +++ b/src/world/effects/zephyr/zephyr_mesh_curve.tres @@ -0,0 +1,5 @@ +[gd_resource type="Curve" format=3 uid="uid://5vyddepvq1ho"] + +[resource] +_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.333, 1), 0.0, 0.0, 0, 0, Vector2(0.667, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 4 diff --git a/src/world/effects/zephyr/zephyr_mesh_material.tres b/src/world/effects/zephyr/zephyr_mesh_material.tres new file mode 100644 index 0000000..7894ecf --- /dev/null +++ b/src/world/effects/zephyr/zephyr_mesh_material.tres @@ -0,0 +1,13 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://b20gam4x6f8gw"] + +[resource] +transparency = 1 +cull_mode = 2 +diffuse_mode = 3 +specular_mode = 1 +vertex_color_use_as_albedo = true +albedo_color = Color(0.9, 1, 1, 0.666667) +emission_enabled = true +emission = Color(0.368627, 1, 1, 1) +emission_energy_multiplier = 0.1 +use_particle_trails = true diff --git a/src/world/effects/zephyr/zephyr_particle.tscn b/src/world/effects/zephyr/zephyr_particle.tscn new file mode 100644 index 0000000..e202206 --- /dev/null +++ b/src/world/effects/zephyr/zephyr_particle.tscn @@ -0,0 +1,89 @@ +[gd_scene load_steps=13 format=3 uid="uid://dwfckgdxnwwru"] + +[ext_resource type="Texture2D" uid="uid://c0rf8luj8nbom" path="res://src/world/effects/zephyr/zephyr_scale_curve.tres" id="1_opmvf"] +[ext_resource type="Curve" uid="uid://5vyddepvq1ho" path="res://src/world/effects/zephyr/zephyr_mesh_curve.tres" id="2_5lvg1"] +[ext_resource type="Material" uid="uid://b20gam4x6f8gw" path="res://src/world/effects/zephyr/zephyr_mesh_material.tres" id="3_yxxm1"] + +[sub_resource type="Curve" id="Curve_ddgk4"] +min_value = -1.0 +_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.25, -1), 0.0, 0.0, 0, 0, Vector2(0.5, 1), 0.0, 0.0, 0, 0, Vector2(0.75, -1), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0] +point_count = 5 + +[sub_resource type="CurveXYZTexture" id="CurveXYZTexture_4pntk"] +curve_y = SubResource("Curve_ddgk4") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_t5ein"] +particle_flag_align_y = true +emission_shape = 3 +emission_box_extents = Vector3(100, 50, 100) +spread = 0.0 +initial_velocity_min = 40.0 +initial_velocity_max = 40.0 +directional_velocity_min = 3.99998 +directional_velocity_max = 3.99998 +directional_velocity_curve = SubResource("CurveXYZTexture_4pntk") +gravity = Vector3(0, 0, 0) +scale_curve = ExtResource("1_opmvf") +sub_emitter_mode = 1 +sub_emitter_frequency = 4.0 + +[sub_resource type="RibbonTrailMesh" id="RibbonTrailMesh_rhyqq"] +material = ExtResource("3_yxxm1") +shape = 0 +sections = 12 +section_length = 0.87 +curve = ExtResource("2_5lvg1") + +[sub_resource type="Curve" id="Curve_v0f0t"] +min_value = -1.0 +_data = [Vector2(0.2, 1), 0.0, 0.0, 0, 0, Vector2(0.3, -1), 0.0, 0.0, 0, 0, Vector2(0.4, 1), 0.0, 0.0, 0, 0] +point_count = 3 + +[sub_resource type="Curve" id="Curve_mp6e7"] +min_value = -1.0 +_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.0464768, 0.0216568), 0.0, 0.0, 0, 0, Vector2(0.130435, -0.0698431), 0.0, 0.0, 0, 0, Vector2(0.2, 0), 0.0, 20.0, 0, 1, Vector2(0.25, 1), 0.0, 0.0, 0, 0, Vector2(0.35, -1), 0.0, 0.0, 0, 0, Vector2(0.4, 0), 20.0, 0.0, 1, 0, Vector2(0.449102, 0.1875), 0.0, 0.0, 0, 0, Vector2(0.625749, -0.0577831), 0.0, 0.0, 0, 0, Vector2(0.7, 0), 0.0, 0.0, 0, 0] +point_count = 10 + +[sub_resource type="CurveXYZTexture" id="CurveXYZTexture_j3h3q"] +curve_x = SubResource("Curve_v0f0t") +curve_y = SubResource("Curve_mp6e7") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_cn2bt"] +particle_flag_align_y = true +spread = 0.0 +directional_velocity_min = 37.0 +directional_velocity_max = 40.0 +directional_velocity_curve = SubResource("CurveXYZTexture_j3h3q") +gravity = Vector3(0, 0, 0) +scale_curve = ExtResource("1_opmvf") + +[sub_resource type="RibbonTrailMesh" id="RibbonTrailMesh_inkcn"] +material = ExtResource("3_yxxm1") +shape = 0 +sections = 24 +curve = ExtResource("2_5lvg1") + +[node name="WaveParticle" type="GPUParticles3D"] +amount = 4 +sub_emitter = NodePath("SwirlParticle") +lifetime = 6.0 +randomness = 1.0 +fixed_fps = 60 +interpolate = false +visibility_aabb = AABB(-100, -50, -100, 600, 100, 200) +local_coords = true +trail_enabled = true +trail_lifetime = 1.5 +process_material = SubResource("ParticleProcessMaterial_t5ein") +draw_pass_1 = SubResource("RibbonTrailMesh_rhyqq") + +[node name="SwirlParticle" type="GPUParticles3D" parent="."] +amount = 1 +lifetime = 12.0 +randomness = 1.0 +visibility_aabb = AABB(-100, -50, -100, 600, 100, 200) +local_coords = true +trail_enabled = true +trail_lifetime = 3.0 +process_material = SubResource("ParticleProcessMaterial_cn2bt") +draw_pass_1 = SubResource("RibbonTrailMesh_inkcn") diff --git a/src/world/effects/zephyr/zephyr_scale_curve.tres b/src/world/effects/zephyr/zephyr_scale_curve.tres new file mode 100644 index 0000000..0fb06a3 --- /dev/null +++ b/src/world/effects/zephyr/zephyr_scale_curve.tres @@ -0,0 +1,8 @@ +[gd_resource type="CurveTexture" load_steps=2 format=3 uid="uid://c0rf8luj8nbom"] + +[sub_resource type="Curve" id="Curve_iycj4"] +_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.1, 1), 0.0, 0.0, 0, 0, Vector2(0.65, 1), 0.0, 0.0, 0, 0, Vector2(0.75, 0), 0.0, 0.0, 0, 0] +point_count = 4 + +[resource] +curve = SubResource("Curve_iycj4")