Skip to content

Commit 2a164ad

Browse files
SSR: use depth to mask samples instead of stencil
1 parent ed02d3e commit 2a164ad

File tree

2 files changed

+30
-53
lines changed

2 files changed

+30
-53
lines changed

PostProcess/ScreenSpaceReflection/src/ScreenSpaceReflection.cpp

Lines changed: 25 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -44,34 +44,10 @@ namespace HLSL
4444
#include "Shaders/PostProcess/ScreenSpaceReflection/public/ScreenSpaceReflectionStructures.fxh"
4545
} // namespace HLSL
4646

47-
static DILIGENT_CONSTEXPR DepthStencilStateDesc DSS_StencilWrite{
48-
False, // DepthEnable
49-
False, // DepthWriteEnable
50-
COMPARISON_FUNC_ALWAYS, // DepthFunc
51-
True, // StencilEnable
52-
0xFF, // StencilReadMask
53-
0xFF, // StencilWriteMask
54-
{
55-
STENCIL_OP_KEEP, // StencilFailOp
56-
STENCIL_OP_KEEP, // StencilDepthFailOp
57-
STENCIL_OP_REPLACE, // StencilPassOp
58-
COMPARISON_FUNC_ALWAYS // StencilFunc
59-
},
60-
};
61-
62-
static DILIGENT_CONSTEXPR DepthStencilStateDesc DSS_StencilReadComparisonEqual{
63-
False, // DepthEnable
64-
False, // DepthWriteEnable
65-
COMPARISON_FUNC_ALWAYS, // DepthFunc
66-
True, // StencilEnable
67-
0xFF, // StencilReadMask
68-
0xFF, // StencilWriteMask
69-
{
70-
STENCIL_OP_KEEP, // StencilFailOp
71-
STENCIL_OP_KEEP, // StencilDepthFailOp
72-
STENCIL_OP_KEEP, // StencilPassOp
73-
COMPARISON_FUNC_EQUAL // StencilFunc
74-
},
47+
static DILIGENT_CONSTEXPR DepthStencilStateDesc DSS_WriteAlways{
48+
True, // DepthEnable
49+
True, // DepthWriteEnable
50+
COMPARISON_FUNC_ALWAYS // DepthFunc
7551
};
7652

7753
ScreenSpaceReflection::ScreenSpaceReflection(IRenderDevice* pDevice, const CreateInfo& CI) :
@@ -181,11 +157,7 @@ void ScreenSpaceReflection::PrepareResources(IRenderDevice* pDevice, IDeviceCont
181157
m_Resources.Insert(RESOURCE_IDENTIFIER_ROUGHNESS, Device.CreateTexture(Desc));
182158
}
183159

184-
TEXTURE_FORMAT DepthStencilFormat = TEX_FORMAT_D32_FLOAT_S8X24_UINT;
185-
186-
TextureFormatInfoExt FormatInfo = Device.GetTextureFormatInfoExt(TEX_FORMAT_D24_UNORM_S8_UINT);
187-
if (FormatInfo.Supported && FormatInfo.BindFlags & BIND_DEPTH_STENCIL)
188-
DepthStencilFormat = TEX_FORMAT_D24_UNORM_S8_UINT;
160+
constexpr TEXTURE_FORMAT DepthStencilFormat = TEX_FORMAT_D16_UNORM;
189161

190162
{
191163
m_DepthStencilMaskDSVReadOnly.Release();
@@ -502,6 +474,10 @@ bool ScreenSpaceReflection::PrepareShadersAndPSO(const RenderAttributes& RenderA
502474
Macros.Add("SSR_OPTION_PREVIOUS_FRAME", (m_FeatureFlags & FEATURE_FLAG_PREVIOUS_FRAME) != 0);
503475
Macros.Add("SSR_OPTION_HALF_RESOLUTION", (m_FeatureFlags & FEATURE_FLAG_HALF_RESOLUTION) != 0);
504476

477+
// We clear depth to 0.0 and then write 1.0 to mask pixels with reflection.
478+
const ShaderMacroHelper TriangleDepth05{{ShaderMacro{"TRIANGLE_DEPTH", "0.5"}}};
479+
const ShaderMacroHelper TriangleDepth10{{ShaderMacro{"TRIANGLE_DEPTH", "1.0"}}};
480+
505481
bool AllPSOsReady = true;
506482

507483
{
@@ -547,7 +523,7 @@ bool ScreenSpaceReflection::PrepareShadersAndPSO(const RenderAttributes& RenderA
547523
.AddVariable(SHADER_TYPE_PIXEL, "g_TextureDepth", SHADER_RESOURCE_VARIABLE_TYPE_DYNAMIC, SHADER_VARIABLE_FLAG_UNFILTERABLE_FLOAT_TEXTURE_WEBGPU)
548524
.AddVariable(SHADER_TYPE_PIXEL, "g_TextureMaterialParameters", SHADER_RESOURCE_VARIABLE_TYPE_DYNAMIC);
549525

550-
RefCntAutoPtr<IShader> VS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "FullScreenTriangleVS.fx", "FullScreenTriangleVS", SHADER_TYPE_VERTEX, {}, ShaderFlags);
526+
RefCntAutoPtr<IShader> VS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "FullScreenTriangleVS.fx", "FullScreenTriangleVS", SHADER_TYPE_VERTEX, TriangleDepth10, ShaderFlags);
551527
RefCntAutoPtr<IShader> PS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "SSR_ComputeStencilMaskAndExtractRoughness.fx", "ComputeStencilMaskAndExtractRoughnessPS", SHADER_TYPE_PIXEL, Macros, ShaderFlags);
552528

553529
RenderTech.InitializePSO(RenderAttribs.pDevice,
@@ -557,7 +533,7 @@ bool ScreenSpaceReflection::PrepareShadersAndPSO(const RenderAttributes& RenderA
557533
m_Resources[RESOURCE_IDENTIFIER_ROUGHNESS].AsTexture()->GetDesc().Format,
558534
},
559535
m_Resources[RESOURCE_IDENTIFIER_DEPTH_STENCIL_MASK].AsTexture()->GetDesc().Format,
560-
DSS_StencilWrite, BS_Default, false, PSOFlags);
536+
DSS_WriteAlways, BS_Default, false, PSOFlags);
561537
}
562538
if (AllPSOsReady && !RenderTech.IsReady())
563539
AllPSOsReady = false;
@@ -573,15 +549,15 @@ bool ScreenSpaceReflection::PrepareShadersAndPSO(const RenderAttributes& RenderA
573549
.AddVariable(SHADER_TYPE_PIXEL, "g_TextureDepth", SHADER_RESOURCE_VARIABLE_TYPE_DYNAMIC, SHADER_VARIABLE_FLAG_UNFILTERABLE_FLOAT_TEXTURE_WEBGPU)
574550
.AddVariable(SHADER_TYPE_PIXEL, "g_TextureRoughness", SHADER_RESOURCE_VARIABLE_TYPE_DYNAMIC);
575551

576-
RefCntAutoPtr<IShader> VS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "FullScreenTriangleVS.fx", "FullScreenTriangleVS", SHADER_TYPE_VERTEX, {}, ShaderFlags);
552+
RefCntAutoPtr<IShader> VS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "FullScreenTriangleVS.fx", "FullScreenTriangleVS", SHADER_TYPE_VERTEX, TriangleDepth10, ShaderFlags);
577553
RefCntAutoPtr<IShader> PS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "SSR_ComputeDownsampledStencilMask.fx", "ComputeDownsampledStencilMaskPS", SHADER_TYPE_PIXEL, Macros, ShaderFlags);
578554

