BlurEffectConeTaps.shader 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
  2. Shader "Hidden/BlurEffectConeTap" {
  3. Properties { _MainTex ("", any) = "" {} }
  4. CGINCLUDE
  5. #include "UnityCG.cginc"
  6. struct v2f {
  7. float4 pos : SV_POSITION;
  8. half2 uv : TEXCOORD0;
  9. half2 taps[4] : TEXCOORD1;
  10. };
  11. sampler2D _MainTex;
  12. half4 _MainTex_TexelSize;
  13. half4 _BlurOffsets;
  14. v2f vert( appdata_img v ) {
  15. v2f o;
  16. o.pos = UnityObjectToClipPos(v.vertex);
  17. o.uv = v.texcoord - _BlurOffsets.xy * _MainTex_TexelSize.xy; // hack, see BlurEffect.cs for the reason for this. let's make a new blur effect soon
  18. o.taps[0] = o.uv + _MainTex_TexelSize * _BlurOffsets.xy;
  19. o.taps[1] = o.uv - _MainTex_TexelSize * _BlurOffsets.xy;
  20. o.taps[2] = o.uv + _MainTex_TexelSize * _BlurOffsets.xy * half2(1,-1);
  21. o.taps[3] = o.uv - _MainTex_TexelSize * _BlurOffsets.xy * half2(1,-1);
  22. return o;
  23. }
  24. half4 frag(v2f i) : SV_Target {
  25. half4 color = tex2D(_MainTex, i.taps[0]);
  26. color += tex2D(_MainTex, i.taps[1]);
  27. color += tex2D(_MainTex, i.taps[2]);
  28. color += tex2D(_MainTex, i.taps[3]);
  29. return color * 0.25;
  30. }
  31. ENDCG
  32. SubShader {
  33. Pass {
  34. ZTest Always Cull Off ZWrite Off
  35. CGPROGRAM
  36. #pragma vertex vert
  37. #pragma fragment frag
  38. ENDCG
  39. }
  40. }
  41. Fallback off
  42. }