源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
2.4 KiB

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