579555
RenderTech.InitializePSO(RenderAttribs.pDevice,
580556
RenderAttribs.pStateCache, "ScreenSpaceReflection::ComputeDownsampledStencilMask",
581557
VS, PS, ResourceLayout,
582558
{},
583559
m_Resources[RESOURCE_IDENTIFIER_DEPTH_STENCIL_MASK].AsTexture()->GetDesc().Format,
584-
DSS_StencilWrite, BS_Default, false, PSOFlags);
560+
DSS_WriteAlways, BS_Default, false, PSOFlags);
585561
}
586562
if (AllPSOsReady && !RenderTech.IsReady())
587563
AllPSOsReady = false;
@@ -608,7 +584,7 @@ bool ScreenSpaceReflection::PrepareShadersAndPSO(const RenderAttributes& RenderA
608584
if (!SupportedFeatures.TextureSubresourceViews)
609585
ResourceLayout.AddImmutableSampler(SHADER_TYPE_PIXEL, "g_TextureDepthHierarchy", Sam_PointClamp);
610586

611-
RefCntAutoPtr<IShader> VS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "FullScreenTriangleVS.fx", "FullScreenTriangleVS", SHADER_TYPE_VERTEX, {}, ShaderFlags);
587+
RefCntAutoPtr<IShader> VS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "FullScreenTriangleVS.fx", "FullScreenTriangleVS", SHADER_TYPE_VERTEX, TriangleDepth05, ShaderFlags);
612588
RefCntAutoPtr<IShader> PS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "SSR_ComputeIntersection.fx", "ComputeIntersectionPS", SHADER_TYPE_PIXEL, Macros, ShaderFlags);
613589

