Gray.shader 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. Shader "DashGame/Gray"
  2. {
  3. Properties
  4. {
  5. _MainTex ("Texture", 2D) = "white" {}
  6. _StencilComp("Stencil Comparison", Float) = 8
  7. _Stencil("Stencil ID", Float) = 0
  8. _StencilOp("Stencil Operation", Float) = 0
  9. _StencilWriteMask("Stencil Write Mask", Float) = 255
  10. _StencilReadMask("Stencil Read Mask", Float) = 255
  11. _ColorMask("Color Mask", Float) = 15
  12. [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip("Use Alpha Clip", Float) = 0
  13. }
  14. SubShader
  15. {
  16. Tags
  17. {
  18. "Queue" = "Transparent"
  19. "IgnoreProjector" = "True"
  20. "RenderType" = "Transparent"
  21. "PreviewType" = "Plane"
  22. "CanUseSpriteAtlas" = "True"
  23. }
  24. Stencil
  25. {
  26. Ref[_Stencil]
  27. Comp[_StencilComp]
  28. Pass[_StencilOp]
  29. ReadMask[_StencilReadMask]
  30. WriteMask[_StencilWriteMask]
  31. }
  32. Cull Off
  33. Lighting Off
  34. ZWrite Off
  35. ZTest[unity_GUIZTestMode]
  36. Blend SrcAlpha OneMinusSrcAlpha
  37. ColorMask[_ColorMask]
  38. Pass
  39. {
  40. CGPROGRAM
  41. #pragma vertex vert
  42. #pragma fragment frag
  43. #pragma multi_compile __ UNITY_UI_ALPHACLIP
  44. #include "UnityUI.cginc"
  45. #include "UnityCG.cginc"
  46. struct appdata
  47. {
  48. float2 uv : TEXCOORD0;
  49. float4 color : COLOR;
  50. float4 vertex : POSITION;
  51. };
  52. struct v2f
  53. {
  54. float2 uv : TEXCOORD0;
  55. float4 color : COLOR;
  56. float4 vertex : SV_POSITION;
  57. float4 worldPosition : TEXCOORD1;
  58. };
  59. sampler2D _MainTex;
  60. float4 _MainTex_ST;
  61. float4 _ClipRect;
  62. v2f vert (appdata v)
  63. {
  64. v2f o;
  65. o.worldPosition = v.vertex;
  66. o.vertex = UnityObjectToClipPos(v.vertex);
  67. o.uv = TRANSFORM_TEX(v.uv, _MainTex);
  68. o.color = v.color;
  69. return o;
  70. }
  71. fixed4 frag (v2f i) : SV_Target
  72. {
  73. fixed4 col = tex2D(_MainTex, i.uv);
  74. fixed gray = dot(col.rgb, fixed3(0.299, 0.587, 0.114));
  75. col.rgb = fixed3(gray, gray, gray);
  76. col.a *= i.color.a; //CanvasGroup
  77. col.a *= UnityGet2DClipping(i.worldPosition.xy, _ClipRect); //RectMask
  78. #ifdef UNITY_UI_ALPHACLIP
  79. clip(col.a - 0.001);
  80. #endif
  81. return col;
  82. }
  83. ENDCG
  84. }
  85. }
  86. }