DottedLineShader.shader 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
  2. Shader "Unlit/DottedLineShader"
  3. {
  4. Properties
  5. {
  6. _RepeatCount("Repeat Count", float) = 5
  7. _Spacing("Spacing", float) = 0.5
  8. _Offset("Offset", float) = 0
  9. }
  10. SubShader
  11. {
  12. Tags { "RenderType" = "Transparent" "Queue" = "Transparent" }
  13. LOD 100
  14. Blend SrcAlpha OneMinusSrcAlpha
  15. ZWrite Off
  16. Pass
  17. {
  18. CGPROGRAM
  19. #pragma vertex vert
  20. #pragma fragment frag
  21. #include "UnityCG.cginc"
  22. float _RepeatCount;
  23. float _Spacing;
  24. float _Offset;
  25. struct appdata
  26. {
  27. float4 vertex : POSITION;
  28. float2 uv : TEXCOORD0;
  29. fixed4 color : COLOR0;
  30. };
  31. struct v2f
  32. {
  33. float2 uv : TEXCOORD0;
  34. float4 vertex : SV_POSITION;
  35. fixed4 color : COLOR0;
  36. };
  37. v2f vert(appdata v)
  38. {
  39. v2f o;
  40. o.vertex = UnityObjectToClipPos(v.vertex);
  41. o.uv = v.uv;
  42. o.uv.x = (o.uv.x + _Offset) * _RepeatCount * (1.0f + _Spacing);
  43. o.color = v.color;
  44. return o;
  45. }
  46. fixed4 frag(v2f i) : SV_Target
  47. {
  48. i.uv.x = fmod(i.uv.x, 1.0f + _Spacing);
  49. float r = length(i.uv - float2(1.0f + _Spacing, 1.0f) * 0.5f) * 2.0f;
  50. fixed4 color = i.color;
  51. color.a *= saturate((0.99f - r) * 100.0f);
  52. return color;
  53. }
  54. ENDCG
  55. }
  56. }
  57. }