614590
RenderTech.InitializePSO(RenderAttribs.pDevice,
@@ -619,7 +595,7 @@ bool ScreenSpaceReflection::PrepareShadersAndPSO(const RenderAttributes& RenderA
619595
m_Resources[RESOURCE_IDENTIFIER_RAY_DIRECTION_PDF].AsTexture()->GetDesc().Format,
620596
},
621597
m_Resources[RESOURCE_IDENTIFIER_DEPTH_STENCIL_MASK].AsTexture()->GetDesc().Format,
622-
DSS_StencilReadComparisonEqual, BS_Default, true, PSOFlags);
598+
DSS_EnableDepthNoWrites, BS_Default, true, PSOFlags);
623599
}
624600
if (AllPSOsReady && !RenderTech.IsReady())
625601
AllPSOsReady = false;
@@ -640,7 +616,7 @@ bool ScreenSpaceReflection::PrepareShadersAndPSO(const RenderAttributes& RenderA
640616
.AddVariable(SHADER_TYPE_PIXEL, "g_TextureIntersectSpecular", SHADER_RESOURCE_VARIABLE_TYPE_DYNAMIC)
641617
.AddVariable(SHADER_TYPE_PIXEL, "g_TextureRayLength", SHADER_RESOURCE_VARIABLE_TYPE_DYNAMIC);
642618

643-
RefCntAutoPtr<IShader> VS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "FullScreenTriangleVS.fx", "FullScreenTriangleVS", SHADER_TYPE_VERTEX, {}, ShaderFlags);
619+
RefCntAutoPtr<IShader> VS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "FullScreenTriangleVS.fx", "FullScreenTriangleVS", SHADER_TYPE_VERTEX, TriangleDepth05, ShaderFlags);
644620
RefCntAutoPtr<IShader> PS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "SSR_ComputeSpatialReconstruction.fx", "ComputeSpatialReconstructionPS", SHADER_TYPE_PIXEL, Macros, ShaderFlags);
645621

646622
RenderTech.InitializePSO(RenderAttribs.pDevice,
@@ -652,7 +628,7 @@ bool ScreenSpaceReflection::PrepareShadersAndPSO(const RenderAttributes& RenderA
652628
m_Resources[RESOURCE_IDENTIFIER_RESOLVED_DEPTH].AsTexture()->GetDesc().Format,
653629
},
654630
m_Resources[RESOURCE_IDENTIFIER_DEPTH_STENCIL_MASK].AsTexture()->GetDesc().Format,
655-
DSS_StencilReadComparisonEqual, BS_Default, true, PSOFlags);
631+
DSS_EnableDepthNoWrites, BS_Default, true, PSOFlags);
656632
}
657633
if (AllPSOsReady && !RenderTech.IsReady())
658634
AllPSOsReady = false;
@@ -678,7 +654,7 @@ bool ScreenSpaceReflection::PrepareShadersAndPSO(const RenderAttributes& RenderA
678654
.AddImmutableSampler(SHADER_TYPE_PIXEL, "g_TexturePrevRadiance", Sam_LinearClamp)
679655
.AddImmutableSampler(SHADER_TYPE_PIXEL, "g_TexturePrevVariance", Sam_LinearClamp);
680656

681-
RefCntAutoPtr<IShader> VS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "FullScreenTriangleVS.fx", "FullScreenTriangleVS", SHADER_TYPE_VERTEX, {}, ShaderFlags);
657+
RefCntAutoPtr<IShader> VS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "FullScreenTriangleVS.fx", "FullScreenTriangleVS", SHADER_TYPE_VERTEX, TriangleDepth05, ShaderFlags);
682658
RefCntAutoPtr<IShader> PS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "SSR_ComputeTemporalAccumulation.fx", "ComputeTemporalAccumulationPS", SHADER_TYPE_PIXEL, Macros, ShaderFlags);
683659

