1
2 Shader
"Hidden/SSAA" {
3 Properties {
4     _MainTex (
"Base (RGB)", 2D) = "white" {}
5 }

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


Gõ tìm kiếm nhanh...