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

Method Prepare

Hydrogent/src/Tasks/HnBeginFrameTask.cpp:307–398  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

305}
306
307void HnBeginFrameTask::Prepare(pxr::HdTaskContext* TaskCtx,
308 pxr::HdRenderIndex* RenderIndex)
309{
310 m_RenderIndex = RenderIndex;
311
312 HnRenderDelegate* RenderDelegate = static_cast<HnRenderDelegate*>(RenderIndex->GetRenderDelegate());
313 const USD_Renderer& Renderer = *RenderDelegate->GetUSDRenderer();
314
315 m_CurrFrameTime = m_FrameTimer.GetElapsedTime();
316
317 Uint32 FrameNumber = 0;
318 if (HnRenderParam* pRenderParam = static_cast<HnRenderParam*>(RenderDelegate->GetRenderParam()))
319 {
320 pRenderParam->SetElapsedTime(static_cast<float>(m_CurrFrameTime - pRenderParam->GetFrameTime()));
321 pRenderParam->SetFrameTime(m_CurrFrameTime);
322 pRenderParam->SetFrameNumber(pRenderParam->GetFrameNumber() + 1);
323 FrameNumber = pRenderParam->GetFrameNumber();
324 }
325 else
326 {
327 UNEXPECTED("Render param is null");
328 }
329
330 if (FrameNumber > 1)
331 {
332 std::swap(m_DepthBufferId[0], m_DepthBufferId[1]);
333 }
334
335 (*TaskCtx)[HnRenderResourceTokens->finalColorTarget] = pxr::VtValue{m_Params.FinalColorTargetId};
336
337 (*TaskCtx)[HnRenderResourceTokens->offscreenColorTarget] = pxr::VtValue{m_GBufferTargetIds[HnFrameRenderTargets::GBUFFER_TARGET_SCENE_COLOR]};
338 (*TaskCtx)[HnRenderResourceTokens->meshIdTarget] = pxr::VtValue{m_GBufferTargetIds[HnFrameRenderTargets::GBUFFER_TARGET_MESH_ID]};
339 (*TaskCtx)[HnRenderResourceTokens->normalTarget] = pxr::VtValue{m_GBufferTargetIds[HnFrameRenderTargets::GBUFFER_TARGET_NORMAL]};
340 (*TaskCtx)[HnRenderResourceTokens->motionVectorsTarget] = pxr::VtValue{m_GBufferTargetIds[HnFrameRenderTargets::GBUFFER_TARGET_MOTION_VECTOR]};
341 (*TaskCtx)[HnRenderResourceTokens->baseColorTarget] = pxr::VtValue{m_GBufferTargetIds[HnFrameRenderTargets::GBUFFER_TARGET_BASE_COLOR]};
342 (*TaskCtx)[HnRenderResourceTokens->materialDataTarget] = pxr::VtValue{m_GBufferTargetIds[HnFrameRenderTargets::GBUFFER_TARGET_MATERIAL]};
343 (*TaskCtx)[HnRenderResourceTokens->iblTarget] = pxr::VtValue{m_GBufferTargetIds[HnFrameRenderTargets::GBUFFER_TARGET_IBL]};
344 static_assert(HnFrameRenderTargets::GBUFFER_TARGET_COUNT == 7, "Please initialize all GBuffer targets.");
345
346 (*TaskCtx)[HnRenderResourceTokens->depthBuffer] = pxr::VtValue{m_DepthBufferId[0]};
347 (*TaskCtx)[HnRenderResourceTokens->selectionDepthBuffer] = pxr::VtValue{m_SelectionDepthBufferId};
348 (*TaskCtx)[HnRenderResourceTokens->closestSelectedLocation0Target] = pxr::VtValue{m_ClosestSelLocnTargetId[0]};
349 (*TaskCtx)[HnRenderResourceTokens->closestSelectedLocation1Target] = pxr::VtValue{m_ClosestSelLocnTargetId[1]};
350 (*TaskCtx)[HnRenderResourceTokens->jitteredFinalColorTarget] = pxr::VtValue{m_JitteredFinalColorTargetId};
351 (*TaskCtx)[HnRenderResourceTokens->backgroundDepth] = pxr::VtValue{m_Params.ClearDepth};
352
353 bool ResetTAA = false;
354 if (!m_Params.CameraId.IsEmpty())
355 {
356 m_pCamera = static_cast<const HnCamera*>(m_RenderIndex->GetSprim(pxr::HdPrimTypeTokens->camera, m_Params.CameraId));
357 if (m_pCamera == nullptr)
358 {
359 LOG_ERROR_MESSAGE("Camera is not set at Id ", m_Params.CameraId);
360 }
361 }
362 else
363 {
364 LOG_ERROR_MESSAGE("Camera Id is empty");

Callers

nothing calls this directly

Calls 12

GetUSDRendererMethod · 0.80
GetElapsedTimeMethod · 0.80
GetRenderParamMethod · 0.80
SetElapsedTimeMethod · 0.80
GetFrameTimeMethod · 0.80
SetFrameTimeMethod · 0.80
SetFrameNumberMethod · 0.80
GetFrameNumberMethod · 0.80
GetShadowMapManagerMethod · 0.80
ShadowsEnabledMethod · 0.80
IsVisibleMethod · 0.80
SetFrameAttribsIndexMethod · 0.80

Tested by

no test coverage detected