프로젝트

일반

사용자정보

통계
| 개정판:

t1 / TFDContents / Assets / Resources / BlurShader2.shader @ 9

이력 | 보기 | 이력해설 | 다운로드 (2.77 KB)

1 3 KTH
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
2
3
Shader "Custom/BlurShader2" {
4
    Properties {
5
        _MainTex ("Base (RGB)", 2D) = "white" {}
6
	    _BlurSizeXY("BlurSizeXY", Range(0,10)) = 0
7
    }
8
9
	CGINCLUDE
10
	#include "UnityCG.cginc"
11
12
    sampler2D _MainTex;
13
    float _BlurSizeXY;
14
15
	struct data {
16
	    float4 vertex : POSITION;
17
	    float3 normal : NORMAL;
18
	};
19
20
	struct v2f {
21
	    float4 position : POSITION;
22
	    float4 screenPos : TEXCOORD0;
23
	};
24
25
	v2f vert(data i)
26
	{
27
	    v2f o;
28
	    o.position = UnityObjectToClipPos(i.vertex);
29
	    o.screenPos = o.position;
30
31
	    return o;
32
	}
33
34
	half4 frag( v2f i ) : COLOR
35
	{
36
	    float2 screenPos = i.screenPos.xy / i.screenPos.w;
37
		float depth = _BlurSizeXY * 0.0005;
38
39
	    screenPos.x = (screenPos.x + 1) * 0.5;
40
	    screenPos.y = 1 - (screenPos.y + 1) * 0.5;
41
42
	    half4 sum = half4(0.0h,0.0h,0.0h,0.0h);
43
44
	    sum += tex2D( _MainTex, float2(screenPos.x-5.0 * depth, screenPos.y+5.0 * depth)) * 0.025;
45
	    sum += tex2D( _MainTex, float2(screenPos.x+5.0 * depth, screenPos.y-5.0 * depth)) * 0.025;
46
47
	    sum += tex2D( _MainTex, float2(screenPos.x-4.0 * depth, screenPos.y+4.0 * depth)) * 0.05;
48
	    sum += tex2D( _MainTex, float2(screenPos.x+4.0 * depth, screenPos.y-4.0 * depth)) * 0.05;
49
50
51
	    sum += tex2D( _MainTex, float2(screenPos.x-3.0 * depth, screenPos.y+3.0 * depth)) * 0.09;
52
	    sum += tex2D( _MainTex, float2(screenPos.x+3.0 * depth, screenPos.y-3.0 * depth)) * 0.09;
53
54
	    sum += tex2D( _MainTex, float2(screenPos.x-2.0 * depth, screenPos.y+2.0 * depth)) * 0.12;
55
	    sum += tex2D( _MainTex, float2(screenPos.x+2.0 * depth, screenPos.y-2.0 * depth)) * 0.12;
56
57
	    sum += tex2D( _MainTex, float2(screenPos.x-1.0 * depth, screenPos.y+1.0 * depth)) *  0.15;
58
	    sum += tex2D( _MainTex, float2(screenPos.x+1.0 * depth, screenPos.y-1.0 * depth)) *  0.15;
59
60
	    sum += tex2D( _MainTex, screenPos-5.0 * depth) * 0.025;
61
	    sum += tex2D( _MainTex, screenPos-4.0 * depth) * 0.05;
62
	    sum += tex2D( _MainTex, screenPos-3.0 * depth) * 0.09;
63
	    sum += tex2D( _MainTex, screenPos-2.0 * depth) * 0.12;
64
	    sum += tex2D( _MainTex, screenPos-1.0 * depth) * 0.15;
65
	    sum += tex2D( _MainTex, screenPos) * 0.16;
66
67
	    sum += tex2D( _MainTex, screenPos+5.0 * depth) * 0.15;
68
	    sum += tex2D( _MainTex, screenPos+4.0 * depth) * 0.12;
69
	    sum += tex2D( _MainTex, screenPos+3.0 * depth) * 0.09;
70
	    sum += tex2D( _MainTex, screenPos+2.0 * depth) * 0.05;
71
	    sum += tex2D( _MainTex, screenPos+1.0 * depth) * 0.025;
72
73
		return sum / 2;
74
	}
75
76
	ENDCG
77
78
	SubShader {
79
		ZTest Always Cull Off ZWrite Off
80
		pass {
81
			CGPROGRAM
82
			#pragma vertex vert
83
			#pragma fragment frag
84
			#pragma target 3.0
85
			ENDCG
86
		}
87
	}
88
}