/*virtual*/ VtValue UsdImagingCubeAdapter::GetPoints(UsdPrim const& prim, SdfPath const& cachePath, UsdTimeCode time) const { TF_UNUSED(cachePath); return GetMeshPoints(prim, time); }
/* virtual */ void HdxLight::Sync(HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam, HdDirtyBits *dirtyBits) { HD_TRACE_FUNCTION(); HF_MALLOC_TAG_FUNCTION(); TF_UNUSED(renderParam); SdfPath const &id = GetID(); if (!TF_VERIFY(sceneDelegate != nullptr)) { return; } // HdxLight communicates to the scene graph and caches all interesting // values within this class. // later on Get() is called from TaskState (RenderPass) to perform // aggregation/pre-computation, in order to make the shader execution // efficient. HdDirtyBits bits = *dirtyBits; // Change tracking // Transform if (bits & DirtyTransform) { VtValue transform = sceneDelegate->Get(id, HdxLightTokens->transform); if (transform.IsHolding<GfMatrix4d>()) { _params[HdxLightTokens->transform] = transform; } else { _params[HdxLightTokens->transform] = GfMatrix4d(1); } } // Lighting Params if (bits & DirtyParams) { _params[HdxLightTokens->params] = sceneDelegate->Get(id, HdxLightTokens->params); } // Shadow Params if (bits & DirtyShadowParams) { _params[HdxLightTokens->shadowParams] = sceneDelegate->Get(id, HdxLightTokens->shadowParams); } // Shadow Collection if (bits & DirtyCollection) { VtValue vtShadowCollection = sceneDelegate->Get(id, HdxLightTokens->shadowCollection); // Optional if (vtShadowCollection.IsHolding<HdRprimCollection>()) { HdRprimCollection newCollection = vtShadowCollection.UncheckedGet<HdRprimCollection>(); if (_params[HdxLightTokens->shadowCollection] != newCollection) { _params[HdxLightTokens->shadowCollection] = newCollection; HdChangeTracker& changeTracker = sceneDelegate->GetRenderIndex().GetChangeTracker(); changeTracker.MarkCollectionDirty(newCollection.GetName()); } } else { _params[HdxLightTokens->shadowCollection] = HdRprimCollection(); } } *dirtyBits = Clean; }
/* virtual */ void HdStLight::Sync(HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam, HdDirtyBits *dirtyBits) { HD_TRACE_FUNCTION(); HF_MALLOC_TAG_FUNCTION(); TF_UNUSED(renderParam); SdfPath const &id = GetId(); if (!TF_VERIFY(sceneDelegate != nullptr)) { return; } // HdStLight communicates to the scene graph and caches all interesting // values within this class. Later on Get() is called from // TaskState (RenderPass) to perform aggregation/pre-computation, // in order to make the shader execution efficient. // Change tracking HdDirtyBits bits = *dirtyBits; // Transform if (bits & DirtyTransform) { VtValue transform = sceneDelegate->Get(id, HdLightTokens->transform); if (transform.IsHolding<GfMatrix4d>()) { _params[HdLightTokens->transform] = transform; } else { _params[HdLightTokens->transform] = GfMatrix4d(1); } } // Lighting Params if (bits & DirtyParams) { // If it is an area light we will extract the parameters and convert // them to a gl friendly representation. if (_lightType == HdPrimTypeTokens->simpleLight) { _params[HdLightTokens->params] = sceneDelegate->Get(id, HdLightTokens->params); } else { _params[HdLightTokens->params] = _ApproximateAreaLight(id, sceneDelegate); } } // Shadow Params if (bits & DirtyShadowParams) { _params[HdLightTokens->shadowParams] = sceneDelegate->Get(id, HdLightTokens->shadowParams); } // Shadow Collection if (bits & DirtyCollection) { VtValue vtShadowCollection = sceneDelegate->Get(id, HdLightTokens->shadowCollection); // Optional if (vtShadowCollection.IsHolding<HdRprimCollection>()) { HdRprimCollection newCollection = vtShadowCollection.UncheckedGet<HdRprimCollection>(); if (_params[HdLightTokens->shadowCollection] != newCollection) { _params[HdLightTokens->shadowCollection] = newCollection; HdChangeTracker& changeTracker = sceneDelegate->GetRenderIndex().GetChangeTracker(); changeTracker.MarkCollectionDirty(newCollection.GetName()); } } else { _params[HdLightTokens->shadowCollection] = HdRprimCollection(); } } *dirtyBits = Clean; }