MCPcopy Create free account
hub / github.com/DiligentGraphics/DiligentFX / UpdateDrawListGPUResources

Method UpdateDrawListGPUResources

Hydrogent/src/HnRenderPass.cpp:666–812  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

664}
665
666void HnRenderPass::UpdateDrawListGPUResources(RenderState& State)
667{
668 if (m_DrawListItemsDirtyFlags & DRAW_LIST_ITEM_DIRTY_FLAG_PSO)
669 {
670 m_PendingPSOs.clear();
671 }
672
673 if (State.RenderParam.GetAsyncShaderCompilation() &&
674 m_FallbackPSO == nullptr &&
675 (m_Params.UsdPsoFlags & USD_Renderer::USD_PSO_FLAG_ENABLE_COLOR_OUTPUT) != 0 &&
676 m_RenderMode == HN_RENDER_MODE_SOLID)
677 {
678 const PBR_Renderer::PSO_FLAGS FallbackPSOFlags =
679 (m_RenderMode == HN_RENDER_MODE_SOLID ?
680 PBR_Renderer::PSO_FLAG_COMPUTE_MOTION_VECTORS :
681 PBR_Renderer::PSO_FLAG_UNSHADED) |
682 static_cast<PBR_Renderer::PSO_FLAGS>(m_Params.UsdPsoFlags);
683
684 const PBR_Renderer::PSOKey FallbackPSOKey{
685 FallbackPSOFlags,
686 PBR_Renderer::ALPHA_MODE_OPAQUE,
687 CULL_MODE_NONE,
688 PBR_Renderer::DebugViewType::None,
689 PBR_Renderer::LoadingAnimationMode::Always,
690 };
691 m_FallbackPSO = State.GePsoCache().Get(FallbackPSOKey, PBR_Renderer::PsoCacheAccessor::GET_FLAG_CREATE_IF_NULL);
692 }
693
694 if (State.RenderParam.GetFrameNumber() <= 1)
695 {
696 // Do not initialize draw items on the first frame to allow
697 // post-processing shaders to be compiled first.
698 return;
699 }
700
701 struct DrawListItemRenderState
702 {
703 const DrawListItem& Item;
704 mutable size_t Hash = 0;
705
706 struct Hasher
707 {
708 size_t operator()(const DrawListItemRenderState& State) const
709 {
710 if (State.Hash == 0)
711 {
712 State.Hash = ComputeHash(State.Item.pPSO,
713 State.Item.IndexBuffer,
714 State.Item.NumVertexBuffers,
715 State.Item.Material.GetSRB());
716 for (Uint32 i = 0; i < State.Item.NumVertexBuffers; ++i)
717 {
718 HashCombine(State.Hash, State.Item.VertexBuffers[i]);
719 }
720 }
721 return State.Hash;
722 }
723 };

Callers

nothing calls this directly

Calls 6

GetFrameNumberMethod · 0.80
GetGeometryVersionMethod · 0.80
GetMaterialVersionMethod · 0.80
GetMethod · 0.45
GetSRBMethod · 0.45

Tested by

no test coverage detected