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

Method Execute

Hydrogent/src/Tasks/HnBeginMainPassTask.cpp:70–115  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

68}
69
70void HnBeginMainPassTask::Execute(pxr::HdTaskContext* TaskCtx)
71{
72 if (m_RenderIndex == nullptr)
73 {
74 UNEXPECTED("Render index is null. This likely indicates that Prepare() has not been called.");
75 return;
76 }
77
78 HnRenderDelegate* RenderDelegate = static_cast<HnRenderDelegate*>(m_RenderIndex->GetRenderDelegate());
79 IDeviceContext* pCtx = RenderDelegate->GetDeviceContext();
80
81 // Note that HnRenderShadowsTask may be disabled, so we need to transition the shadow map state here
82 if (const HnShadowMapManager* ShadowMapMgr = RenderDelegate->GetShadowMapManager())
83 {
84 const RenderDeviceInfo& DeviceInfo = RenderDelegate->GetDevice()->GetDeviceInfo();
85
86 StateTransitionDesc Barrier{ShadowMapMgr->GetShadowTexture(), RESOURCE_STATE_UNKNOWN,
87 DeviceInfo.IsD3DDevice() ? RESOURCE_STATE_SHADER_RESOURCE : RESOURCE_STATE_DEPTH_READ,
88 STATE_TRANSITION_FLAG_UPDATE_STATE};
89 pCtx->TransitionResourceStates(1, &Barrier);
90 }
91
92 HnRenderPassState* RP_OpaqueSelected = GetRenderPassState(TaskCtx, HnRenderResourceTokens->renderPass_OpaqueSelected);
93 HnRenderPassState* RP_OpaqueUnselected_TransparentAll = GetRenderPassState(TaskCtx, HnRenderResourceTokens->renderPass_OpaqueUnselected_TransparentAll);
94 HnRenderPassState* RP_TransparentSelected = GetRenderPassState(TaskCtx, HnRenderResourceTokens->renderPass_TransparentSelected);
95
96 for (HnRenderPassState* RPState : {RP_OpaqueSelected,
97 RP_OpaqueUnselected_TransparentAll,
98 RP_TransparentSelected})
99 {
100 if (RPState != nullptr)
101 {
102 RPState->SetFrameAttribsSRB(RenderDelegate->GetMainPassFrameAttribsSRB());
103 }
104 }
105
106 if (RP_OpaqueSelected != nullptr)
107 {
108 // Commit render pass now to make sure that all render targets are cleared
109 RP_OpaqueSelected->Commit(pCtx);
110 }
111 else
112 {
113 UNEXPECTED("Opaque Selected render pass state is not set in the task context");
114 }
115}
116
117} // namespace USD
118

Callers

nothing calls this directly

Calls 7

GetDeviceContextMethod · 0.80
GetShadowMapManagerMethod · 0.80
GetShadowTextureMethod · 0.80
SetFrameAttribsSRBMethod · 0.80
GetDeviceMethod · 0.45
CommitMethod · 0.45

Tested by

no test coverage detected