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

Method Sync

Hydrogent/src/Tasks/HnRenderRprimsTask.cpp:52–117  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

50}
51
52void HnRenderRprimsTask::Sync(pxr::HdSceneDelegate* Delegate,
53 pxr::HdTaskContext* TaskCtx,
54 pxr::HdDirtyBits* DirtyBits)
55{
56 VERIFY_EXPR(Delegate != nullptr && TaskCtx != nullptr && DirtyBits != nullptr);
57
58 if (*DirtyBits & pxr::HdChangeTracker::DirtyCollection)
59 {
60 pxr::VtValue CollectionVal = Delegate->Get(GetId(), pxr::HdTokens->collection);
61 pxr::HdRprimCollection Collection = CollectionVal.Get<pxr::HdRprimCollection>();
62
63 if (Collection.GetName().IsEmpty())
64 {
65 m_RenderPass.reset();
66 }
67 else
68 {
69 if (!m_RenderPass)
70 {
71 pxr::HdRenderIndex& Index = Delegate->GetRenderIndex();
72 pxr::HdRenderDelegate* RenderDelegate = Index.GetRenderDelegate();
73
74 m_RenderPass = std::static_pointer_cast<HnRenderPass>(RenderDelegate->CreateRenderPass(&Index, Collection));
75
76 {
77 pxr::VtValue ParamsValue = Delegate->Get(GetId(), HnTokens->renderPassParams);
78 if (ParamsValue.IsHolding<HnRenderPassParams>())
79 {
80 HnRenderPassParams RenderPassParams = ParamsValue.UncheckedGet<HnRenderPassParams>();
81 m_RenderPass->SetParams(RenderPassParams);
82 }
83 else
84 {
85 UNEXPECTED("Unexpected type of render pass parameters ", ParamsValue.GetTypeName());
86 }
87 }
88 // Need to set params for the new render pass.
89 *DirtyBits |= pxr::HdChangeTracker::DirtyParams;
90 }
91 else
92 {
93 m_RenderPass->SetRprimCollection(Collection);
94 }
95 }
96 }
97
98 if (*DirtyBits & pxr::HdChangeTracker::DirtyParams)
99 {
100 HnRenderRprimsTaskParams Params;
101 if (GetTaskParams(Delegate, Params))
102 {
103 }
104 }
105
106 if (*DirtyBits & pxr::HdChangeTracker::DirtyRenderTags)
107 {
108 m_RenderTags = _GetTaskRenderTags(Delegate);
109 }

Callers

nothing calls this directly

Calls 3

CreateRenderPassMethod · 0.80
SetParamsMethod · 0.80
GetMethod · 0.45

Tested by

no test coverage detected