t1 / TFDContents / Assets / Resources / BlurShader.shader @ 9
이력 | 보기 | 이력해설 | 다운로드 (1.75 KB)
1 | 3 | KTH | // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' |
---|---|---|---|
2 | |||
3 | Shader "Custom/BlurShader" { |
||
4 | Properties { |
||
5 | _MainTex ("Base (RGB)", 2D) = "white" {} |
||
6 | _Amount ("Blur Amount", Range(0,4)) = 1 |
||
7 | } |
||
8 | |||
9 | CGINCLUDE |
||
10 | #include "UnityCG.cginc" |
||
11 | |||
12 | sampler2D _MainTex; |
||
13 | float4 _MainTex_TexelSize; |
||
14 | float _Amount; |
||
15 | float _Threshold; |
||
16 | |||
17 | struct v2f { |
||
18 | float4 pos : POSITION; |
||
19 | float2 uv : TEXCOORD0; |
||
20 | }; |
||
21 | |||
22 | struct v2f_off { |
||
23 | float4 pos : POSITION; |
||
24 | float2 uv[8] : TEXCOORD0; |
||
25 | }; |
||
26 | |||
27 | v2f vert (appdata_img v) |
||
28 | { |
||
29 | v2f o; |
||
30 | o.pos = UnityObjectToClipPos (v.vertex); |
||
31 | o.uv = v.texcoord.xy; |
||
32 | return o; |
||
33 | } |
||
34 | |||
35 | v2f_off vertOff (appdata_img v) |
||
36 | { |
||
37 | v2f_off o; |
||
38 | o.pos = UnityObjectToClipPos (v.vertex); |
||
39 | |||
40 | float2 uv = v.texcoord.xy; |
||
41 | float2 up = float2(0.0, _MainTex_TexelSize.y) * _Amount; |
||
42 | float2 right = float2(_MainTex_TexelSize.x, 0.0) * _Amount; |
||
43 | |||
44 | o.uv[0].xy = uv + up; |
||
45 | o.uv[1].xy = uv - up; |
||
46 | o.uv[2].xy = uv + right; |
||
47 | o.uv[3].xy = uv - right; |
||
48 | o.uv[4].xy = uv - right + up; |
||
49 | o.uv[5].xy = uv - right -up; |
||
50 | o.uv[6].xy = uv + right + up; |
||
51 | o.uv[7].xy = uv + right -up; |
||
52 | |||
53 | return o; |
||
54 | } |
||
55 | |||
56 | half4 fragOff (v2f_off i) : COLOR |
||
57 | { |
||
58 | |||
59 | float4 col = tex2D(_MainTex, (i.uv[0] + i.uv[1]) * 0.5); |
||
60 | float4 newCol = 0; |
||
61 | newCol.rgb = col.rgb; |
||
62 | int count = 1; |
||
63 | for (int pix = 0; pix < 8; pix ++) { |
||
64 | if (i.uv[pix].x <= 1.0 && i.uv[pix].y <= 1.0 && i.uv[pix].x >= 0.0 && i.uv[pix].y >= 0.0) { |
||
65 | newCol += tex2D(_MainTex, i.uv[pix]); |
||
66 | count ++; |
||
67 | } |
||
68 | } |
||
69 | newCol = ((newCol + col) / (count + 1)); |
||
70 | |||
71 | return newCol; |
||
72 | } |
||
73 | |||
74 | ENDCG |
||
75 | |||
76 | SubShader { |
||
77 | ZTest Always Cull Off ZWrite Off |
||
78 | pass { |
||
79 | CGPROGRAM |
||
80 | #pragma vertex vertOff |
||
81 | #pragma fragment fragOff |
||
82 | #pragma target 3.0 |
||
83 | ENDCG |
||
84 | } |
||
85 | } |
||
86 | } |