2D multiplayer platformer using Godot Engine
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

181 lines
4.7 KiB

[gd_scene load_steps=17 format=2]
[ext_resource path="res://gfx/hit_decal.png" type="Texture" id=1]
[ext_resource path="res://src/Objects/HitDecal.cs" type="Script" id=2]
[sub_resource type="VisualShaderNodeInput" id=1]
input_name = "modulate_color"
[sub_resource type="VisualShaderNodeInput" id=2]
input_name = "modulate_alpha"
[sub_resource type="VisualShaderNodeScalarOp" id=3]
operator = 2
[sub_resource type="VisualShaderNodeExpression" id=4]
size = Vector2( 512, 260 )
expression = "vec2 tex_size = vec2(textureSize(mask, 0));
vec2 pix_loc = uv.xy / TEXTURE_PIXEL_SIZE;
mask_uv = vec3((pix_loc + offset.xy) / tex_size, 0);
outside = mask_uv.x >= 0.0 && mask_uv.x <= 1.0 &&
mask_uv.y >= 0.0 && mask_uv.y <= 1.0;"
[sub_resource type="VisualShaderNodeInput" id=5]
input_name = "uv"
[sub_resource type="VisualShaderNodeScalarSwitch" id=6]
[sub_resource type="VisualShaderNodeVectorOp" id=7]
operator = 2
[sub_resource type="VisualShaderNodeTexture" id=8]
source = 5
[sub_resource type="VisualShaderNodeInput" id=9]
input_name = "texture"
[sub_resource type="VisualShaderNodeScalarOp" id=10]
operator = 2
[sub_resource type="VisualShaderNodeVec3Uniform" id=11]
uniform_name = "offset"
[sub_resource type="VisualShaderNodeTextureUniform" id=12]
uniform_name = "mask"
[sub_resource type="VisualShader" id=13]
code = "shader_type canvas_item;
uniform vec3 offset;
uniform sampler2D mask;
void vertex() {
// Output:0
}
void fragment() {
// Input:10
vec3 n_out10p0 = MODULATE.rgb;
// Input:3
// Texture:2
vec3 n_out2p0;
float n_out2p1;
{
vec4 TEXTURE_tex_read = texture(TEXTURE, UV.xy);
n_out2p0 = TEXTURE_tex_read.rgb;
n_out2p1 = TEXTURE_tex_read.a;
}
// VectorOp:18
vec3 n_out18p0 = n_out10p0 * n_out2p0;
// Input:13
float n_out13p0 = MODULATE.a;
// VectorUniform:7
vec3 n_out7p0 = offset;
// Input:16
vec3 n_out16p0 = vec3(UV, 0.0);
// Expression:15
vec3 n_out15p0;
bool n_out15p1;
n_out15p0 = vec3(0.0, 0.0, 0.0);
n_out15p1 = false;
{
vec2 tex_size = vec2(textureSize(mask, 0));
vec2 pix_loc = n_out16p0.xy / TEXTURE_PIXEL_SIZE;
n_out15p0 = vec3((pix_loc + n_out7p0.xy) / tex_size, 0);
n_out15p1 = n_out15p0.x >= 0.0 && n_out15p0.x <= 1.0 &&
n_out15p0.y >= 0.0 && n_out15p0.y <= 1.0;
}
// TextureUniform:8
vec3 n_out8p0;
float n_out8p1;
{
vec4 n_tex_read = texture(mask, n_out15p0.xy);
n_out8p0 = n_tex_read.rgb;
n_out8p1 = n_tex_read.a;
}
// ScalarSwitch:17
float n_in17p2 = 0.00000;
float n_out17p0;
if(n_out15p1)
{
n_out17p0 = n_out8p1;
}
else
{
n_out17p0 = n_in17p2;
}
// ScalarOp:6
float n_out6p0 = n_out2p1 * n_out17p0;
// ScalarOp:14
float n_out14p0 = n_out13p0 * n_out6p0;
// Output:0
COLOR.rgb = n_out18p0;
COLOR.a = n_out14p0;
}
void light() {
// Output:0
}
"
mode = 1
flags/light_only = false
nodes/fragment/0/position = Vector2( 840, -100 )
nodes/fragment/2/node = SubResource( 8 )
nodes/fragment/2/position = Vector2( 400, -40 )
nodes/fragment/3/node = SubResource( 9 )
nodes/fragment/3/position = Vector2( 220, -40 )
nodes/fragment/6/node = SubResource( 10 )
nodes/fragment/6/position = Vector2( 640, 60 )
nodes/fragment/7/node = SubResource( 11 )
nodes/fragment/7/position = Vector2( -340, 60 )
nodes/fragment/8/node = SubResource( 12 )
nodes/fragment/8/position = Vector2( 400, 100 )
nodes/fragment/10/node = SubResource( 1 )
nodes/fragment/10/position = Vector2( 320, -200 )
nodes/fragment/13/node = SubResource( 2 )
nodes/fragment/13/position = Vector2( 320, -120 )
nodes/fragment/14/node = SubResource( 3 )
nodes/fragment/14/position = Vector2( 640, -60 )
nodes/fragment/15/node = SubResource( 4 )
nodes/fragment/15/position = Vector2( -140, 40 )
nodes/fragment/15/size = Vector2( 512, 260 )
nodes/fragment/15/input_ports = "0,1,offset;1,1,uv;"
nodes/fragment/15/output_ports = "0,1,mask_uv;1,2,outside;"
nodes/fragment/15/expression = "vec2 tex_size = vec2(textureSize(mask, 0));
vec2 pix_loc = uv.xy / TEXTURE_PIXEL_SIZE;
mask_uv = vec3((pix_loc + offset.xy) / tex_size, 0);
outside = mask_uv.x >= 0.0 && mask_uv.x <= 1.0 &&
mask_uv.y >= 0.0 && mask_uv.y <= 1.0;"
nodes/fragment/16/node = SubResource( 5 )
nodes/fragment/16/position = Vector2( -340, 140 )
nodes/fragment/17/node = SubResource( 6 )
nodes/fragment/17/position = Vector2( 620, 180 )
nodes/fragment/18/node = SubResource( 7 )
nodes/fragment/18/position = Vector2( 640, -180 )
nodes/fragment/connections = PoolIntArray( 3, 0, 2, 2, 2, 1, 6, 0, 6, 0, 14, 1, 13, 0, 14, 0, 14, 0, 0, 1, 7, 0, 15, 0, 16, 0, 15, 1, 15, 0, 8, 0, 15, 1, 17, 0, 8, 1, 17, 1, 17, 0, 6, 1, 10, 0, 18, 0, 2, 0, 18, 1, 18, 0, 0, 0 )
[sub_resource type="ShaderMaterial" id=14]
shader = SubResource( 13 )
shader_param/offset = Vector3( 0, 0, 0 )
[node name="HitDecal" type="Sprite"]
material = SubResource( 14 )
texture = ExtResource( 1 )
centered = false
script = ExtResource( 2 )