| 68 | } |
| 69 | |
| 70 | void 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 |
nothing calls this directly
no test coverage detected