@@ -109,51 +109,6 @@ HnBeginFrameTask::~HnBeginFrameTask()
109109{
110110}
111111
112- static void UpdateRenderPassState (const HnBeginFrameTaskParams& Params,
113- const TEXTURE_FORMAT* RTVFormats,
114- Uint32 NumRTVs,
115- TEXTURE_FORMAT DSVFormat,
116- HnRenderPassState& RPState)
117- {
118- RPState.SetNumRenderTargets (NumRTVs);
119- for (Uint32 i = 0 ; i < NumRTVs; ++i)
120- RPState.SetRenderTargetFormat (i, RTVFormats[i]);
121-
122- RPState.SetDepthStencilFormat (DSVFormat);
123-
124- bool FrontFaceCCW = true ;
125-
126- float DepthBias = 0 ;
127- float SlopeScaledDepthBias = 0 ;
128- pxr::HdCompareFunction DepthFunc = Params.UseReverseDepth ? pxr::HdCmpFuncGreater : pxr::HdCmpFuncLess;
129- bool DepthBiasEnabled = false ;
130- bool DepthTestEnabled = true ;
131- bool DepthClampEnabled = false ;
132-
133- pxr::HdCullStyle CullStyle = pxr::HdCullStyleBack;
134-
135- pxr::HdCompareFunction StencilFunc = pxr::HdCmpFuncAlways;
136- int StencilRef = 0 ;
137- int StencilMask = 0xFF ;
138- pxr::HdStencilOp StencilFailOp = pxr::HdStencilOpKeep;
139- pxr::HdStencilOp StencilZFailOp = pxr::HdStencilOpKeep;
140- pxr::HdStencilOp StencilZPassOp = pxr::HdStencilOpKeep;
141- bool StencilEnabled = false ;
142-
143- RPState.SetDepthFunc (DepthFunc);
144- RPState.SetDepthBias (DepthBias, SlopeScaledDepthBias);
145- RPState.SetDepthBiasEnabled (DepthBiasEnabled);
146- RPState.SetEnableDepthTest (DepthTestEnabled);
147- RPState.SetEnableDepthClamp (DepthClampEnabled);
148-
149- RPState.SetCullStyle (CullStyle);
150-
151- RPState.SetStencilEnabled (StencilEnabled);
152- RPState.SetStencil (StencilFunc, StencilRef, StencilMask, StencilFailOp, StencilZFailOp, StencilZPassOp);
153-
154- RPState.SetFrontFaceCCW (FrontFaceCCW);
155- }
156-
157112static TEXTURE_FORMAT GetFallbackTextureFormat (TEXTURE_FORMAT Format)
158113{
159114 switch (Format)
@@ -173,30 +128,29 @@ void HnBeginFrameTask::Sync(pxr::HdSceneDelegate* Delegate,
173128 {
174129 if (GetTaskParams (Delegate, m_Params))
175130 {
176- UpdateRenderPassState (m_Params,
177- m_Params.Formats .GBuffer .data (),
178- m_Params.Formats .GBuffer .size (),
179- m_Params.Formats .Depth ,
180- m_RenderPassStates[HnRenderResourceTokens->renderPass_OpaqueSelected ]);
181-
182- UpdateRenderPassState (m_Params,
183- m_Params.Formats .GBuffer .data (),
184- m_Params.Formats .GBuffer .size (),
185- m_Params.Formats .Depth ,
186- m_RenderPassStates[HnRenderResourceTokens->renderPass_OpaqueUnselected_TransparentAll ]);
187-
188- UpdateRenderPassState (m_Params,
189- nullptr ,
190- 0 ,
191- m_Params.Formats .Depth ,
192- m_RenderPassStates[HnRenderResourceTokens->renderPass_TransparentSelected ]);
131+ for (const pxr::TfToken& PassName : {HnRenderResourceTokens->renderPass_OpaqueSelected ,
132+ HnRenderResourceTokens->renderPass_OpaqueUnselected ,
133+ HnRenderResourceTokens->renderPass_TransparentAll })
134+ {
135+ m_RenderPassStates[PassName].Init (
136+ m_Params.Formats .GBuffer .data (),
137+ m_Params.Formats .GBuffer .size (),
138+ m_Params.Formats .Depth ,
139+ m_Params.UseReverseDepth );
140+ }
141+
142+ m_RenderPassStates[HnRenderResourceTokens->renderPass_TransparentSelected ].Init (
143+ nullptr ,
144+ 0 ,
145+ m_Params.Formats .Depth ,
146+ m_Params.UseReverseDepth );
193147
194148 const TEXTURE_FORMAT OITRTVFormats[] = {USD_Renderer::OITTailFmt};
195- UpdateRenderPassState (m_Params,
196- OITRTVFormats,
197- _countof (OITRTVFormats),
198- m_Params.Formats .Depth ,
199- m_RenderPassStates[HnRenderResourceTokens-> renderPass_OITLayers ] );
149+ m_RenderPassStates[HnRenderResourceTokens-> renderPass_OITLayers ]. Init (
150+ OITRTVFormats,
151+ _countof (OITRTVFormats),
152+ m_Params.Formats .Depth ,
153+ m_Params. UseReverseDepth );
200154
201155 (*TaskCtx)[HnRenderResourceTokens->suspendSuperSampling ] = pxr::VtValue{true };
202156 }
@@ -330,19 +284,24 @@ void HnBeginFrameTask::PrepareRenderTargets(pxr::HdRenderIndex* RenderIndex,
330284 float4{0 };
331285 }
332286
333- HnRenderPassState& RP_OpaqueSelected = m_RenderPassStates[HnRenderResourceTokens->renderPass_OpaqueSelected ];
334- HnRenderPassState& RP_OpaqueUnselected_TransparentAll = m_RenderPassStates[HnRenderResourceTokens->renderPass_OpaqueUnselected_TransparentAll ];
335- HnRenderPassState& RP_TransparentSelected = m_RenderPassStates[HnRenderResourceTokens->renderPass_TransparentSelected ];
287+ HnRenderPassState& RP_OpaqueSelected = m_RenderPassStates[HnRenderResourceTokens->renderPass_OpaqueSelected ];
288+ HnRenderPassState& RP_OpaqueUnselected = m_RenderPassStates[HnRenderResourceTokens->renderPass_OpaqueUnselected ];
289+ HnRenderPassState& RP_TransparentAll = m_RenderPassStates[HnRenderResourceTokens->renderPass_TransparentAll ];
290+ HnRenderPassState& RP_TransparentSelected = m_RenderPassStates[HnRenderResourceTokens->renderPass_TransparentSelected ];
336291
337292 const float DepthClearValue = m_Params.UseReverseDepth ? 0 .f : 1 .f ;
338293
339294 // We first render selected objects using the selection depth buffer.
340295 // Selection depth buffer is copied to the main depth buffer by the HnCopySelectionDepthTask.
341296 RP_OpaqueSelected.Begin (HnFrameRenderTargets::GBUFFER_TARGET_COUNT, m_FrameRenderTargets.GBufferRTVs .data (), m_FrameRenderTargets.SelectionDepthDSV , ClearValues.data (), DepthClearValue, ~0u );
342- RP_OpaqueUnselected_TransparentAll.Begin (HnFrameRenderTargets::GBUFFER_TARGET_COUNT, m_FrameRenderTargets.GBufferRTVs .data (), m_FrameRenderTargets.DepthDSV );
297+ RP_OpaqueUnselected.Begin (HnFrameRenderTargets::GBUFFER_TARGET_COUNT, m_FrameRenderTargets.GBufferRTVs .data (), m_FrameRenderTargets.DepthDSV );
298+ RP_TransparentAll.Begin (HnFrameRenderTargets::GBUFFER_TARGET_COUNT, m_FrameRenderTargets.GBufferRTVs .data (), m_FrameRenderTargets.DepthDSV );
343299 RP_TransparentSelected.Begin (0 , nullptr , m_FrameRenderTargets.SelectionDepthDSV );
344300
345- for (HnRenderPassState* RPState : {&RP_OpaqueSelected, &RP_OpaqueUnselected_TransparentAll, &RP_TransparentSelected})
301+ for (HnRenderPassState* RPState : {&RP_OpaqueSelected,
302+ &RP_OpaqueUnselected,
303+ &RP_TransparentAll,
304+ &RP_TransparentSelected})
346305 {
347306 RPState->SetCamera (m_pCamera);
348307 }
@@ -774,7 +733,7 @@ void HnBeginFrameTask::BindOITResources(HnRenderDelegate* RenderDelegate)
774733 }
775734
776735 USD_Renderer& Renderer = *RenderDelegate->GetUSDRenderer ();
777- if (IShaderResourceBinding* pFrameAttribsSRB = RenderDelegate->GetMainPassFrameAttribsSRB ( ))
736+ if (IShaderResourceBinding* pFrameAttribsSRB = RenderDelegate->GetFrameAttribsSRB (HnRenderDelegate::FrameAttribsSRBType::Transparent ))
778737 {
779738 Renderer.SetOITResources (pFrameAttribsSRB, m_FrameRenderTargets.OIT );
780739 m_BoundOITResourcesVersion = RenderParam->GetAttribVersion (HnRenderParam::GlobalAttrib::OITResources);
0 commit comments