Skip to content

Commit 933f089

Browse files
committed
making depthOnly pass compatible to render color texture and changing shaders to accommodate that
1 parent c149ec9 commit 933f089

File tree

23 files changed

+38
-36
lines changed

23 files changed

+38
-36
lines changed

TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/230_Decals/Materials/Brick.mat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Material:
1313
m_LightmapFlags: 4
1414
m_EnableInstancingVariants: 0
1515
m_DoubleSidedGI: 0
16-
m_CustomRenderQueue: 2000
16+
m_CustomRenderQueue: 1999
1717
stringTagMap:
1818
RenderType: Opaque
1919
disabledShaderPasses: []
@@ -95,7 +95,7 @@ Material:
9595
- _Metallic: 0
9696
- _OcclusionStrength: 0.387
9797
- _Parallax: 0.0477
98-
- _QueueOffset: 0
98+
- _QueueOffset: -1
9999
- _ReceiveShadows: 1
100100
- _Smoothness: 0.742
101101
- _SmoothnessTextureChannel: 0

com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/DepthOnlyPass.hlsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ half4 frag(PackedVaryings packedInput) : SV_TARGET
2323
clip(surfaceDescription.Alpha - surfaceDescription.AlphaClipThreshold);
2424
#endif
2525

26-
return 0;
26+
return packedInput.positionCS.z;
2727
}
2828

2929
#endif

com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1165,7 +1165,7 @@ public static RenderStateCollection DepthOnly(UniversalTarget target)
11651165
{ RenderState.ZTest(ZTest.LEqual) },
11661166
{ RenderState.ZWrite(ZWrite.On) },
11671167
{ UberSwitchedCullRenderState(target) },
1168-
{ RenderState.ColorMask("ColorMask 0") },
1168+
{ RenderState.ColorMask("ColorMask R") },
11691169
};
11701170

11711171
return result;

com.unity.render-pipelines.universal/Runtime/Passes/DepthOnlyPass.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public class DepthOnlyPass : ScriptableRenderPass
2121
FilteringSettings m_FilteringSettings;
2222

2323
// Constants
24-
private const int k_DepthBufferBits = 32;
24+
private const int k_DepthBufferBits = 0;
2525

2626
/// <summary>
2727
/// Create the DepthOnlyPass
@@ -31,6 +31,7 @@ public DepthOnlyPass(RenderPassEvent evt, RenderQueueRange renderQueueRange, Lay
3131
base.profilingSampler = new ProfilingSampler(nameof(DepthOnlyPass));
3232
m_FilteringSettings = new FilteringSettings(renderQueueRange, layerMask);
3333
renderPassEvent = evt;
34+
useNativeRenderPass = false;
3435
}
3536

3637
/// <summary>
@@ -41,7 +42,7 @@ public void Setup(
4142
RenderTargetHandle depthAttachmentHandle)
4243
{
4344
this.depthAttachmentHandle = depthAttachmentHandle;
44-
baseDescriptor.colorFormat = RenderTextureFormat.Depth;
45+
baseDescriptor.graphicsFormat = GraphicsFormat.R32_SFloat;
4546
baseDescriptor.depthBufferBits = k_DepthBufferBits;
4647

4748
// Depth-Only pass don't use MSAA
@@ -62,15 +63,16 @@ public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderin
6263
if (renderingData.cameraData.renderer.useDepthPriming && (renderingData.cameraData.renderType == CameraRenderType.Base || renderingData.cameraData.clearDepth))
6364
{
6465
ConfigureTarget(renderingData.cameraData.renderer.cameraDepthTarget, GraphicsFormat.DepthAuto, desc.width, desc.height, 1, true);
66+
// Only clear depth here so we don't clear any bound color target. It might be unused by this pass but that doesn't mean we can just clear it. (e.g. in case of overlay cameras + depth priming)
67+
ConfigureClear(ClearFlag.Depth, Color.black);
6568
}
6669
// When not using depth priming the camera target should be set to our non MSAA depth target.
6770
else
6871
{
69-
ConfigureTarget(new RenderTargetIdentifier(depthAttachmentHandle.Identifier(), 0, CubemapFace.Unknown, -1), GraphicsFormat.DepthAuto, desc.width, desc.height, 1, true);
72+
useNativeRenderPass = true;
73+
ConfigureTarget(new RenderTargetIdentifier(depthAttachmentHandle.Identifier(), 0, CubemapFace.Unknown, -1), GraphicsFormat.R32_SFloat, desc.width, desc.height, 1, false);
74+
ConfigureClear(ClearFlag.Color, Color.black);
7075
}
71-
72-
// Only clear depth here so we don't clear any bound color target. It might be unused by this pass but that doesn't mean we can just clear it. (e.g. in case of overlay cameras + depth priming)
73-
ConfigureClear(ClearFlag.Depth, Color.black);
7476
}
7577

