1 Shader "Hidden/MotionBlur" {
2 Properties {
3 _MainTex ("Base (RGB)", 2D) = "white" {}
4 _AccumOrig("AccumOrig", Float) = 0.65
5 }
6
7 SubShader {
8 ZTest Always Cull Off ZWrite Off
9 Pass {
10 Blend SrcAlpha OneMinusSrcAlpha
11 ColorMask RGB
12 BindChannels {
13 Bind "vertex", vertex
14 Bind "texcoord", texcoord
15 }
16
17 CGPROGRAM
18 #pragma vertex vert
19 #pragma fragment frag
20
21 #include "UnityCG.cginc"
22
23 struct appdata_t {
24 float4 vertex : POSITION;
25 float2 texcoord : TEXCOORD;
26 };
27
28 struct v2f {
29 float4 vertex : SV_POSITION;
30 float2 texcoord : TEXCOORD;
31 };
32
33 float4 _MainTex_ST;
34 float _AccumOrig;
35
36 v2f vert (appdata_t v)
37 {
38 v2f o;
39 o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
40 o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
41 return o;
42 }
43
44 sampler2D _MainTex;
45
46 half4 frag (v2f i) : SV_Target
47 {
48 return half4(tex2D(_MainTex, i.texcoord).rgb, _AccumOrig );
49 }
50 ENDCG
51 }
52
53 Pass {
54 Blend One Zero
55 ColorMask A
56
57 BindChannels {
58 Bind "vertex", vertex
59 Bind "texcoord", texcoord
60 }
61
62 CGPROGRAM
63 #pragma vertex vert
64 #pragma fragment frag
65
66 #include "UnityCG.cginc"
67
68 struct appdata_t {
69 float4 vertex : POSITION;
70 float2 texcoord : TEXCOORD;
71 };
72
73 struct v2f {
74 float4 vertex : SV_POSITION;
75 float2 texcoord : TEXCOORD;
76 };
77
78 float4 _MainTex_ST;
79
80 v2f vert (appdata_t v)
81 {
82 v2f o;
83 o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
84 o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
85 return o;
86 }
87
88 sampler2D _MainTex;
89
90 half4 frag (v2f i) : SV_Target
91 {
92 return tex2D(_MainTex, i.texcoord);
93 }
94 ENDCG
95 }
96
97 }
98
99 SubShader {
100 ZTest Always Cull Off ZWrite Off
101 Pass {
102 Blend SrcAlpha OneMinusSrcAlpha
103 ColorMask RGB
104 SetTexture [_MainTex] {
105 ConstantColor (0,0,0,[_AccumOrig])
106 Combine texture, constant
107 }
108 }
109 Pass {
110 Blend One Zero
111 ColorMask A
112 SetTexture [_MainTex] {
113 Combine texture
114 }
115 }
116 }
117
118 Fallback off
119
120 }