684660
RenderTech.InitializePSO(RenderAttribs.pDevice,
@@ -689,7 +665,7 @@ bool ScreenSpaceReflection::PrepareShadersAndPSO(const RenderAttributes& RenderA
689665
m_Resources[RESOURCE_IDENTIFIER_VARIANCE_HISTORY0].AsTexture()->GetDesc().Format,
690666
},
691667
m_Resources[RESOURCE_IDENTIFIER_DEPTH_STENCIL_MASK].AsTexture()->GetDesc().Format,
692-
DSS_StencilReadComparisonEqual, BS_Default, true, PSOFlags);
668+
DSS_EnableDepthNoWrites, BS_Default, true, PSOFlags);
693669
}
694670
if (AllPSOsReady && !RenderTech.IsReady())
695671
AllPSOsReady = false;
@@ -710,7 +686,7 @@ bool ScreenSpaceReflection::PrepareShadersAndPSO(const RenderAttributes& RenderA
710686
.AddVariable(SHADER_TYPE_PIXEL, "g_TextureRadiance", SHADER_RESOURCE_VARIABLE_TYPE_DYNAMIC)
711687
.AddVariable(SHADER_TYPE_PIXEL, "g_TextureVariance", SHADER_RESOURCE_VARIABLE_TYPE_DYNAMIC);
712688

713-
RefCntAutoPtr<IShader> VS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "FullScreenTriangleVS.fx", "FullScreenTriangleVS", SHADER_TYPE_VERTEX, {}, ShaderFlags);
689+
RefCntAutoPtr<IShader> VS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "FullScreenTriangleVS.fx", "FullScreenTriangleVS", SHADER_TYPE_VERTEX, TriangleDepth05, ShaderFlags);
714690
RefCntAutoPtr<IShader> PS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "SSR_ComputeBilateralCleanup.fx", "ComputeBilateralCleanupPS", SHADER_TYPE_PIXEL, Macros, ShaderFlags);
715691

