Skip to content
This repository was archived by the owner on Nov 30, 2020. It is now read-only.

Commit 695dd30

Browse files
committed
Fixed DX9 build errors with depth of field; depth of field is now SM3.5+ only
1 parent aa67604 commit 695dd30

4 files changed

Lines changed: 67 additions & 32 deletions

File tree

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using UnityEngine;
2+
using UnityEngine.Rendering.PostProcessing;
3+
4+
namespace UnityEditor.Rendering.PostProcessing
5+
{
6+
[PostProcessEditor(typeof(DepthOfField))]
7+
public sealed class DepthOfFieldEditor : PostProcessEffectEditor<DepthOfField>
8+
{
9+
SerializedParameterOverride m_FocusDistance;
10+
SerializedParameterOverride m_Aperture;
11+
SerializedParameterOverride m_FocalLength;
12+
SerializedParameterOverride m_KernelSize;
13+
14+
public override void OnEnable()
15+
{
16+
m_FocusDistance = FindParameterOverride(x => x.focusDistance);
17+
m_Aperture = FindParameterOverride(x => x.aperture);
18+
m_FocalLength = FindParameterOverride(x => x.focalLength);
19+
m_KernelSize = FindParameterOverride(x => x.kernelSize);
20+
}
21+
22+
public override void OnInspectorGUI()
23+
{
24+
if (SystemInfo.graphicsShaderLevel < 35)
25+
EditorGUILayout.HelpBox("Depth Of Field is only supported on the following platforms:\nDX11+, OpenGL 3.2+, OpenGL ES 3+, Metal, Vulkan, PS4/XB1 consoles.", MessageType.Warning);
26+
27+
PropertyField(m_FocusDistance);
28+
PropertyField(m_Aperture);
29+
PropertyField(m_FocalLength);
30+
PropertyField(m_KernelSize);
31+
}
32+
}
33+
}

PostProcessing/Editor/Effects/DepthOfFieldEditor.cs.meta

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

PostProcessing/Runtime/Effects/DepthOfField.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ public sealed class DepthOfField : PostProcessEffectSettings
2828

2929
[DisplayName("Max Blur Size"), Tooltip("Convolution kernel size of the bokeh filter, which determines the maximum radius of bokeh. It also affects performances (the larger the kernel is, the longer the GPU time is required).")]
3030
public KernelSizeParameter kernelSize = new KernelSizeParameter { value = KernelSize.Medium };
31+
32+
public override bool IsEnabledAndSupported(PostProcessRenderContext context)
33+
{
34+
return enabled.value
35+
&& SystemInfo.graphicsShaderLevel >= 35;
36+
}
3137
}
3238

3339
// TODO: Look into minimum blur amount in the distance, right now it's lerped until a point

PostProcessing/Shaders/Builtins/DepthOfField.shader

Lines changed: 16 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
11
Shader "Hidden/PostProcessing/DepthOfField"
22
{
3-
HLSLINCLUDE
4-
5-
#pragma exclude_renderers d3d11_9x
6-
7-
ENDHLSL
8-
93
// SubShader with SM 5.0 support
4+
// DX11+, OpenGL 4.3+, OpenGL ES 3.1+AEP, Vulkan, consoles
105
// Gather intrinsics are used to reduce texture sample count.
116
SubShader
127
{
@@ -138,7 +133,8 @@ Shader "Hidden/PostProcessing/DepthOfField"
138133
}
139134
}
140135

