void UsdImagingCubeAdapter::UpdateForTime(UsdPrim const& prim, SdfPath const& cachePath, UsdTimeCode time, HdDirtyBits requestedBits, UsdImagingInstancerContext const* instancerContext) const { BaseAdapter::UpdateForTime( prim, cachePath, time, requestedBits, instancerContext); UsdImagingValueCache* valueCache = _GetValueCache(); if (requestedBits & HdChangeTracker::DirtyTransform) { // Update the transform with the size authored for the cube. GfMatrix4d& ctm = valueCache->GetTransform(cachePath); GfMatrix4d xf = GetMeshTransform(prim, time); ctm = xf * ctm; } if (requestedBits & HdChangeTracker::DirtyTopology) { valueCache->GetTopology(cachePath) = GetMeshTopology(); } if (_IsRefined(cachePath)) { if (requestedBits & HdChangeTracker::DirtySubdivTags) { valueCache->GetSubdivTags(cachePath); } } }
void UsdImagingGprimAdapter::UpdateForTimePrep(UsdPrim const& prim, SdfPath const& cachePath, UsdTimeCode time, int requestedBits, UsdImagingInstancerContext const* instancerContext) { UsdImagingValueCache* valueCache = _GetValueCache(); // Prepopulate cache entries to avoid mutation during multi-threaded data // fetch. if (requestedBits & HdChangeTracker::DirtyPrimVar) valueCache->GetColor(cachePath); if (requestedBits & HdChangeTracker::DirtyDoubleSided) valueCache->GetDoubleSided(cachePath); if (requestedBits & HdChangeTracker::DirtyTransform) valueCache->GetTransform(cachePath); if (requestedBits & HdChangeTracker::DirtyExtent) valueCache->GetExtent(cachePath); if (requestedBits & HdChangeTracker::DirtyVisibility) valueCache->GetVisible(cachePath); if (requestedBits & HdChangeTracker::DirtySurfaceShader) valueCache->GetSurfaceShader(cachePath); valueCache->GetPrimvars(cachePath); }
void UsdImagingCubeAdapter::UpdateForTime(UsdPrim const& prim, SdfPath const& cachePath, UsdTimeCode time, HdDirtyBits requestedBits, HdDirtyBits* resultBits, UsdImagingInstancerContext const* instancerContext) { BaseAdapter::UpdateForTime( prim, cachePath, time, requestedBits, resultBits, instancerContext); UsdImagingValueCache* valueCache = _GetValueCache(); if (requestedBits & HdChangeTracker::DirtyTransform) { // Update the transform with the size authored for the cube. GfMatrix4d& ctm = valueCache->GetTransform(cachePath); GfMatrix4d xf = GetMeshTransform(prim, time); ctm = xf * ctm; } if (requestedBits & HdChangeTracker::DirtyTopology) { valueCache->GetTopology(cachePath) = GetMeshTopology(); } if (requestedBits & HdChangeTracker::DirtyPoints) { valueCache->GetPoints(cachePath)= GetMeshPoints(prim, time); // Expose points as a primvar. UsdImagingValueCache::PrimvarInfo primvar; primvar.name = HdTokens->points; primvar.interpolation = UsdGeomTokens->vertex; PrimvarInfoVector& primvars = valueCache->GetPrimvars(cachePath); _MergePrimvar(primvar, &primvars); } }