716692
RenderTech.InitializePSO(RenderAttribs.pDevice,
@@ -720,7 +696,7 @@ bool ScreenSpaceReflection::PrepareShadersAndPSO(const RenderAttributes& RenderA
720696
m_Resources[RESOURCE_IDENTIFIER_OUTPUT].AsTexture()->GetDesc().Format,
721697
},
722698
m_Resources[RESOURCE_IDENTIFIER_DEPTH_STENCIL_MASK].AsTexture()->GetDesc().Format,
723-
DSS_StencilReadComparisonEqual, BS_Default, true, PSOFlags);
699+
DSS_EnableDepthNoWrites, BS_Default, true, PSOFlags);
724700
}
725701
if (AllPSOsReady && !RenderTech.IsReady())
726702
AllPSOsReady = false;
@@ -898,8 +874,8 @@ void ScreenSpaceReflection::ComputeStencilMaskAndExtractRoughness(const RenderAt
898874
ITextureView* pDSV = m_Resources[RESOURCE_IDENTIFIER_DEPTH_STENCIL_MASK].GetTextureDSV();
899875

900876
RenderAttribs.pDeviceContext->SetRenderTargets(_countof(pRTVs), pRTVs, pDSV, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
901-
RenderAttribs.pDeviceContext->ClearDepthStencil(pDSV, CLEAR_STENCIL_FLAG, 1.0, 0x00, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
902-
RenderAttribs.pDeviceContext->SetStencilRef(0xFF);
877+
// Clear depth to 0.0. Pixels that are not discarded write 1.0.
878+
RenderAttribs.pDeviceContext->ClearDepthStencil(pDSV, CLEAR_DEPTH_FLAG_NONE, 0.0, 0, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
903879
RenderAttribs.pDeviceContext->SetPipelineState(RenderTech.PSO);
904880
RenderAttribs.pDeviceContext->CommitShaderResources(RenderTech.SRB, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
905881
RenderAttribs.pDeviceContext->Draw({3, DRAW_FLAG_VERIFY_ALL, 1});
@@ -927,8 +903,8 @@ void ScreenSpaceReflection::ComputeDownsampledStencilMask(const RenderAttributes
927903
ITextureView* pDSV = m_Resources[RESOURCE_IDENTIFIER_DEPTH_STENCIL_MASK_HALF_RES].GetTextureDSV();
928904

929905
RenderAttribs.pDeviceContext->SetRenderTargets(0, nullptr, pDSV, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
930-
RenderAttribs.pDeviceContext->ClearDepthStencil(pDSV, CLEAR_STENCIL_FLAG, 1.0, 0x00, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
931-
RenderAttribs.pDeviceContext->SetStencilRef(0xFF);
906+
// Clear depth to 0.0. Pixels that are not discarded write 1.0.
907+
RenderAttribs.pDeviceContext->ClearDepthStencil(pDSV, CLEAR_DEPTH_FLAG, 0.0, 0, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
932908
RenderAttribs.pDeviceContext->SetPipelineState(RenderTech.PSO);
933909
RenderAttribs.pDeviceContext->CommitShaderResources(RenderTech.SRB, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
934910
RenderAttribs.pDeviceContext->Draw({3, DRAW_FLAG_VERIFY_ALL, 1});
@@ -967,7 +943,6 @@ void ScreenSpaceReflection::ComputeIntersection(const RenderAttributes& RenderAt
967943
RenderAttribs.pDeviceContext->SetRenderTargets(_countof(pRTVs), pRTVs, pDSV, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
968944
RenderAttribs.pDeviceContext->ClearRenderTarget(pRTVs[0], RTVClearColor.Data(), RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
969945
RenderAttribs.pDeviceContext->ClearRenderTarget(pRTVs[1], RTVClearColor.Data(), RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
970-
RenderAttribs.pDeviceContext->SetStencilRef(0xFF);
971946
RenderAttribs.pDeviceContext->SetPipelineState(RenderTech.PSO);
972947
RenderAttribs.pDeviceContext->CommitShaderResources(RenderTech.SRB, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
973948
RenderAttribs.pDeviceContext->Draw({3, DRAW_FLAG_VERIFY_ALL, 1});
@@ -1000,7 +975,6 @@ void ScreenSpaceReflection::ComputeSpatialReconstruction(const RenderAttributes&
1000975
};
1001976

1002977
RenderAttribs.pDeviceContext->SetRenderTargets(_countof(pRTVs), pRTVs, m_DepthStencilMaskDSVReadOnly, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
1003-
RenderAttribs.pDeviceContext->SetStencilRef(0xFF);
1004978
RenderAttribs.pDeviceContext->SetPipelineState(RenderTech.PSO);
1005979
RenderAttribs.pDeviceContext->CommitShaderResources(RenderTech.SRB, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
1006980
RenderAttribs.pDeviceContext->Draw({3, DRAW_FLAG_VERIFY_ALL, 1});
@@ -1040,7 +1014,6 @@ void ScreenSpaceReflection::ComputeTemporalAccumulation(const RenderAttributes&
10401014

10411015
RenderAttribs.pDeviceContext->CommitShaderResources(RenderTech.SRB, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
10421016
RenderAttribs.pDeviceContext->SetRenderTargets(_countof(pRTVs), pRTVs, m_DepthStencilMaskDSVReadOnly, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
1043-
RenderAttribs.pDeviceContext->SetStencilRef(0xFF);
10441017
RenderAttribs.pDeviceContext->SetPipelineState(RenderTech.PSO);
10451018
RenderAttribs.pDeviceContext->Draw({3, DRAW_FLAG_VERIFY_ALL, 1});
10461019
RenderAttribs.pDeviceContext->SetRenderTargets(0, nullptr, nullptr, RESOURCE_STATE_TRANSITION_MODE_NONE);
@@ -1075,7 +1048,6 @@ void ScreenSpaceReflection::ComputeBilateralCleanup(const RenderAttributes& Rend
10751048

10761049
RenderAttribs.pDeviceContext->SetRenderTargets(_countof(pRTVs), pRTVs, m_DepthStencilMaskDSVReadOnly, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
10771050
RenderAttribs.pDeviceContext->ClearRenderTarget(pRTVs[0], RTVClearColor.Data(), RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
1078-
RenderAttribs.pDeviceContext->SetStencilRef(0xFF);
10791051
RenderAttribs.pDeviceContext->SetPipelineState(RenderTech.PSO);
10801052
RenderAttribs.pDeviceContext->CommitShaderResources(RenderTech.SRB, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
10811053
RenderAttribs.pDeviceContext->Draw({3, DRAW_FLAG_VERIFY_ALL, 1});

Shaders/Common/private/FullScreenTriangleVS.fx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,14 @@ void FullScreenTriangleVS(in uint VertexId : SV_VertexID,
1515
// We use VertexId trick on old hardware that does not support BaseInstance.
1616
VSOut.uInstID = InstID != 0u ? InstID : VertexId / 3u;
1717

18+
#ifdef TRIANGLE_DEPTH
19+
float z = DepthToNormalizedDeviceZ(TRIANGLE_DEPTH);
20+
#else
1821
// Write 0 to the depth buffer
1922
// NDC_MIN_Z == 0 in DX
2023
// NDC_MIN_Z == -1 in GL
2124
float z = NDC_MIN_Z;
25+
#endif
26+
2227
VSOut.f4PixelPos = float4(f2XY, z, 1.0);
2328
}

0 commit comments

Comments
 (0)