SSAA.shader 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
  2. Shader "Hidden/SSAA" {
  3. Properties {
  4. _MainTex ("Base (RGB)", 2D) = "white" {}
  5. }
  6. // very simple & fast AA by Emmanuel Julien
  7. SubShader {
  8. Pass {
  9. ZTest Always Cull Off ZWrite Off
  10. CGPROGRAM
  11. #pragma vertex vert
  12. #pragma fragment frag
  13. #include "UnityCG.cginc"
  14. uniform sampler2D _MainTex;
  15. uniform float4 _MainTex_TexelSize;
  16. struct v2f {
  17. float4 pos : SV_POSITION;
  18. float2 uv[5] : TEXCOORD0;
  19. };
  20. v2f vert( appdata_img v ) {
  21. v2f o;
  22. o.pos = UnityObjectToClipPos (v.vertex);
  23. float2 uv = v.texcoord.xy;
  24. float w = 1.75;
  25. float2 up = float2(0.0, _MainTex_TexelSize.y) * w;
  26. float2 right = float2(_MainTex_TexelSize.x, 0.0) * w;
  27. o.uv[0].xy = uv - up;
  28. o.uv[1].xy = uv - right;
  29. o.uv[2].xy = uv + right;
  30. o.uv[3].xy = uv + up;
  31. o.uv[4].xy = uv;
  32. return o;
  33. }
  34. half4 frag (v2f i) : SV_Target
  35. {
  36. half4 outColor;
  37. float t = Luminance( tex2D( _MainTex, i.uv[0] ).xyz );
  38. float l = Luminance( tex2D( _MainTex, i.uv[1] ).xyz);
  39. float r = Luminance( tex2D( _MainTex, i.uv[2] ).xyz);
  40. float b = Luminance( tex2D( _MainTex, i.uv[3] ).xyz);
  41. half2 n = half2( -( t - b ), r - l );
  42. float nl = length( n );
  43. if ( nl < (1.0 / 16.0) )
  44. outColor = tex2D( _MainTex, i.uv[4] );
  45. else {
  46. n *= _MainTex_TexelSize.xy / nl;
  47. half4 o = tex2D( _MainTex, i.uv[4]);
  48. half4 t0 = tex2D( _MainTex, i.uv[4] + n * 0.5) * 0.9;
  49. half4 t1 = tex2D( _MainTex, i.uv[4] - n * 0.5) * 0.9;
  50. half4 t2 = tex2D( _MainTex, i.uv[4] + n) * 0.75;
  51. half4 t3 = tex2D( _MainTex, i.uv[4] - n) * 0.75;
  52. outColor = (o + t0 + t1 + t2 + t3) / 4.3;
  53. }
  54. return outColor;
  55. }
  56. ENDCG
  57. }
  58. }
  59. Fallback off
  60. }