7678
/// <inheritdoc/>

com.unity.render-pipelines.universal/Runtime/Passes/FinalBlitPass.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public override void Execute(ScriptableRenderContext context, ref RenderingData
108108
cameraTarget,
109109
RenderBufferLoadAction.Load,
110110
RenderBufferStoreAction.Store,
111-
ClearFlag.None,
111+
ClearFlag.Depth,
112112
Color.black);
113113

114114
Camera camera = cameraData.camera;

com.unity.render-pipelines.universal/Shaders/BakedLit.shader

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ Shader "Universal Render Pipeline/Baked Lit"
8282
Tags{"LightMode" = "DepthOnly"}
8383

8484
ZWrite On
85-
ColorMask 0
85+
ColorMask R
8686

8787
HLSLPROGRAM
8888
#pragma exclude_renderers gles gles3 glcore
@@ -280,7 +280,7 @@ Shader "Universal Render Pipeline/Baked Lit"
280280
Tags{"LightMode" = "DepthOnly"}
281281

282282
ZWrite On
283-
ColorMask 0
283+
ColorMask R
284284

285285
HLSLPROGRAM
286286
#pragma only_renderers gles gles3 glcore d3d11

com.unity.render-pipelines.universal/Shaders/ComplexLit.shader

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ Shader "Universal Render Pipeline/Complex Lit"
191191
Tags{"LightMode" = "DepthOnly"}
192192

193193
ZWrite On
194-
ColorMask 0
194+
ColorMask R
195195
Cull[_Cull]
196196

197197
HLSLPROGRAM
@@ -420,7 +420,7 @@ Shader "Universal Render Pipeline/Complex Lit"
420420
Tags{"LightMode" = "DepthOnly"}
421421

422422
ZWrite On
423-
ColorMask 0
423+
ColorMask R
424424
Cull[_Cull]
425425

426426
HLSLPROGRAM

com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ Varyings DepthOnlyVertex(Attributes input)
2929
return output;
3030
}
3131

32-
half4 DepthOnlyFragment(Varyings input) : SV_TARGET
32+
float DepthOnlyFragment(Varyings input) : SV_TARGET
3333
{
3434
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input);
3535

3636
Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff);
37-
return 0;
37+
return input.positionCS.z;
3838
}
3939
#endif

com.unity.render-pipelines.universal/Shaders/Lit.shader

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ Shader "Universal Render Pipeline/Lit"
260260
Tags{"LightMode" = "DepthOnly"}
261261

262262
ZWrite On
263-
ColorMask 0
263+
ColorMask R
264264
Cull[_Cull]
265265

266266
HLSLPROGRAM
@@ -495,7 +495,7 @@ Shader "Universal Render Pipeline/Lit"
495495
Tags{"LightMode" = "DepthOnly"}
496496

497497
ZWrite On
498-
ColorMask 0
498+
ColorMask R
499499
Cull[_Cull]
500500

501501
HLSLPROGRAM

com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7.shader

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ Shader "Universal Render Pipeline/Nature/SpeedTree7"
168168
Name "DepthOnly"
169169
Tags{"LightMode" = "DepthOnly"}
170170

171-
ColorMask 0
171+
ColorMask R
172172

173173
HLSLPROGRAM
174174

0 commit comments

Comments
 (0)