diff options
Diffstat (limited to 'demos/2d/sprite_shaders/sprite_shaders.tscn')
-rw-r--r-- | demos/2d/sprite_shaders/sprite_shaders.tscn | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/demos/2d/sprite_shaders/sprite_shaders.tscn b/demos/2d/sprite_shaders/sprite_shaders.tscn new file mode 100644 index 0000000000..feb6003890 --- /dev/null +++ b/demos/2d/sprite_shaders/sprite_shaders.tscn @@ -0,0 +1,163 @@ +[gd_scene load_steps=20 format=1] + +[ext_resource path="res://cubio.png" type="Texture" id=1] + +[sub_resource type="CanvasItemShader" id=1] + +_code = { "fragment":"uniform float outline_width=2.0;\nuniform color outline_color=vec4(0,0,0,1);\n\nvec4 col = tex(TEXTURE,UV);\nvec2 ps = TEXTURE_PIXEL_SIZE;\nfloat a;\nfloat maxa=col.a;\nfloat mina=col.a;\na=tex(TEXTURE,UV+vec2(0,-outline_width)*ps).a;\nmaxa=max(a,maxa); \nmina=min(a,mina);\na=tex(TEXTURE,UV+vec2(0,outline_width)*ps).a;\nmaxa=max(a,maxa); \nmina=min(a,mina);\na=tex(TEXTURE,UV+vec2(-outline_width,0)*ps).a;\nmaxa=max(a,maxa); \nmina=min(a,mina);\na=tex(TEXTURE,UV+vec2(outline_width,0)*ps).a;\nmaxa=max(a,maxa); \nmina=min(a,mina);\n\nCOLOR=mix(col,outline_color,maxa-mina);", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 } + +[sub_resource type="CanvasItemMaterial" id=2] + +shader/shader = SubResource( 1 ) +shader/shading_mode = 0 +shader_param/outline_width = 2.0 +shader_param/outline_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="CanvasItemShader" id=3] + +_code = { "fragment":"//this shader only works properly with premultiplied alpha blend mode\nuniform float aura_width=2.0;\nuniform color aura_color=vec4(0.4,0.7,0.3,1);\n\nvec4 col = tex(TEXTURE,UV);\nvec2 ps = TEXTURE_PIXEL_SIZE;\nfloat a;\nfloat maxa=col.a;\nfloat mina=col.a;\na=tex(TEXTURE,UV+vec2(0,-aura_width)*ps).a;\nmaxa=max(a,maxa); \nmina=min(a,mina);\na=tex(TEXTURE,UV+vec2(0,aura_width)*ps).a;\nmaxa=max(a,maxa); \nmina=min(a,mina);\na=tex(TEXTURE,UV+vec2(-aura_width,0)*ps).a;\nmaxa=max(a,maxa); \nmina=min(a,mina);\na=tex(TEXTURE,UV+vec2(aura_width,0)*ps).a;\nmaxa=max(a,maxa); \nmina=min(a,mina);\ncol.rgb*=col.a;\nCOLOR=col;//mix(col,aura_color,maxa-mina);\nfloat auraa=(maxa-mina);\n\nCOLOR.rgb+=aura_color.rgb*(maxa-mina);", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 } + +[sub_resource type="CanvasItemMaterial" id=4] + +shader/shader = SubResource( 3 ) +shader/shading_mode = 0 +shader_param/aura_width = 2.0 +shader_param/aura_color = Color( 0.4, 0.7, 0.3, 1 ) + +[sub_resource type="CanvasItemShader" id=5] + +_code = { "fragment":"uniform float radius=2.0;\n\nvec4 col = tex(TEXTURE,UV);\nvec2 ps = TEXTURE_PIXEL_SIZE;\ncol+=tex(TEXTURE,UV+vec2(0,-radius)*ps);\ncol+=tex(TEXTURE,UV+vec2(0,radius)*ps);\ncol+=tex(TEXTURE,UV+vec2(-radius,0)*ps);\ncol+=tex(TEXTURE,UV+vec2(radius,0)*ps);\ncol/=5.0;\nCOLOR=col;", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 } + +[sub_resource type="CanvasItemMaterial" id=6] + +shader/shader = SubResource( 5 ) +shader/shading_mode = 0 +shader_param/radius = 4.0 + +[sub_resource type="CanvasItemShader" id=7] + +_code = { "fragment":"uniform float fattyness=2.0;\n\nvec2 ruv=(UV-vec2(0.5,0.5));\nfloat len = length(ruv);\nvec2 dir = normalize(ruv);\nlen=pow(len*2.0,fattyness)*0.5;\nruv=len*dir;\nvec4 col = tex(TEXTURE,ruv+vec2(0.5,0.5));\nCOLOR=col;", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 } + +[sub_resource type="CanvasItemMaterial" id=8] + +shader/shader = SubResource( 7 ) +shader/shading_mode = 0 +shader_param/fattyness = 2.0 + +[sub_resource type="CanvasItemShader" id=9] + +_code = { "fragment":"\nuniform float radius=5.0;\nuniform color modulate=color(0,0,0,0.7);\n\nvec2 ps = TEXTURE_PIXEL_SIZE;\n\nvec4 shadow = tex(TEXTURE,UV+vec2(-radius,-radius)*ps);\nshadow += tex(TEXTURE,UV+vec2(-radius,0)*ps);\nshadow += tex(TEXTURE,UV+vec2(-radius,radius)*ps);\nshadow += tex(TEXTURE,UV+vec2(0,-radius)*ps);\nshadow += tex(TEXTURE,UV+vec2(0,radius)*ps);\nshadow += tex(TEXTURE,UV+vec2(radius,-radius)*ps);\nshadow += tex(TEXTURE,UV+vec2(radius,0)*ps);\nshadow += tex(TEXTURE,UV+vec2(radius,radius)*ps);\nshadow/=8;\nshadow*=modulate;\n\nvec4 col = tex(TEXTURE,UV);\nCOLOR=mix(shadow,col,col.a);", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 } + +[sub_resource type="CanvasItemMaterial" id=10] + +shader/shader = SubResource( 9 ) +shader/shading_mode = 0 +shader_param/radius = 5.0 +shader_param/modulate = Color( 0, 0, 0, 0.7 ) + +[sub_resource type="CanvasItemShader" id=11] + +_code = { "fragment":"\nuniform vec2 offset=vec2(8,8);\nuniform color modulate=color(0.5,0,0.1,0.5);\n\nvec2 ps = TEXTURE_PIXEL_SIZE;\n\nvec4 shadow = vec4(modulate.rgb,tex(TEXTURE,UV-offset*ps).a*modulate.a);\nvec4 col = tex(TEXTURE,UV);\n\nCOLOR=mix(shadow,col,col.a);", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 } + +[sub_resource type="CanvasItemMaterial" id=12] + +shader/shader = SubResource( 11 ) +shader/shading_mode = 0 +shader_param/offset = Vector2( 8, 8 ) +shader_param/modulate = Color( 0.5, 0, 0.1, 0.5 ) + +[sub_resource type="CanvasItemShader" id=13] + +_code = { "fragment":"\nuniform color modulate=color(0.2,0.4,1.0,0.8);\nCOLOR = vec4(modulate.rgb,tex(TEXTURE,UV).a*modulate.a);\n\n\n", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 } + +[sub_resource type="CanvasItemMaterial" id=14] + +shader/shader = SubResource( 13 ) +shader/shading_mode = 0 +shader_param/modulate = Color( 0.013125, 0.194829, 0.406815, 0.818237 ) + +[sub_resource type="CanvasItemShader" id=15] + +_code = { "fragment":"\nuniform float radius=2.0;\nuniform float amount=0.6;\nfloat r = radius;\nvec2 ps = TEXTURE_PIXEL_SIZE;\n\nvec4 col = tex(TEXTURE,UV);\n\nvec4 glow = col;\nglow += tex(TEXTURE,UV+vec2(-r,-r)*ps);\nglow += tex(TEXTURE,UV+vec2(-r,0)*ps);\nglow += tex(TEXTURE,UV+vec2(-r,r)*ps);\nglow += tex(TEXTURE,UV+vec2(0,-r)*ps);\nglow += tex(TEXTURE,UV+vec2(0,r)*ps);\nglow += tex(TEXTURE,UV+vec2(r,-r)*ps);\nglow += tex(TEXTURE,UV+vec2(r,0)*ps);\nglow += tex(TEXTURE,UV+vec2(r,r)*ps);\nr*=2.0;\nglow += tex(TEXTURE,UV+vec2(-r,-r)*ps);\nglow += tex(TEXTURE,UV+vec2(-r,0)*ps);\nglow += tex(TEXTURE,UV+vec2(-r,r)*ps);\nglow += tex(TEXTURE,UV+vec2(0,-r)*ps);\nglow += tex(TEXTURE,UV+vec2(0,r)*ps);\nglow += tex(TEXTURE,UV+vec2(r,-r)*ps);\nglow += tex(TEXTURE,UV+vec2(r,0)*ps);\nglow += tex(TEXTURE,UV+vec2(r,r)*ps);\n\nglow/=17.0;\nglow*=amount;\ncol.rgb*=col.a;\nCOLOR=glow+col;", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 } + +[sub_resource type="CanvasItemMaterial" id=16] + +shader/shader = SubResource( 15 ) +shader/shading_mode = 0 +shader_param/radius = 2.0 +shader_param/amount = 0.5 + +[sub_resource type="CanvasItemShader" id=17] + +_code = { "fragment":"\nuniform float amount = 20;\nvec2 uv = UV*0.05;\nfloat a = fract(sin(dot(UV ,vec2(12.9898,78.233))) * 438.5453);\nvec4 col = tex(TEXTURE,UV);\ncol.a*=pow(a,amount);\nCOLOR = col;\n\n\n", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 } + +[sub_resource type="CanvasItemMaterial" id=18] + +shader/shader = SubResource( 17 ) +shader/shading_mode = 0 +shader_param/amount = 2.0 + +[node name="shaders" type="Node2D"] + +[node name="normal" type="Sprite" parent="."] + +transform/pos = Vector2( 95.4559, 131.272 ) +texture = ExtResource( 1 ) + +[node name="outline" type="Sprite" parent="."] + +material/material = SubResource( 2 ) +transform/pos = Vector2( 246.456, 128.272 ) +texture = ExtResource( 1 ) + +[node name="aura" type="Sprite" parent="."] + +visibility/blend_mode = 4 +material/material = SubResource( 4 ) +transform/pos = Vector2( 398.185, 130.624 ) +texture = ExtResource( 1 ) + +[node name="blur" type="Sprite" parent="."] + +material/material = SubResource( 6 ) +transform/pos = Vector2( 548.503, 123.04 ) +texture = ExtResource( 1 ) + +[node name="fatty" type="Sprite" parent="."] + +material/material = SubResource( 8 ) +transform/pos = Vector2( 696.518, 125.393 ) +texture = ExtResource( 1 ) + +[node name="dropshadow" type="Sprite" parent="."] + +material/material = SubResource( 10 ) +transform/pos = Vector2( 97.4079, 389.709 ) +texture = ExtResource( 1 ) + +[node name="offsetshadow" type="Sprite" parent="."] + +material/material = SubResource( 12 ) +transform/pos = Vector2( 254.821, 384.238 ) +texture = ExtResource( 1 ) + +[node name="silouette" type="Sprite" parent="."] + +material/material = SubResource( 14 ) +transform/pos = Vector2( 418.854, 387.184 ) +texture = ExtResource( 1 ) + +[node name="glow" type="Sprite" parent="."] + +visibility/blend_mode = 4 +material/material = SubResource( 16 ) +transform/pos = Vector2( 563.75, 385.42 ) +texture = ExtResource( 1 ) + +[node name="dissintegrate" type="Sprite" parent="."] + +material/material = SubResource( 18 ) +transform/pos = Vector2( 708.613, 385.444 ) +texture = ExtResource( 1 ) + + |