From ded320d2dc1e4caaccb36e28acf0cad06341635c Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Thu, 29 Feb 2024 00:06:30 -0500 Subject: [PATCH] make actual death animation for fami --- graphics/enemy/boss/famira_dissolve.png | Bin 0 -> 1459 bytes .../enemy/boss/famira_dissolve.png.import | 35 ++++ objects/enemy/boss/fami_transform.material | Bin 408 -> 409 bytes objects/enemy/boss/famira.tscn | 158 +++++++++++++++++- objects/enemy/boss/sg2083.tscn | 4 + shaders/elecricity_no_blood.tres | 133 +++++++++++++++ 6 files changed, 324 insertions(+), 6 deletions(-) create mode 100644 graphics/enemy/boss/famira_dissolve.png create mode 100644 graphics/enemy/boss/famira_dissolve.png.import create mode 100644 shaders/elecricity_no_blood.tres diff --git a/graphics/enemy/boss/famira_dissolve.png b/graphics/enemy/boss/famira_dissolve.png new file mode 100644 index 0000000000000000000000000000000000000000..4f64df4fe1b296a60b733342cae32fb1cfe91893 GIT binary patch literal 1459 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58#vg2l+&R-`+%J0OlRi+PiJR^f};Gi%$!sP z291fe6Ky>XJIEZ3zucuH%5L4Ek+Qar7w6r_&=9P}+or_m33*I;3 zbHvjcog6boo(yZN>G|H1cpYad-%GF`-v$yUGbvmxJ?cT8*B9@ofQ`@Lr2uwxFdIv$_R zw0Zs#bE~K?91?ff^wwF=+Qc67j^VI>Th6IQ&& z0!26rJR*x381$4un6YB1eHl=Yy~NYkmHh>iEQ^8qWYZ&>Kq1Kz*N775{M_8syb=cI zqSVBa)D(sC%#sWRcTeAd@J2py1_tIHPZ!6Kid%1Q-|btiAkuKr>Dk}-nLBf(F1w{L zM_=D%qkis3vwVj2dZ5}-fF%SD6s_HwX8-A(^t-LfS6`khKb+3htMSg4q2RE+#Xcs1 znuX=E2IcXtd-997{9W@{{$ur`Z(Fxs%lg)s-ucpIt&ROe^X2Xg=20)~>`b|=?{3+@ zt#hB-S5EQj=hI8Wzvn*N*c%a+URgNn?T>BT4*9(MbHyu*!tK;&ZGEnDH2nOw#cE6L z%`e>ID_a@prr%gr9lt@#&%f?jzYKGE&&!+1tBlLnsH@l-7r+1i-cDf?|2^a1dk*K= zzTQ#2KKp#jm!I#yzBu-0oAZ0`i!Y>0mrLe9JMNaweq{S=@x4p-?9#HT+Hy1XP6}7v z`+e8WwC?>BQ}gxFw|gnJ%(dUT56!EMwd{`LeZV*Q&??R~X*M%1HviQ;e`|NW=E-u= zXZyKVt}aXaW_)j^`;-?QE_<3KK5DwP`A5F{B9wonw&dyaKWim+So5A)aer@8s$uqQ z!RK411ig9vYh#qLerEdlO~&EsH_yN3JO6NVxQXQPxZZhzO8cE3+_bLSYWk{MJ2EW0 zJi7AluPN&*J{rYo9<40xD~e$kXPkFBp1FyEfr){GL4l!xN(==CKSpYr2X+@WCocKU Ye>J1ChQ||>of#NBUHx3vIVCg!0J|O3lK=n! literal 0 HcmV?d00001 diff --git a/graphics/enemy/boss/famira_dissolve.png.import b/graphics/enemy/boss/famira_dissolve.png.import new file mode 100644 index 0000000..e11954d --- /dev/null +++ b/graphics/enemy/boss/famira_dissolve.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famira_dissolve.png-fc21beac8113424467a72a3beb454de9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/famira_dissolve.png" +dest_files=[ "res://.import/famira_dissolve.png-fc21beac8113424467a72a3beb454de9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/objects/enemy/boss/fami_transform.material b/objects/enemy/boss/fami_transform.material index 3d93c44710550ef90f4f14c518553d8df16c5c98..89da5014b32564a769b78d42b1b063292f0d30be 100644 GIT binary patch literal 409 zcmV;K0cQSEQ$s@n000005C8!D0ssJk0RR9fwJ-f(`~kfS02Y%$HBiMS9TYcF6TSgm ztWGr$W;W|2v`rqe_ZH(4OC;IIC-YuRn%Hc$Z~IMvg%OU+Qp~Mpq*E;bFaR?E_e{sq z@x^$l=@B&#@9Rn~RpaL4QnFBlc zH{ig1;49-)bSJa5O5PH)4i-fVmmLdJ(18~rZ literal 408 zcmV;J0cZYFQ$s@n000005C8!90ssJj0RR9fwJ-f(_yM&G0ESXPHBiMS9TYcF6Mj%= zsAh^`rn9r5ZSs)4w-}dLB579^nEgsgqd7x9*m3gsue@E7Vs14fodPQWE&wtBj-}&^ z@luiD3pH-s)=W(P-G zlm`Qvt~s7<-%2e>7)|kC;PZ0aC{+AN_Ixz$Omqwz8_wpRLVsp78c}#fqe+-T2vf%Z z0n12RHaHW9~tj z*7Za*io!KuF5_MFB(t?iz9O>>EXo!%ABvQ)RW1y?1|jdR%f3NoEI}KxvoF?eg5(bN z=8+LNLv_~=%17m>8C(p2|I#3)rySDdq8^-RaJA*M*_wb~t;estytFgFLA3!=Q$s^I C1-CQ+ diff --git a/objects/enemy/boss/famira.tscn b/objects/enemy/boss/famira.tscn index 7626a8a..2b5dd17 100644 --- a/objects/enemy/boss/famira.tscn +++ b/objects/enemy/boss/famira.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=34 format=2] +[gd_scene load_steps=38 format=2] [ext_resource path="res://objects/enemy/boss/famira.gd" type="Script" id=1] [ext_resource path="res://shaders/scale3x.gdshader" type="Shader" id=2] @@ -17,10 +17,18 @@ [ext_resource path="res://graphics/particles/dust.png" type="Texture" id=15] [ext_resource path="res://graphics/enemy/antlion_body_border.png" type="Texture" id=16] [ext_resource path="res://objects/enemy/boss/fami_transform.material" type="Material" id=17] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=18] +[ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=19] +[ext_resource path="res://graphics/enemy/boss/famira_dissolve.png" type="Texture" id=20] [sub_resource type="RectangleShape2D" id=11] extents = Vector2( 28, 64 ) +[sub_resource type="ShaderMaterial" id=18] +shader = ExtResource( 18 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + [sub_resource type="Animation" id=2] length = 0.001 tracks/0/type = "value" @@ -275,6 +283,42 @@ tracks/20/keys = { "update": 0, "values": [ Vector2( 1, 1 ) ] } +tracks/21/type = "value" +tracks/21/path = NodePath("../DissolveMask:position") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -63, -322 ) ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("../ShardParticles:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 4, -165 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("../ShardParticles:emitting") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} [sub_resource type="Animation" id=4] resource_name = "chasing" @@ -439,8 +483,7 @@ tracks/12/keys = { [sub_resource type="Animation" id=12] resource_name = "die" -length = 0.2 -loop = true +length = 8.0 tracks/0/type = "value" tracks/0/path = NodePath("Hip/Body:rotation_degrees") tracks/0/interp = 1 @@ -580,10 +623,10 @@ tracks/11/loop_wrap = true tracks/11/imported = false tracks/11/enabled = true tracks/11/keys = { -"times": PoolRealArray( 0, 0.1 ), -"transitions": PoolRealArray( 1, 1 ), +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 4, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 6.9, 7, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), "update": 0, -"values": [ Vector2( 4, 39 ), Vector2( 12, 39 ) ] +"values": [ Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ) ] } tracks/12/type = "value" tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") @@ -597,6 +640,66 @@ tracks/12/keys = { "update": 1, "values": [ false ] } +tracks/13/type = "value" +tracks/13/path = NodePath("../DissolveMask:position") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -28, -300 ), Vector2( 58, -84 ) ] +} +tracks/14/type = "value" +tracks/14/path = NodePath(".:material:shader_param/arc_color") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 2, 8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 0 ), Color( 0.345098, 0.74902, 0.878431, 1 ), Color( 0.345098, 0.74902, 0.878431, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath(".:material:shader_param/background_color") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 2, 8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 0 ), Color( 0.396078, 1, 1, 1 ), Color( 0.396078, 1, 1, 1 ) ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("../ShardParticles:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -197 ), Vector2( 4, 19 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("../ShardParticles:emitting") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0.2, 7 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} [sub_resource type="Animation" id=17] resource_name = "grow" @@ -1610,7 +1713,31 @@ collision_mask = 128 position = Vector2( 12, -64 ) shape = SubResource( 11 ) +[node name="ShardParticles" type="CPUParticles2D" parent="."] +material = SubResource( 18 ) +position = Vector2( 4, -165 ) +emitting = false +amount = 48 +lifetime = 4.0 +local_coords = false +texture = ExtResource( 19 ) +emission_shape = 2 +emission_rect_extents = Vector2( 16, 0 ) +direction = Vector2( 0, -2 ) +spread = 60.0 +gravity = Vector2( 0, 24 ) +initial_velocity = 250.0 +initial_velocity_random = 0.35 +linear_accel = -30.19 + +[node name="DissolveMask" type="Light2D" parent="."] +position = Vector2( -63, -322 ) +texture = ExtResource( 20 ) +mode = 3 +range_item_cull_mask = 32 + [node name="ChickenMan" type="Node2D" parent="."] +light_mask = 33 material = ExtResource( 17 ) position = Vector2( 0, -96 ) @@ -1626,10 +1753,12 @@ anims/roar = SubResource( 3 ) anims/shooting = SubResource( 7 ) [node name="Hip" type="Node2D" parent="ChickenMan"] +light_mask = 33 use_parent_material = true position = Vector2( 8, 39 ) [node name="LegBack" type="Sprite" parent="ChickenMan/Hip"] +light_mask = 33 use_parent_material = true position = Vector2( -9.49483, 5.9499 ) rotation = -0.0114762 @@ -1638,6 +1767,7 @@ texture = ExtResource( 11 ) offset = Vector2( -7.02542, -13.2616 ) [node name="Body" type="Sprite" parent="ChickenMan/Hip"] +light_mask = 33 use_parent_material = true position = Vector2( -1, 1 ) rotation = 1.55932 @@ -1647,12 +1777,14 @@ offset = Vector2( -14.8861, -10.6454 ) flip_v = true [node name="HitboxTransform" type="RemoteTransform2D" parent="ChickenMan/Hip/Body"] +light_mask = 33 position = Vector2( -10.255, -0.546865 ) rotation = -1.57079 remote_path = NodePath("../../../../Hitbox/Body") update_scale = false [node name="BackArm" type="Node2D" parent="ChickenMan/Hip/Body"] +light_mask = 33 use_parent_material = true position = Vector2( -15.0905, 7.09585 ) rotation = -1.55929 @@ -1664,6 +1796,7 @@ segments = 4 target = NodePath("HandBack") [node name="HandBack" type="Sprite" parent="ChickenMan/Hip/Body/BackArm"] +light_mask = 33 material = SubResource( 1 ) use_parent_material = true position = Vector2( -34, 6 ) @@ -1675,6 +1808,7 @@ region_rect = Rect2( 0, 0, 16, 12 ) [node name="BackArmBorder" type="Node2D" parent="ChickenMan/Hip/Body/BackArm"] show_behind_parent = true +light_mask = 33 use_parent_material = true script = ExtResource( 12 ) texture = ExtResource( 16 ) @@ -1682,6 +1816,7 @@ segments = 4 target = NodePath("../HandBack") [node name="FrontArm" type="Node2D" parent="ChickenMan/Hip/Body"] +light_mask = 33 use_parent_material = true position = Vector2( -15.3626, -6.5891 ) rotation = -1.55929 @@ -1693,6 +1828,7 @@ segments = 4 target = NodePath("HandFront") [node name="HandFront" type="Sprite" parent="ChickenMan/Hip/Body/FrontArm"] +light_mask = 33 material = SubResource( 1 ) use_parent_material = true position = Vector2( -31.9996, 22.0018 ) @@ -1704,6 +1840,7 @@ region_rect = Rect2( 0, 0, 16, 12 ) [node name="FrontArmBorder" type="Node2D" parent="ChickenMan/Hip/Body/FrontArm"] show_behind_parent = true +light_mask = 33 use_parent_material = true script = ExtResource( 12 ) texture = ExtResource( 16 ) @@ -1712,6 +1849,7 @@ target = NodePath("../HandFront") [node name="Neck" type="Sprite" parent="ChickenMan/Hip/Body"] show_behind_parent = true +light_mask = 33 use_parent_material = true position = Vector2( -25.8929, -8.09683 ) rotation = -2.40547 @@ -1721,12 +1859,14 @@ texture = ExtResource( 10 ) offset = Vector2( -12.5338, -3.19571 ) [node name="HitboxTransform" type="RemoteTransform2D" parent="ChickenMan/Hip/Body/Neck"] +light_mask = 33 position = Vector2( 7.47667, -8.4856 ) rotation = -2.96856 remote_path = NodePath("../../../../../Hitbox/Brain") update_scale = false [node name="BreathParticles" type="CPUParticles2D" parent="ChickenMan/Hip/Body/Neck"] +light_mask = 33 position = Vector2( 2.97876, -8.17331 ) rotation = 0.437951 scale = Vector2( 0.724233, 0.497597 ) @@ -1758,6 +1898,7 @@ scale_amount_curve = SubResource( 8 ) color_ramp = SubResource( 9 ) [node name="Headlower" type="Sprite" parent="ChickenMan/Hip/Body/Neck"] +light_mask = 33 use_parent_material = true position = Vector2( 6.09458, -5.24508 ) rotation = 0.964506 @@ -1767,12 +1908,14 @@ texture = ExtResource( 8 ) offset = Vector2( -23.6288, 1.97347 ) [node name="HitboxTransform" type="RemoteTransform2D" parent="ChickenMan/Hip/Body/Neck/Headlower"] +light_mask = 33 position = Vector2( -15.6932, 6.83872 ) rotation = -4.70641 remote_path = NodePath("../../../../../../Hitbox/LowerJaw") update_scale = false [node name="Headupper" type="Sprite" parent="ChickenMan/Hip/Body/Neck"] +light_mask = 33 use_parent_material = true position = Vector2( 6.70938, -6.04151 ) rotation = 0.801398 @@ -1782,18 +1925,21 @@ texture = ExtResource( 9 ) offset = Vector2( -21.4816, 1.20875 ) [node name="HitboxTransform" type="RemoteTransform2D" parent="ChickenMan/Hip/Body/Neck/Headupper"] +light_mask = 33 position = Vector2( -15.711, -8.80663 ) rotation = -1.57994 remote_path = NodePath("../../../../../../Hitbox/UpperJaw") update_scale = false [node name="Eye" type="Sprite" parent="ChickenMan/Hip/Body/Neck/Headupper"] +light_mask = 33 use_parent_material = true position = Vector2( -22.5774, -9.61752 ) texture = ExtResource( 7 ) offset = Vector2( 20.9715, 12.1291 ) [node name="LegFront" type="Sprite" parent="ChickenMan/Hip"] +light_mask = 33 use_parent_material = true position = Vector2( 12.9916, 6.2433 ) rotation = -0.0114762 diff --git a/objects/enemy/boss/sg2083.tscn b/objects/enemy/boss/sg2083.tscn index 7855ed4..2295e94 100644 --- a/objects/enemy/boss/sg2083.tscn +++ b/objects/enemy/boss/sg2083.tscn @@ -1384,6 +1384,7 @@ update_scale = false [node name="Head" type="Sprite" parent="Axle"] unique_name_in_owner = true position = Vector2( 0, -4 ) +z_index = 5 texture = ExtResource( 6 ) offset = Vector2( -13, -25 ) __meta__ = { @@ -1490,6 +1491,7 @@ region_rect = Rect2( 0, 0, 256, 16 ) [node name="BeamShape" type="CollisionShape2D" parent="Axle/Head/Beam/Hitbox"] position = Vector2( -128, 0 ) +z_index = 10 shape = SubResource( 6 ) disabled = true @@ -1551,6 +1553,7 @@ rotation = 3.40339 [node name="JointFront" type="Sprite" parent="Axle"] position = Vector2( 11, -4 ) +z_index = 5 texture = ExtResource( 7 ) __meta__ = { "_edit_bone_": true, @@ -1619,6 +1622,7 @@ rotation_lock = 0.0 [node name="KneeFront" type="Sprite" parent="Axle"] position = Vector2( 27.2509, 28.1233 ) +z_index = 5 texture = ExtResource( 8 ) hframes = 8 script = ExtResource( 10 ) diff --git a/shaders/elecricity_no_blood.tres b/shaders/elecricity_no_blood.tres new file mode 100644 index 0000000..14de774 --- /dev/null +++ b/shaders/elecricity_no_blood.tres @@ -0,0 +1,133 @@ +[gd_resource type="Shader" format=2] + +[resource] +code = "shader_type canvas_item; + +const float TAU = 6.28319; + +uniform float arc_speed = 4.0; +uniform float arc_fps = 10.0; +uniform float arc_scale = 8.0; +uniform float arc_threshold = 0.15; +uniform vec4 arc_color : hint_color = vec4(1.0, 0.93, 0.0, 1.0); +uniform float gamma = 2.0; +uniform float flash_rate = 3.0; +uniform float flash_intensity = 0.2; +uniform vec4 background_color : hint_color = vec4(0.0, 0.0, 0.0, 0.0); + +// Description : Array and textureless GLSL 2D/3D/4D simplex +// noise functions. +// Author : Ian McEwan, Ashima Arts. +// Maintainer : stegu +// Lastmod : 20110822 (ijm) +// License : Copyright (C) 2011 Ashima Arts. All rights reserved. +// Distributed under the MIT License. See LICENSE file. +// https://github.com/ashima/webgl-noise +// https://github.com/stegu/webgl-noise +// + +vec3 mod289_3(vec3 x) { + return x - floor(x * (1.0 / 289.0)) * 289.0; +} + +vec4 mod289_4(vec4 x) { + return x - floor(x * (1.0 / 289.0)) * 289.0; +} + +vec4 permute(vec4 x) { + return mod289_4(((x * 34.0) + 1.0) * x); +} + +vec4 taylorInvSqrt(vec4 r) { + return 2.79284291400159 - 0.85373472095314 * r; +} + +float snoise(vec3 v) { + vec2 C = vec2(1.0/6.0, 1.0/3.0) ; + vec4 D = vec4(0.0, 0.5, 1.0, 2.0); + + // First corner + vec3 i = floor(v + dot(v, vec3(C.y)) ); + vec3 x0 = v - i + dot(i, vec3(C.x)) ; + + // Other corners + vec3 g = step(x0.yzx, x0.xyz); + vec3 l = 1.0 - g; + vec3 i1 = min( g.xyz, l.zxy ); + vec3 i2 = max( g.xyz, l.zxy ); + + // x0 = x0 - 0.0 + 0.0 * C.xxx; + // x1 = x0 - i1 + 1.0 * C.xxx; + // x2 = x0 - i2 + 2.0 * C.xxx; + // x3 = x0 - 1.0 + 3.0 * C.xxx; + vec3 x1 = x0 - i1 + vec3(C.x); + vec3 x2 = x0 - i2 + vec3(C.y); // 2.0*C.x = 1/3 = C.y + vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y + + // Permutations + i = mod289_3(i); + vec4 p = permute( permute( permute( + i.z + vec4(0.0, i1.z, i2.z, 1.0 )) + + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) + + i.x + vec4(0.0, i1.x, i2.x, 1.0 )); + + // Gradients: 7x7 points over a square, mapped onto an octahedron. + // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294) + float n_ = 0.142857142857; // 1.0/7.0 + vec3 ns = n_ * D.wyz - D.xzx; + + vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7) + + vec4 x_ = floor(j * ns.z); + vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N) + + vec4 x = x_ *ns.x + vec4(ns.y); + vec4 y = y_ *ns.x + vec4(ns.y); + vec4 h = 1.0 - abs(x) - abs(y); + + vec4 b0 = vec4( x.xy, y.xy ); + vec4 b1 = vec4( x.zw, y.zw ); + + //vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0; + //vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0; + vec4 s0 = floor(b0)*2.0 + 1.0; + vec4 s1 = floor(b1)*2.0 + 1.0; + vec4 sh = -step(h, vec4(0.0)); + + vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ; + vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ; + + vec3 p0 = vec3(a0.xy,h.x); + vec3 p1 = vec3(a0.zw,h.y); + vec3 p2 = vec3(a1.xy,h.z); + vec3 p3 = vec3(a1.zw,h.w); + + //Normalise gradients + vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3))); + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + + // Mix final noise value + vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), vec4(0.0)); + m = m * m; + return 22.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3) ) ); +} + + +void fragment() { + vec4 tex_color = texture(TEXTURE, UV); + tex_color.rgb = pow(tex_color.rgb, vec3(1.0 / (gamma + sin(fract(TIME * floor(flash_rate)) * TAU) * flash_intensity))); + tex_color.rgb = mix(tex_color.rgb, background_color.rgb, background_color.a); +// tex_color.rgb = pow(tex_color.rgb, vec3(0.5 + sin(TIME * 20.0) * 0.1)); +// tex_color.rgb = pow(tex_color.rgb, vec3(1.0 / 2.0)); +// tex_color.rgb += (round(sin(TIME * 20.0) * 4.0)) * 0.25 * 0.05; + float n = snoise(vec3(SCREEN_UV / SCREEN_PIXEL_SIZE / arc_scale, (floor(TIME) + (floor(fract(TIME) * arc_fps)) / arc_fps) * arc_speed)); +// float n = snoise(vec3(SCREEN_UV / SCREEN_PIXEL_SIZE / arc_scale, floor(fract(TIME) * arc_fps) * arc_speed / arc_fps)); + n = step(abs(n), arc_threshold); + COLOR = vec4(mix(tex_color.rgb, arc_color.rgb, n * arc_color.a), tex_color.a); +// float worley = worley(SCREEN_UV, 128.0, 96.0); +// vec4 tex_color = texture(TEXTURE, UV); +// COLOR = vec4(mix(vec3(1.0, 1.0, 0.2), tex_color.rgb, step(worley, 0.5)), tex_color.a); +}"