| 305 | } |
| 306 | |
| 307 | void 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"); |
nothing calls this directly
no test coverage detected