@@ -114,6 +114,9 @@ Shader "Hidden/Post FX/Uber Shader"
114
114
#endif
115
115
116
116
half3 color = (0.0 ).xxx;
117
+ #if DEPTH_OF_FIELD && CHROMATIC_ABERRATION
118
+ half4 dof = (0.0 ).xxxx;
119
+ #endif
117
120
118
121
//
119
122
// HDR effects
@@ -134,6 +137,17 @@ Shader "Hidden/Post FX/Uber Shader"
134
137
float2 pos = uv;
135
138
half3 sum = (0.0 ).xxx, filterSum = (0.0 ).xxx;
136
139
140
+ #if DEPTH_OF_FIELD
141
+ float2 dofDelta = delta;
142
+ float2 dofPos = pos;
143
+ if (_MainTex_TexelSize.y < 0.0 )
144
+ {
145
+ dofDelta.y = -dofDelta.y;
146
+ dofPos.y = 1.0 - dofPos.y;
147
+ }
148
+ half4 dofSum = (0.0 ).xxxx;
149
+ #endif
150
+
137
151
for (int i = 0 ; i < samples; i++)
138
152
{
139
153
half t = (i + 0.5 ) / samples;
@@ -143,9 +157,18 @@ Shader "Hidden/Post FX/Uber Shader"
143
157
sum += s * filter;
144
158
filterSum += filter;
145
159
pos += delta;
160
+
161
+ #if DEPTH_OF_FIELD
162
+ half4 sdof = tex2Dlod (_DepthOfFieldTex, float4 (UnityStereoScreenSpaceUVAdjust (dofPos, _MainTex_ST), 0 , 0 )).rgba;
163
+ dofSum += sdof * half4 (filter, 1 );
164
+ dofPos += dofDelta;
165
+ #endif
146
166
}
147
167
148
168
color = sum / filterSum;
169
+ #if DEPTH_OF_FIELD
170
+ dof = dofSum / half4 (filterSum, samples);
171
+ #endif
149
172
}
150
173
#else
151
174
{
@@ -166,7 +189,9 @@ Shader "Hidden/Post FX/Uber Shader"
166
189
// Depth of field
167
190
#if DEPTH_OF_FIELD
168
191
{
192
+ #if !CHROMATIC_ABERRATION
169
193
half4 dof = tex2D (_DepthOfFieldTex, i.uvFlippedSPR);
194
+ #endif
170
195
color = color * dof.a + dof.rgb * autoExposure;
171
196
}
172
197
#elif DEPTH_OF_FIELD_COC_VIEW
0 commit comments