sprite_shaders.tscn 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. [gd_scene load_steps=22 format=2]
  2. [ext_resource path="res://godotea.png" type="Texture" id=1]
  3. [sub_resource type="Shader" id=1]
  4. code = "shader_type canvas_item;
  5. uniform float outline_width = 2.0;
  6. uniform vec4 outline_color : hint_color;
  7. void fragment() {
  8. vec4 col = texture(TEXTURE, UV);
  9. vec2 ps = TEXTURE_PIXEL_SIZE;
  10. float a;
  11. float maxa = col.a;
  12. float mina = col.a;
  13. a = texture(TEXTURE, UV + vec2(0.0, -outline_width) * ps).a;
  14. maxa = max(a, maxa);
  15. mina = min(a, mina);
  16. a = texture(TEXTURE, UV + vec2(0.0, outline_width) * ps).a;
  17. maxa = max(a, maxa);
  18. mina = min(a, mina);
  19. a = texture(TEXTURE, UV + vec2(-outline_width, 0.0) * ps).a;
  20. maxa = max(a, maxa);
  21. mina = min(a, mina);
  22. a = texture(TEXTURE, UV + vec2(outline_width, 0.0) * ps).a;
  23. maxa = max(a, maxa);
  24. mina = min(a, mina);
  25. COLOR = mix(col, outline_color, maxa - mina);
  26. }"
  27. [sub_resource type="ShaderMaterial" id=2]
  28. shader = SubResource( 1 )
  29. shader_param/outline_width = 2.0
  30. shader_param/outline_color = Color( 0, 1, 0.109375, 1 )
  31. [sub_resource type="ShaderMaterial" id=3]
  32. [sub_resource type="ShaderMaterial" id=4]
  33. shader = SubResource( 1 )
  34. shader_param/outline_width = 4.0
  35. shader_param/outline_color = Color( 0, 0, 0, 1 )
  36. [sub_resource type="Shader" id=5]
  37. code = "shader_type canvas_item;
  38. render_mode blend_premul_alpha;
  39. // This shader only works properly with premultiplied alpha blend mode
  40. uniform float aura_width = 2.0;
  41. uniform vec4 aura_color : hint_color;
  42. void fragment() {
  43. vec4 col = texture(TEXTURE, UV);
  44. vec2 ps = TEXTURE_PIXEL_SIZE;
  45. float a;
  46. float maxa = col.a;
  47. float mina = col.a;
  48. a = texture(TEXTURE, UV + vec2(0.0, -aura_width) * ps).a;
  49. maxa = max(a, maxa);
  50. mina = min(a, mina);
  51. a = texture(TEXTURE, UV + vec2(0.0, aura_width) * ps).a;
  52. maxa = max(a, maxa);
  53. mina = min(a, mina);
  54. a = texture(TEXTURE, UV + vec2(-aura_width, 0.0) * ps).a;
  55. maxa = max(a, maxa);
  56. mina = min(a, mina);
  57. a = texture(TEXTURE, UV + vec2(aura_width, 0.0) * ps).a;
  58. maxa = max(a, maxa);
  59. mina = min(a, mina);
  60. col.rgb *= col.a;
  61. COLOR = col;
  62. COLOR.rgb += aura_color.rgb * (maxa - mina);
  63. }"
  64. [sub_resource type="ShaderMaterial" id=6]
  65. shader = SubResource( 5 )
  66. shader_param/aura_width = 6.0
  67. shader_param/aura_color = Color( 0.143326, 0.33235, 0.677765, 0.442 )
  68. [sub_resource type="Shader" id=7]
  69. code = "shader_type canvas_item;
  70. render_mode blend_mix;
  71. uniform float radius = 4.0;
  72. void fragment() {
  73. vec4 col = texture(TEXTURE, UV);
  74. vec2 ps = TEXTURE_PIXEL_SIZE;
  75. col += texture(TEXTURE, UV + vec2(0.0, -radius) * ps);
  76. col += texture(TEXTURE, UV + vec2(0.0, radius) * ps);
  77. col += texture(TEXTURE, UV + vec2(-radius, 0.0) * ps);
  78. col += texture(TEXTURE, UV + vec2(radius, 0.0) * ps);
  79. col /= 5.0;
  80. COLOR = col;
  81. }"
  82. [sub_resource type="ShaderMaterial" id=8]
  83. shader = SubResource( 7 )
  84. shader_param/radius = 4.0
  85. [sub_resource type="Shader" id=9]
  86. code = "shader_type canvas_item;
  87. render_mode blend_mix;
  88. uniform float fattyness = 2.0;
  89. void fragment() {
  90. vec2 ruv = UV - vec2(0.5, 0.5);
  91. vec2 dir = normalize(ruv);
  92. float len = length(ruv);
  93. len = pow(len * 2.0, fattyness) * 0.5;
  94. ruv = len * dir;
  95. vec4 col = texture(TEXTURE, ruv + vec2(0.5, 0.5));
  96. COLOR = col;
  97. }"
  98. [sub_resource type="ShaderMaterial" id=10]
  99. shader = SubResource( 9 )
  100. shader_param/fattyness = 3.0
  101. [sub_resource type="Shader" id=11]
  102. code = "shader_type canvas_item;
  103. render_mode blend_mix;
  104. uniform float radius = 5.0;
  105. uniform vec4 modulate : hint_color;
  106. void fragment() {
  107. vec2 ps = TEXTURE_PIXEL_SIZE;
  108. vec4 shadow = texture(TEXTURE, UV + vec2(-radius, -radius) * ps);
  109. shadow += texture(TEXTURE, UV + vec2(-radius, 0.0) * ps);
  110. shadow += texture(TEXTURE, UV + vec2(-radius, radius) * ps);
  111. shadow += texture(TEXTURE, UV + vec2(0.0, -radius) * ps);
  112. shadow += texture(TEXTURE, UV + vec2(0.0, radius) * ps);
  113. shadow += texture(TEXTURE, UV + vec2(radius, -radius) * ps);
  114. shadow += texture(TEXTURE, UV + vec2(radius, 0.0) * ps);
  115. shadow += texture(TEXTURE, UV + vec2(radius, radius) * ps);
  116. shadow /= 8.0;
  117. shadow *= modulate;
  118. vec4 col = texture(TEXTURE, UV);
  119. COLOR = mix(shadow, col, col.a);
  120. }"
  121. [sub_resource type="ShaderMaterial" id=12]
  122. shader = SubResource( 11 )
  123. shader_param/radius = 8.0
  124. shader_param/modulate = Color( 0, 0, 0, 0.501961 )
  125. [sub_resource type="Shader" id=13]
  126. code = "shader_type canvas_item;
  127. render_mode blend_mix;
  128. uniform vec2 offset = vec2(8.0, 8.0);
  129. uniform vec4 modulate : hint_color;
  130. void fragment() {
  131. vec2 ps = TEXTURE_PIXEL_SIZE;
  132. vec4 shadow = vec4(modulate.rgb, texture(TEXTURE, UV - offset * ps).a * modulate.a);
  133. vec4 col = texture(TEXTURE, UV);
  134. COLOR = mix(shadow, col, col.a);
  135. }"
  136. [sub_resource type="ShaderMaterial" id=14]
  137. shader = SubResource( 13 )
  138. shader_param/offset = Vector2( 20, 20 )
  139. shader_param/modulate = Color( 0.90625, 0.269043, 0.746948, 1 )
  140. [sub_resource type="Shader" id=15]
  141. code = "shader_type canvas_item;
  142. render_mode blend_mix;
  143. uniform vec4 modulate : hint_color;
  144. void fragment() {
  145. COLOR = vec4(modulate.rgb, texture(TEXTURE, UV).a * modulate.a);
  146. }"
  147. [sub_resource type="ShaderMaterial" id=16]
  148. shader = SubResource( 15 )
  149. shader_param/modulate = Color( 1, 0.0234375, 0.481201, 0.596706 )
  150. [sub_resource type="Shader" id=17]
  151. code = "shader_type canvas_item;
  152. render_mode blend_premul_alpha;
  153. uniform float radius = 2.0;
  154. uniform float amount = 0.6;
  155. void fragment() {
  156. float r = radius;
  157. vec2 ps = TEXTURE_PIXEL_SIZE;
  158. vec4 col = texture(TEXTURE, UV);
  159. vec4 glow = col;
  160. glow += texture(TEXTURE, UV + vec2(-r, -r) * ps);
  161. glow += texture(TEXTURE, UV + vec2(-r, 0.0) * ps);
  162. glow += texture(TEXTURE, UV + vec2(-r, r) * ps);
  163. glow += texture(TEXTURE, UV + vec2(0.0, -r) * ps);
  164. glow += texture(TEXTURE, UV + vec2(0.0, r) * ps);
  165. glow += texture(TEXTURE, UV + vec2(r, -r) * ps);
  166. glow += texture(TEXTURE, UV + vec2(r, 0.0) * ps);
  167. glow += texture(TEXTURE, UV + vec2(r, r) * ps);
  168. r *= 2.0;
  169. glow += texture(TEXTURE, UV + vec2(-r, -r) * ps);
  170. glow += texture(TEXTURE, UV + vec2(-r, 0.0) * ps);
  171. glow += texture(TEXTURE, UV + vec2(-r, r) * ps);
  172. glow += texture(TEXTURE, UV + vec2(0.0, -r) * ps);
  173. glow += texture(TEXTURE, UV + vec2(0.0, r) * ps);
  174. glow += texture(TEXTURE, UV + vec2(r, -r) * ps);
  175. glow += texture(TEXTURE, UV + vec2(r, 0.0) * ps);
  176. glow += texture(TEXTURE, UV + vec2(r, r) * ps);
  177. glow /= 17.0;
  178. glow *= amount;
  179. col.rgb *= col.a;
  180. COLOR = glow + col;
  181. }"
  182. [sub_resource type="ShaderMaterial" id=18]
  183. shader = SubResource( 17 )
  184. shader_param/radius = 12.0
  185. shader_param/amount = 0.5
  186. [sub_resource type="Shader" id=19]
  187. code = "shader_type canvas_item;
  188. render_mode blend_mix;
  189. uniform float amount = 20.0;
  190. void fragment() {
  191. vec2 uv = UV * 0.05;
  192. float a = fract(sin(dot(UV, vec2(12.9898, 78.233))) * 438.5453);
  193. vec4 col = texture(TEXTURE, UV);
  194. col.a *= pow(a, amount);
  195. COLOR = col;
  196. }"
  197. [sub_resource type="ShaderMaterial" id=20]
  198. shader = SubResource( 19 )
  199. shader_param/amount = 4.0
  200. [node name="shaders" type="Node2D"]
  201. material = SubResource( 2 )
  202. position = Vector2( 263.737, 179.444 )
  203. scale = Vector2( 0.3, 0.3 )
  204. [node name="normal" type="Sprite" parent="."]
  205. material = SubResource( 3 )
  206. position = Vector2( -2.16144, 0 )
  207. texture = ExtResource( 1 )
  208. [node name="outline" type="Sprite" parent="."]
  209. material = SubResource( 4 )
  210. position = Vector2( 400, 0 )
  211. texture = ExtResource( 1 )
  212. [node name="aura" type="Sprite" parent="."]
  213. material = SubResource( 6 )
  214. position = Vector2( 800, 0 )
  215. texture = ExtResource( 1 )
  216. [node name="blur" type="Sprite" parent="."]
  217. material = SubResource( 8 )
  218. position = Vector2( 1200, 0 )
  219. texture = ExtResource( 1 )
  220. [node name="fatty" type="Sprite" parent="."]
  221. material = SubResource( 10 )
  222. position = Vector2( 1600, 0 )
  223. texture = ExtResource( 1 )
  224. [node name="dropshadow" type="Sprite" parent="."]
  225. material = SubResource( 12 )
  226. position = Vector2( 0, 800 )
  227. texture = ExtResource( 1 )
  228. [node name="offsetshadow" type="Sprite" parent="."]
  229. material = SubResource( 14 )
  230. position = Vector2( 400, 800 )
  231. texture = ExtResource( 1 )
  232. [node name="silouette" type="Sprite" parent="."]
  233. material = SubResource( 16 )
  234. position = Vector2( 800, 800 )
  235. texture = ExtResource( 1 )
  236. [node name="glow" type="Sprite" parent="."]
  237. material = SubResource( 18 )
  238. position = Vector2( 1200, 800 )
  239. texture = ExtResource( 1 )
  240. [node name="dissintegrate" type="Sprite" parent="."]
  241. material = SubResource( 20 )
  242. position = Vector2( 1600, 800 )
  243. texture = ExtResource( 1 )
  244. region_rect = Rect2( 141, 115, 39, 6 )