@@ -70,7 +70,7 @@ HnPostProcessTask::~HnPostProcessTask()
7070{
7171}
7272
73- static constexpr WebGPUResourceAttribs kWGPUDepthMapAttribs {WEB_GPU_BINDING_TYPE_UNFILTERABLE_FLOAT_TEXTURE, RESOURCE_DIM_TEX_2D};
73+ static constexpr WebGPUResourceAttribs kWGPUUnfilterableTex2D {WEB_GPU_BINDING_TYPE_UNFILTERABLE_FLOAT_TEXTURE, RESOURCE_DIM_TEX_2D};
7474
7575void HnPostProcessTask::PostProcessingTechnique::PreparePRS ()
7676{
@@ -93,15 +93,16 @@ void HnPostProcessTask::PostProcessingTechnique::PreparePRS()
9393
9494 PRSDesc
9595 .AddResource (SHADER_TYPE_PIXEL, " g_ColorBuffer" , SHADER_RESOURCE_TYPE_TEXTURE_SRV, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE)
96- .AddResource (SHADER_TYPE_PIXEL, " g_Depth" , SHADER_RESOURCE_TYPE_TEXTURE_SRV, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE, PIPELINE_RESOURCE_FLAG_NONE, kWGPUDepthMapAttribs )
97- .AddResource (SHADER_TYPE_PIXEL, " g_SelectionDepth" , SHADER_RESOURCE_TYPE_TEXTURE_SRV, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE, PIPELINE_RESOURCE_FLAG_NONE, kWGPUDepthMapAttribs )
96+ .AddResource (SHADER_TYPE_PIXEL, " g_Depth" , SHADER_RESOURCE_TYPE_TEXTURE_SRV, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE, PIPELINE_RESOURCE_FLAG_NONE, kWGPUUnfilterableTex2D )
97+ .AddResource (SHADER_TYPE_PIXEL, " g_SelectionDepth" , SHADER_RESOURCE_TYPE_TEXTURE_SRV, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE, PIPELINE_RESOURCE_FLAG_NONE, kWGPUUnfilterableTex2D )
9898 .AddResource (SHADER_TYPE_PIXEL, " g_ClosestSelectedLocation" , SHADER_RESOURCE_TYPE_TEXTURE_SRV, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE)
9999 .AddResource (SHADER_TYPE_PIXEL, " g_SSR" , SHADER_RESOURCE_TYPE_TEXTURE_SRV, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE)
100100 .AddResource (SHADER_TYPE_PIXEL, " g_SSAO" , SHADER_RESOURCE_TYPE_TEXTURE_SRV, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE)
101101 .AddResource (SHADER_TYPE_PIXEL, " g_SpecularIBL" , SHADER_RESOURCE_TYPE_TEXTURE_SRV, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE)
102102 .AddResource (SHADER_TYPE_PIXEL, " g_Normal" , SHADER_RESOURCE_TYPE_TEXTURE_SRV, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE)
103103 .AddResource (SHADER_TYPE_PIXEL, " g_MaterialData" , SHADER_RESOURCE_TYPE_TEXTURE_SRV, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE)
104- .AddResource (SHADER_TYPE_PIXEL, " g_BaseColor" , SHADER_RESOURCE_TYPE_TEXTURE_SRV, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE);
104+ .AddResource (SHADER_TYPE_PIXEL, " g_BaseColor" , SHADER_RESOURCE_TYPE_TEXTURE_SRV, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE)
105+ .AddResource (SHADER_TYPE_PIXEL, " g_MeshID" , SHADER_RESOURCE_TYPE_TEXTURE_SRV, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE, PIPELINE_RESOURCE_FLAG_NONE, kWGPUUnfilterableTex2D );
105106
106107 PRS = RenderDeviceWithCache_N{pDevice, pStateCache}.CreatePipelineResourceSignature (PRSDesc);
107108 VERIFY_EXPR (PRS);
@@ -186,8 +187,12 @@ void HnPostProcessTask::PostProcessingTechnique::PreparePSO(TEXTURE_FORMAT RTVFo
186187 }
187188
188189 {
189- if (_ViewMode != HN_VIEW_MODE_SCENE_DEPTH && _ViewMode != HN_VIEW_MODE_EDGE_MAP)
190+ if (_ViewMode != HN_VIEW_MODE_SCENE_DEPTH &&
191+ _ViewMode != HN_VIEW_MODE_EDGE_MAP &&
192+ _ViewMode != HN_VIEW_MODE_MESH_ID)
193+ {
190194 _ViewMode = HN_VIEW_MODE_SHADED;
195+ }
191196
192197 if (ViewMode != _ViewMode)
193198 {
@@ -216,6 +221,7 @@ void HnPostProcessTask::PostProcessingTechnique::PreparePSO(TEXTURE_FORMAT RTVFo
216221
217222 Macros.Add (" VIEW_MODE_SCENE_DEPTH" , static_cast <int >(HN_VIEW_MODE_SCENE_DEPTH));
218223 Macros.Add (" VIEW_MODE_EDGE_MAP" , static_cast <int >(HN_VIEW_MODE_EDGE_MAP));
224+ Macros.Add (" VIEW_MODE_MESH_ID" , static_cast <int >(HN_VIEW_MODE_MESH_ID));
219225 Macros.Add (" VIEW_MODE" , static_cast <int >(ViewMode));
220226
221227 if (GridFeatureFlags != CoordinateGridRenderer::FEATURE_FLAG_NONE)
@@ -288,6 +294,7 @@ void HnPostProcessTask::PostProcessingTechnique::PrepareSRB(ITextureView* pClose
288294 ITextureView* pNormalSRV = FrameTargets->GBufferSRVs [HnFrameRenderTargets::GBUFFER_TARGET_NORMAL];
289295 ITextureView* pMaterialSRV = FrameTargets->GBufferSRVs [HnFrameRenderTargets::GBUFFER_TARGET_MATERIAL];
290296 ITextureView* pBaseColorSRV = FrameTargets->GBufferSRVs [HnFrameRenderTargets::GBUFFER_TARGET_BASE_COLOR];
297+ ITextureView* pMeshID = FrameTargets->GBufferSRVs [HnFrameRenderTargets::GBUFFER_TARGET_MESH_ID];
291298 if (SRB)
292299 {
293300 auto VarValueChanged = [](const ShaderResourceVariableX& Var, IDeviceObject* pValue) {
@@ -303,7 +310,8 @@ void HnPostProcessTask::PostProcessingTechnique::PrepareSRB(ITextureView* pClose
303310 VarValueChanged (ShaderVars.SpecularIBL , pSpecularIblSRV) ||
304311 VarValueChanged (ShaderVars.Normal , pNormalSRV) ||
305312 VarValueChanged (ShaderVars.Material , pMaterialSRV) ||
306- VarValueChanged (ShaderVars.BaseColor , pBaseColorSRV))
313+ VarValueChanged (ShaderVars.BaseColor , pBaseColorSRV) ||
314+ VarValueChanged (ShaderVars.MeshID , pMeshID))
307315 {
308316 Resources = {};
309317 CurrSRB = nullptr ;
@@ -331,6 +339,7 @@ void HnPostProcessTask::PostProcessingTechnique::PrepareSRB(ITextureView* pClose
331339 SetVar (ShaderVars.Normal , " g_Normal" , pNormalSRV);
332340 SetVar (ShaderVars.Material , " g_MaterialData" , pMaterialSRV);
333341 SetVar (ShaderVars.BaseColor , " g_BaseColor" , pBaseColorSRV);
342+ SetVar (ShaderVars.MeshID , " g_MeshID" , pMeshID);
334343 // clang-format on
335344 }
336345
@@ -356,7 +365,7 @@ void HnPostProcessTask::CopyFrameTechnique::PreparePRS()
356365 .AddResource (SHADER_TYPE_PIXEL, " cbPostProcessAttribs" , SHADER_RESOURCE_TYPE_CONSTANT_BUFFER, SHADER_RESOURCE_VARIABLE_TYPE_STATIC)
357366 .AddResource (SHADER_TYPE_PIXEL, " cbFrameAttribs" , SHADER_RESOURCE_TYPE_CONSTANT_BUFFER, SHADER_RESOURCE_VARIABLE_TYPE_STATIC)
358367 .AddResource (SHADER_TYPE_PIXEL, " g_ColorBuffer" , SHADER_RESOURCE_TYPE_TEXTURE_SRV, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE)
359- .AddResource (SHADER_TYPE_PIXEL, " g_Depth" , SHADER_RESOURCE_TYPE_TEXTURE_SRV, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE, PIPELINE_RESOURCE_FLAG_NONE, kWGPUDepthMapAttribs );
368+ .AddResource (SHADER_TYPE_PIXEL, " g_Depth" , SHADER_RESOURCE_TYPE_TEXTURE_SRV, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE, PIPELINE_RESOURCE_FLAG_NONE, kWGPUUnfilterableTex2D );
360369
361370 PRS = RenderDeviceWithCache_N{pDevice, pStateCache}.CreatePipelineResourceSignature (PRSDesc);
362371 VERIFY_EXPR (PRS);
0 commit comments