Newer
Older
DungeonShooting / DungeonShooting_Godot / resource / material / Outline2.gdshader
  1. shader_type canvas_item;
  2.  
  3. //轮廓颜色
  4. uniform vec4 outline_color : source_color = vec4(0.0, 0.0, 0.0, 1.0);
  5. //轮廓缩放
  6. uniform float scale : hint_range(0.0, 2.0, 0.01) = 1.0;
  7.  
  8. void fragment() {
  9. float a = COLOR.a;
  10. //显示轮廓
  11. if (a == 0.0) {
  12. vec2 size = TEXTURE_PIXEL_SIZE * 0.5;
  13. float outline;
  14. outline = texture(TEXTURE, UV + vec2(-size.x, 0)).a;
  15. outline += texture(TEXTURE, UV + vec2(0, size.y)).a;
  16. outline += texture(TEXTURE, UV + vec2(size.x, 0)).a;
  17. outline += texture(TEXTURE, UV + vec2(0, -size.y)).a;
  18. outline += texture(TEXTURE, UV + vec2(-size.x, -size.y)).a;
  19. outline += texture(TEXTURE, UV + vec2(size.x, size.y)).a;
  20. outline += texture(TEXTURE, UV + vec2(size.x, -size.y)).a;
  21. outline += texture(TEXTURE, UV + vec2(-size.x, size.y)).a;
  22. outline = min(outline, 1.0);
  23. if (outline > 0.0) {
  24. COLOR = mix(COLOR, outline_color , 1);
  25. COLOR.a = outline_color.a;
  26. }
  27. }
  28. }