Timer.shader 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. Shader "DashGame/Timer"
  2. {
  3. Properties
  4. {
  5. _MainTex ("Texture", 2D) = "white" {}
  6. [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip("Use Alpha Clip", Float) = 0
  7. }
  8. SubShader
  9. {
  10. Tags
  11. {
  12. "Queue" = "Transparent"
  13. "RenderType" = "Transparent"
  14. "PreviewType" = "Plane"
  15. "IgnoreProjector" = "True"
  16. "CanUseSpriteAtlas" = "True"
  17. }
  18. Lighting Off
  19. Blend SrcAlpha OneMinusSrcAlpha
  20. Pass
  21. {
  22. CGPROGRAM
  23. #pragma vertex vert
  24. #pragma fragment frag
  25. #include "UnityUI.cginc"
  26. #include "UnityCG.cginc"
  27. struct appdata
  28. {
  29. float2 uv : TEXCOORD0;
  30. float4 color : COLOR;
  31. float4 vertex : POSITION;
  32. };
  33. struct v2f
  34. {
  35. float2 uv : TEXCOORD0;
  36. float4 color : COLOR;
  37. float4 vertex : SV_POSITION;
  38. };
  39. float _Fill;
  40. float4 _MainTex_ST;
  41. sampler2D _MainTex;
  42. v2f vert (appdata v)
  43. {
  44. v2f o;
  45. o.uv = TRANSFORM_TEX(v.uv, _MainTex);
  46. o.color = v.color;
  47. o.vertex = UnityObjectToClipPos(v.vertex);
  48. return o;
  49. }
  50. fixed4 frag (v2f i) : SV_Target
  51. {
  52. fixed4 col = tex2D(_MainTex, i.uv);
  53. col.a *= i.color.a;
  54. float angleF;
  55. float angleR;
  56. if(_Fill>=1)
  57. {
  58. col.a=0;
  59. }
  60. else if(i.uv.x <= 0.5 && i.uv.y >= 0.5)
  61. {
  62. float x = 0.5-i.uv.x;
  63. float y = i.uv.y - 0.5;
  64. angleR = degrees(atan(x/y));
  65. }
  66. else if(i.uv.x <= 0.5 && i.uv.y <= 0.5)
  67. {
  68. float x = 0.5-i.uv.x;
  69. float y = 0.5-i.uv.y;
  70. angleR = 90 + degrees(atan(y/x));
  71. }
  72. else if(i.uv.x >= 0.5 && i.uv.y <= 0.5)
  73. {
  74. float x = i.uv.x-0.5;
  75. float y = 0.5-i.uv.y;
  76. angleR = 180 + degrees(atan(x/y));
  77. }
  78. else if(i.uv.x >= 0.5 && i.uv.y >= 0.5)
  79. {
  80. float x = i.uv.x-0.5;
  81. float y = i.uv.y-0.5;
  82. angleR = 270 + degrees(atan(y/x));
  83. }
  84. angleF = 360*_Fill;
  85. float angleOffset = angleF - angleR;
  86. if(angleF >= 45 && angleOffset > 45)
  87. {
  88. col.a*=1-(angleOffset-45)/45;
  89. }
  90. return col;
  91. }
  92. ENDCG
  93. }
  94. }
  95. }