Skip to content

Commit 0e5f6eb

Browse files
HnRenderPass: get updated PSO flags from PSO Key
1 parent 6717a48 commit 0e5f6eb

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

Hydrogent/src/HnRenderPass.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1286,8 +1286,8 @@ void HnRenderPass::UpdateDrawListItemGPUResources(DrawListItem& ListItem, Render
12861286
auto& PsoCache = State.GePsoCache();
12871287
VERIFY_EXPR(PsoCache);
12881288

1289-
auto& PSOFlags = ListItem.PSOFlags;
1290-
PSOFlags = static_cast<PBR_Renderer::PSO_FLAGS>(m_Params.UsdPsoFlags);
1289+
PBR_Renderer::PSO_FLAGS& PSOFlags{ListItem.PSOFlags};
1290+
PSOFlags = static_cast<PBR_Renderer::PSO_FLAGS>(m_Params.UsdPsoFlags);
12911291

12921292
const HnDrawItem::GeometryData& Geo = DrawItem.GetGeometryData();
12931293
const CULL_MODE CullMode = ListItem.Mesh.GetCullMode();
@@ -1357,6 +1357,8 @@ void HnRenderPass::UpdateDrawListItemGPUResources(DrawListItem& ListItem, Render
13571357
ShaderTextureIndexingId,
13581358
};
13591359
ListItem.pPSO = PsoCache.Get(PSOKey, GetPSOFlags);
1360+
// PSOKey may have cleared some flags - get updated flags
1361+
PSOFlags = PSOKey.GetFlags();
13601362
}
13611363
else if (m_RenderMode == HN_RENDER_MODE_MESH_EDGES ||
13621364
m_RenderMode == HN_RENDER_MODE_POINTS)
@@ -1372,6 +1374,8 @@ void HnRenderPass::UpdateDrawListItemGPUResources(DrawListItem& ListItem, Render
13721374
ShaderTextureIndexingId,
13731375
};
13741376
ListItem.pPSO = PsoCache.Get(PSOKey, GetPSOFlags);
1377+
// PSOKey may have cleared some flags - get updated flags
1378+
PSOFlags = PSOKey.GetFlags();
13751379
}
13761380
else
13771381
{
@@ -1385,7 +1389,7 @@ void HnRenderPass::UpdateDrawListItemGPUResources(DrawListItem& ListItem, Render
13851389
ListItem.PrimitiveAttribsBufferRange, ") computed from material PSO flags. The latter is used by HnMaterial to set the buffer range.");
13861390

13871391
// Note: some PSOs (e.g. shadow) may not use the full range of the material attribs buffer.
1388-
VERIFY(ListItem.pMaterial->GetPBRMaterialAttribsSize() >= State.USDRenderer.GetPBRMaterialAttribsSize(ListItem.PSOFlags),
1392+
VERIFY(ListItem.pMaterial->GetPBRMaterialAttribsSize() >= State.USDRenderer.GetPBRMaterialAttribsSize(PSOFlags),
13891393
"Material attribs size is smaller than required by the PSO flags");
13901394
VERIFY_EXPR(ListItem.pPSO != nullptr);
13911395
m_PendingPSOs.emplace(ListItem.pPSO, false);

0 commit comments

Comments
 (0)