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

Method Prepare

Hydrogent/src/Tasks/HnProcessSelectionTask.cpp:264–301  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

262}
263
264void HnProcessSelectionTask::Prepare(pxr::HdTaskContext* TaskCtx,
265 pxr::HdRenderIndex* RenderIndex)
266{
267 m_RenderIndex = RenderIndex;
268
269 HnRenderDelegate* RenderDelegate = static_cast<HnRenderDelegate*>(m_RenderIndex->GetRenderDelegate());
270 if (!m_ConstantsCB)
271 {
272 CreateUniformBuffer(RenderDelegate->GetDevice(), sizeof(HLSL::ClosestSelectedLocationConstants), "Closest selected location constants", &m_ConstantsCB);
273 VERIFY(m_ConstantsCB, "Failed to create constants CB");
274 }
275
276 if (const HnFrameRenderTargets* Targets = GetFrameRenderTargets(TaskCtx))
277 {
278 PrepareTechniques(Targets->ClosestSelectedLocationRTV[0]->GetDesc().Format);
279 PrepareSRBs(*Targets);
280
281 const pxr::TfToken& FinalTarget = (m_NumJFIterations % 2 == 0) ?
282 HnRenderResourceTokens->closestSelectedLocation0Target :
283 HnRenderResourceTokens->closestSelectedLocation1Target;
284
285 (*TaskCtx)[HnRenderResourceTokens->closestSelectedLocationFinalTarget] = (*TaskCtx)[FinalTarget];
286 }
287 else
288 {
289 UNEXPECTED("Frame render targets are not set in the task context");
290 }
291
292 if (HnRenderParam* pRenderParam = static_cast<HnRenderParam*>(RenderDelegate->GetRenderParam()))
293 {
294 if (pRenderParam->GetSelectedPrimId() != m_SelectedPrimId)
295 {
296 m_SelectedPrimId = pRenderParam->GetSelectedPrimId();
297 // For now, reset TAA when selection changes
298 (*TaskCtx)[HnRenderResourceTokens->taaReset] = pxr::VtValue{true};
299 }
300 }
301}
302
303void HnProcessSelectionTask::Execute(pxr::HdTaskContext* TaskCtx)
304{

Callers

nothing calls this directly

Calls 2

GetRenderParamMethod · 0.80
GetDeviceMethod · 0.45

Tested by

no test coverage detected