UI_GaussianBlur_Cursor.shader 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. Shader "Rokid/UI_GaussianBlur_Cursor"
  2. {
  3. Properties
  4. {
  5. _MainTex("Base(RGB)",2D) = "white"{}
  6. _BlurSize("Blur Size",Float) = 0.0
  7. }
  8. SubShader
  9. {
  10. CGINCLUDE
  11. #include "UnityCG.cginc"
  12. sampler2D _MainTex;
  13. half4 _MainTex_TexelSize;
  14. float _BlurSize;
  15. struct v2f
  16. {
  17. float4 pos : SV_POSITION;
  18. half2 uv[5] : TEXCOORD0;
  19. };
  20. v2f vertBlurVertical(appdata_img v)
  21. {
  22. v2f o;
  23. o.pos = UnityObjectToClipPos(v.vertex);
  24. half2 uv = v.texcoord;
  25. o.uv[0] = uv;
  26. o.uv[1] = uv + float2(0.0, _MainTex_TexelSize.y * 1.0) * _BlurSize;
  27. o.uv[2] = uv - float2(0.0, _MainTex_TexelSize.y * 1.0) * _BlurSize;
  28. o.uv[3] = uv + float2(0.0, _MainTex_TexelSize.y * 2.0) * _BlurSize;
  29. o.uv[4] = uv - float2(0.0, _MainTex_TexelSize.y * 2.0) * _BlurSize;
  30. return o;
  31. }
  32. v2f vertBlurHorizontal(appdata_img v)
  33. {
  34. v2f o;
  35. o.pos = UnityObjectToClipPos(v.vertex);
  36. half2 uv = v.texcoord;
  37. o.uv[0] = uv;
  38. o.uv[1] = uv + float2(0.0, _MainTex_TexelSize.x * 1.0) * _BlurSize;
  39. o.uv[2] = uv - float2(0.0, _MainTex_TexelSize.x * 1.0) * _BlurSize;
  40. o.uv[3] = uv + float2(0.0, _MainTex_TexelSize.x * 2.0) * _BlurSize;
  41. o.uv[4] = uv - float2(0.0, _MainTex_TexelSize.x * 2.0) * _BlurSize;
  42. return o;
  43. }
  44. fixed4 fragBlur(v2f i) : SV_Target
  45. {
  46. float weight[3] = {0.4026,0.2442,0.0545};
  47. fixed4 sum = tex2D(_MainTex, i.uv[0]).rgba * weight[0];
  48. for (int it = 1 ;it <3 ;it++)
  49. {
  50. sum += tex2D(_MainTex,i.uv[it*2-1]).rgba *weight[it];
  51. sum += tex2D(_MainTex,i.uv[it*2]).rgba *weight[it];
  52. }
  53. return sum;
  54. }
  55. ENDCG
  56. Tags
  57. {
  58. "Queue" = "Transparent"
  59. "IgnoreProjector" = "True"
  60. "RenderType" = "Transparent"
  61. "PreviewType" = "Plane"
  62. "CanUseSpriteAtlas" = "True"
  63. }
  64. Cull Off
  65. Lighting Off
  66. ZWrite Off
  67. ZTest Always
  68. Blend SrcAlpha OneMinusSrcAlpha
  69. Pass {
  70. NAME "GAUSSIAN_BLUR_VERTICAL"
  71. CGPROGRAM
  72. #pragma vertex vertBlurVertical
  73. #pragma fragment fragBlur
  74. ENDCG
  75. }
  76. Pass {
  77. NAME "GAUSSIAN_BLUR_HORIZONTAL"
  78. CGPROGRAM
  79. #pragma vertex vertBlurHorizontal
  80. #pragma fragment fragBlur
  81. ENDCG
  82. }
  83. }
  84. FallBack "Diffuse"
  85. }