141-
// Fallback SubShader with SM 3.0
136+
// Fallback SubShader with SM 3.5
137+
// DX11+, OpenGL 3.2+, OpenGL ES 3+, Metal, Vulkan, consoles
142138
SubShader
143139
{
144140
Cull Off ZWrite Off ZTest Always
@@ -148,7 +144,7 @@ Shader "Hidden/PostProcessing/DepthOfField"
148144
Name "CoC Calculation"
149145

150146
HLSLPROGRAM
151-
#pragma target 3.0
147+
#pragma target 3.5
152148
#pragma vertex VertDefault
153149
#pragma fragment FragCoC
154150
#include "DepthOfField.hlsl"
@@ -160,7 +156,7 @@ Shader "Hidden/PostProcessing/DepthOfField"
160156
Name "CoC Temporal Filter"
161157

162158
HLSLPROGRAM
163-
#pragma target 3.0
159+
#pragma target 3.5
164160
#pragma vertex VertDefault
165161
#pragma fragment FragTempFilter
166162
#include "DepthOfField.hlsl"
@@ -172,7 +168,7 @@ Shader "Hidden/PostProcessing/DepthOfField"
172168
Name "Downsample and Prefilter"
173169

174170
HLSLPROGRAM
175-
#pragma target 3.0
171+
#pragma target 3.5
176172
#pragma vertex VertDefault
177173
#pragma fragment FragPrefilter
178174
#pragma multi_compile __ UNITY_COLORSPACE_GAMMA
@@ -185,7 +181,7 @@ Shader "Hidden/PostProcessing/DepthOfField"
185181
Name "Bokeh Filter (small)"
186182

187183
HLSLPROGRAM
188-
#pragma target 3.0
184+
#pragma target 3.5
189185
#pragma vertex VertDefault
190186
#pragma fragment FragBlur
191187
#define KERNEL_SMALL
@@ -198,7 +194,7 @@ Shader "Hidden/PostProcessing/DepthOfField"
198194
Name "Bokeh Filter (medium)"
199195

200196
HLSLPROGRAM
201-
#pragma target 3.0
197+
#pragma target 3.5
202198
#pragma vertex VertDefault
203199
#pragma fragment FragBlur
204200
#define KERNEL_MEDIUM
@@ -211,16 +207,10 @@ Shader "Hidden/PostProcessing/DepthOfField"
211207
Name "Bokeh Filter (large)"
212208

213209
HLSLPROGRAM
214-
#pragma target 3.0
210+
#pragma target 3.5
215211
#pragma vertex VertDefault
216-
#pragma fragment FragBlur
217-
218-
#if SHADER_API_D3D9
219-
#define KERNEL_MEDIUM
220-
#else
221-
#define KERNEL_LARGE
222-
#endif
223-
212+
#pragma fragment FragBlur
213+
#define KERNEL_LARGE
224214
#include "DepthOfField.hlsl"
225215
ENDHLSL
226216
}
@@ -230,16 +220,10 @@ Shader "Hidden/PostProcessing/DepthOfField"
230220
Name "Bokeh Filter (very large)"
231221

232222
HLSLPROGRAM
233-
#pragma target 3.0
223+
#pragma target 3.5
234224
#pragma vertex VertDefault
235225
#pragma fragment FragBlur
236-
237-
#if SHADER_API_D3D9
238-
#define KERNEL_MEDIUM
239-
#else
240-
#define KERNEL_VERYLARGE
241-
#endif
242-
226+
#define KERNEL_VERYLARGE
243227
#include "DepthOfField.hlsl"
244228
ENDHLSL
245229
}
@@ -249,7 +233,7 @@ Shader "Hidden/PostProcessing/DepthOfField"
249233
Name "Postfilter"
250234

251235
HLSLPROGRAM
252-
#pragma target 3.0
236+
#pragma target 3.5
253237
#pragma vertex VertDefault
254238
#pragma fragment FragPostBlur
255239
#include "DepthOfField.hlsl"
@@ -261,7 +245,7 @@ Shader "Hidden/PostProcessing/DepthOfField"
261245
Name "Combine"
262246

263247
HLSLPROGRAM
264-
#pragma target 3.0
248+
#pragma target 3.5
265249
#pragma vertex VertDefault
266250
#pragma fragment FragCombine
267251
#include "DepthOfField.hlsl"
@@ -273,7 +257,7 @@ Shader "Hidden/PostProcessing/DepthOfField"
273257
Name "Debug Overlay"
274258

275259
HLSLPROGRAM
276-
#pragma target 3.0
260+
#pragma target 3.5
277261
#pragma vertex VertDefault
278262
#pragma fragment FragDebugOverlay
279263
#include "DepthOfField.hlsl"

0 commit comments

Comments
 (0)