Loading...
Searching...
No Matches
UsdImagingInstanceAdapter Class Reference

Delegate support for instanced prims. More...

#include <instanceAdapter.h>

+ Inheritance diagram for UsdImagingInstanceAdapter:

Public Types

using BaseAdapter = UsdImagingPrimAdapter
 
- Public Types inherited from UsdImagingPrimAdapter
enum  PopulationMode { RepresentsSelf , RepresentsSelfAndDescendents , RepresentedByAncestor }
 

Public Member Functions

virtual SdfPath Populate (UsdPrim const &prim, UsdImagingIndexProxy *index, UsdImagingInstancerContext const *instancerContext=nullptr) override
 Called to populate the RenderIndex for this UsdPrim.
 
virtual bool ShouldCullChildren () const override
 
virtual bool IsInstancerAdapter () const override
 
Parallel Setup and Resolve
virtual void TrackVariability (UsdPrim const &prim, SdfPath const &cachePath, HdDirtyBits *timeVaryingBits, UsdImagingInstancerContext const *instancerContext=NULL) const override
 For the given prim, variability is detected and stored in timeVaryingBits.
 
virtual void UpdateForTime (UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time, HdDirtyBits requestedBits, UsdImagingInstancerContext const *instancerContext=NULL) const override
 Populates the cache for the given prim, time and requestedBits.
 
Change Processing
virtual HdDirtyBits ProcessPropertyChange (UsdPrim const &prim, SdfPath const &cachePath, TfToken const &propertyName) override
 Returns a bit mask of attributes to be updated, or HdChangeTracker::AllDirty if the entire prim must be resynchronized.
 
virtual void ProcessPrimResync (SdfPath const &cachePath, UsdImagingIndexProxy *index) override
 When a PrimResync event occurs, the prim may have been deleted entirely, adapter plug-ins should override this method to free any per-prim state that was accumulated in the adapter.
 
virtual void ProcessPrimRemoval (SdfPath const &cachePath, UsdImagingIndexProxy *index) override
 Removes all associated Rprims and dependencies from the render index without scheduling them for repopulation.
 
virtual void MarkDirty (UsdPrim const &prim, SdfPath const &cachePath, HdDirtyBits dirty, UsdImagingIndexProxy *index) override
 
virtual void MarkRefineLevelDirty (UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
 
virtual void MarkReprDirty (UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
 
virtual void MarkCullStyleDirty (UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
 
virtual void MarkRenderTagDirty (UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
 
virtual void MarkTransformDirty (UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
 
virtual void MarkVisibilityDirty (UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
 
Instancing
std::vector< VtArray< TfToken > > GetInstanceCategories (UsdPrim const &prim) override
 Return an array of the categories used by each instance.
 
GfMatrix4d GetInstancerTransform (UsdPrim const &instancerPrim, SdfPath const &instancerPath, UsdTimeCode time) const override
 Get the instancer transform for the given prim.
 
SdfPath GetInstancerId (UsdPrim const &usdPrim, SdfPath const &cachePath) const override
 Return the instancerId for this prim.
 
SdfPathVector GetInstancerPrototypes (UsdPrim const &usdPrim, SdfPath const &cachePath) const override
 Return the list of known prototypes of this prim.
 
size_t SampleInstancerTransform (UsdPrim const &instancerPrim, SdfPath const &instancerPath, UsdTimeCode time, size_t maxSampleCount, float *sampleTimes, GfMatrix4d *sampleValues) override
 Sample the instancer transform for the given prim.
 
size_t SampleTransform (UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time, size_t maxNumSamples, float *sampleTimes, GfMatrix4d *sampleValues) override
 Samples the transform for the given prim.
 
size_t SamplePrimvar (UsdPrim const &usdPrim, SdfPath const &cachePath, TfToken const &key, UsdTimeCode time, size_t maxNumSamples, float *sampleTimes, VtValue *sampleValues, VtIntArray *sampleIndices) override
 Sample the primvar for the given prim.
 
TfToken GetPurpose (UsdPrim const &usdPrim, SdfPath const &cachePath, TfToken const &instanceInheritablePurpose) const override
 Returns the purpose token for prim.
 
PxOsdSubdivTags GetSubdivTags (UsdPrim const &usdPrim, SdfPath const &cachePath, UsdTimeCode time) const override
 Get the subdiv tags for this prim.
 
VtValue GetTopology (UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
 Gets the topology object of a specific Usd prim.
 
HdCullStyle GetCullStyle (UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
 Gets the cullstyle of a specific path in the scene graph.
 
GfRange3d GetExtent (UsdPrim const &usdPrim, SdfPath const &cachePath, UsdTimeCode time) const override
 Reads the extent from the given prim.
 
bool GetVisible (UsdPrim const &usdPrim, SdfPath const &cachePath, UsdTimeCode time) const override
 Returns true if the given prim is visible, taking into account inherited visibility values.
 
bool GetDoubleSided (UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
 Reads double-sided from the given prim. If not authored, returns false.
 
GfMatrix4d GetTransform (UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time, bool ignoreRootTransform=false) const override
 Fetches the transform for the given prim at the given time from a pre-computed cache of prim transforms.
 
SdfPath GetMaterialId (UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
 
VtValue GetLightParamValue (const UsdPrim &prim, const SdfPath &cachePath, const TfToken &paramName, UsdTimeCode time) const override
 
VtValue GetMaterialResource (const UsdPrim &prim, const SdfPath &cachePath, UsdTimeCode time) const override
 
HdExtComputationInputDescriptorVector GetExtComputationInputs (UsdPrim const &prim, SdfPath const &cachePath, const UsdImagingInstancerContext *instancerContext) const override
 
HdExtComputationOutputDescriptorVector GetExtComputationOutputs (UsdPrim const &prim, SdfPath const &cachePath, const UsdImagingInstancerContext *instancerContext) const override
 
HdExtComputationPrimvarDescriptorVector GetExtComputationPrimvars (UsdPrim const &prim, SdfPath const &cachePath, HdInterpolation interpolation, const UsdImagingInstancerContext *instancerContext) const override
 
VtValue GetExtComputationInput (UsdPrim const &prim, SdfPath const &cachePath, TfToken const &name, UsdTimeCode time, const UsdImagingInstancerContext *instancerContext) const override
 
std::string GetExtComputationKernel (UsdPrim const &prim, SdfPath const &cachePath, const UsdImagingInstancerContext *instancerContext) const override
 
VtValue GetInstanceIndices (UsdPrim const &instancerPrim, SdfPath const &instancerCachePath, SdfPath const &prototypeCachePath, UsdTimeCode time) const override
 
VtValue Get (UsdPrim const &prim, SdfPath const &cachePath, TfToken const &key, UsdTimeCode time, VtIntArray *outIndices) const override
 Gets the value of the parameter named key for the given prim (which has the given cache path) and given time.
 
Nested instancing support
virtual GfMatrix4d GetRelativeInstancerTransform (SdfPath const &parentInstancerPath, SdfPath const &instancerPath, UsdTimeCode time) const override
 Returns the transform of protoInstancerPath relative to instancerPath.
 
Picking & selection
virtual SdfPath GetScenePrimPath (SdfPath const &cachePath, int instanceIndex, HdInstancerContext *instancerContext) const override
 
virtual SdfPathVector GetScenePrimPaths (SdfPath const &cachePath, std::vector< int > const &instanceIndices, std::vector< HdInstancerContext > *instancerCtxs) const override
 
virtual bool PopulateSelection (HdSelection::HighlightMode const &highlightMode, SdfPath const &cachePath, UsdPrim const &usdPrim, int const hydraInstanceIndex, VtIntArray const &parentInstanceIndices, HdSelectionSharedPtr const &result) const override
 
- Public Member Functions inherited from UsdImagingPrimAdapter
virtual USDIMAGING_API HdDirtyBits ProcessPrimChange (UsdPrim const &prim, SdfPath const &cachePath, TfTokenVector const &changedFields)
 Returns a bit mask of attributes to be updated, or HdChangeTracker::AllDirty if the entire prim must be resynchronized.
 
virtual USDIMAGING_API void MarkMaterialDirty (UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index)
 
virtual USDIMAGING_API void MarkLightParamsDirty (UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index)
 
virtual USDIMAGING_API void MarkWindowPolicyDirty (UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index)
 
virtual USDIMAGING_API void MarkCollectionsDirty (UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index)
 
virtual USDIMAGING_API void InvokeComputation (SdfPath const &cachePath, HdExtComputationContext *context)
 
USDIMAGING_API GfMatrix4d GetRootTransform () const
 The root transform provided by the delegate.
 
USDIMAGING_API void SetDelegate (UsdImagingDelegate *delegate)
 A thread-local XformCache provided by the delegate.
 
USDIMAGING_API bool IsChildPath (SdfPath const &path) const
 
USDIMAGING_API TfToken GetInheritablePurpose (UsdPrim const &prim) const
 Returns the purpose token for prim, but only if it is inheritable by child prims (i.e.
 
USDIMAGING_API SdfPath GetMaterialUsdPath (UsdPrim const &prim) const
 Gets the material path for the given prim, walking up namespace if necessary.
 
USDIMAGING_API TfToken GetModelDrawMode (UsdPrim const &prim)
 Gets the model:drawMode attribute for the given prim, walking up the namespace if necessary.
 
USDIMAGING_API HdModelDrawMode GetFullModelDrawMode (UsdPrim const &prim)
 Gets the model draw mode object for the given prim, walking up the namespace if necessary.
 
USDIMAGING_API VtArray< VtIntArray > GetPerPrototypeIndices (UsdPrim const &prim, UsdTimeCode time) const
 Computes the per-prototype instance indices for a UsdGeomPointInstancer.
 
virtual USDIMAGING_API const TfTokenVectorGetExtComputationSceneInputNames (SdfPath const &cachePath) const
 
virtual USDIMAGING_API size_t SampleExtComputationInput (UsdPrim const &prim, SdfPath const &cachePath, TfToken const &name, UsdTimeCode time, const UsdImagingInstancerContext *instancerContext, size_t maxSampleCount, float *sampleTimes, VtValue *sampleValues)
 
virtual bool IsSupported (UsdImagingIndexProxy const *index) const
 Returns true if the adapter can be populated into the target index.
 
virtual USDIMAGING_API TfTokenVector GetImagingSubprims (UsdPrim const &prim)
 
virtual USDIMAGING_API TfToken GetImagingSubprimType (UsdPrim const &prim, TfToken const &subprim)
 
virtual USDIMAGING_API HdContainerDataSourceHandle GetImagingSubprimData (UsdPrim const &prim, TfToken const &subprim, const UsdImagingDataSourceStageGlobals &stageGlobals)
 
virtual USDIMAGING_API HdDataSourceLocatorSet InvalidateImagingSubprim (UsdPrim const &prim, TfToken const &subprim, TfTokenVector const &properties, UsdImagingPropertyInvalidationType invalidationType)
 
virtual USDIMAGING_API PopulationMode GetPopulationMode ()
 Returns the prim's behavior with regard to population and invalidation.
 
virtual USDIMAGING_API HdDataSourceLocatorSet InvalidateImagingSubprimFromDescendent (UsdPrim const &prim, UsdPrim const &descendentPrim, TfToken const &subprim, TfTokenVector const &properties, UsdImagingPropertyInvalidationType invalidationType)
 This is called (for each result of GetImagingSubprims) when this adapter's GetScope() result is RepresentsSelfAndDescendents and USD properties have changed on a descendent prim whose adapter's GetScope() result is RepresentedByAncestor.
 
virtual USDIMAGING_API bool ShouldIgnoreNativeInstanceSubtrees () const
 
virtual USDIMAGING_API bool CanPopulateUsdInstance () const
 

Volume field information

virtual HdVolumeFieldDescriptorVector GetVolumeFieldDescriptors (UsdPrim const &usdPrim, SdfPath const &id, UsdTimeCode time) const override
 
virtual void _RemovePrim (SdfPath const &cachePath, UsdImagingIndexProxy *index) override final
 

Additional Inherited Members

- Static Public Member Functions inherited from UsdImagingPrimAdapter
static USDIMAGING_API UsdAttribute LookupLightParamAttribute (UsdPrim const &prim, TfToken const &paramName)
 Provides to paramName->UsdAttribute value mappings.
 
static USDIMAGING_API bool ShouldCullSubtree (UsdPrim const &prim)
 
- Protected Types inherited from UsdImagingPrimAdapter
using Keys = UsdImagingPrimvarDescCache::Key
 
- Protected Member Functions inherited from UsdImagingPrimAdapter
template<typename T >
_Get (UsdPrim const &prim, TfToken const &attrToken, UsdTimeCode time) const
 
template<typename T >
void _GetPtr (UsdPrim const &prim, TfToken const &key, UsdTimeCode time, T *out) const
 
USDIMAGING_API UsdImagingPrimvarDescCache_GetPrimvarDescCache () const
 
UsdImaging_NonlinearSampleCountCache * _GetNonlinearSampleCountCache () const
 
UsdImaging_BlurScaleCache * _GetBlurScaleCache () const
 
USDIMAGING_API UsdPrim _GetPrim (SdfPath const &usdPath) const
 
USDIMAGING_API const UsdImagingPrimAdapterSharedPtr & _GetPrimAdapter (UsdPrim const &prim, bool ignoreInstancing=false) const
 
USDIMAGING_API const UsdImagingPrimAdapterSharedPtr & _GetAdapter (TfToken const &adapterKey) const
 
USDIMAGING_API SdfPath _GetPrimPathFromInstancerChain (SdfPathVector const &instancerChain) const
 
USDIMAGING_API UsdTimeCode _GetTimeWithOffset (float offset) const
 
USDIMAGING_API SdfPath _ConvertCachePathToIndexPath (SdfPath const &cachePath) const
 
USDIMAGING_API SdfPath _ConvertIndexPathToCachePath (SdfPath const &indexPath) const
 
USDIMAGING_API TfToken _GetMaterialBindingPurpose () const
 
USDIMAGING_API TfTokenVector _GetMaterialRenderContexts () const
 
USDIMAGING_API TfTokenVector _GetRenderSettingsNamespaces () const
 
USDIMAGING_API bool _GetSceneMaterialsEnabled () const
 Returns whether custom shading of prims is enabled.
 
USDIMAGING_API bool _GetSceneLightsEnabled () const
 Returns whether lights found in the usdscene are enabled.
 
USDIMAGING_API bool _IsPrimvarFilteringNeeded () const
 
USDIMAGING_API TfTokenVector _GetShaderSourceTypes () const
 
USDIMAGING_API bool _IsInInvisedPaths (SdfPath const &usdPath) const
 
USDIMAGING_API bool _IsVarying (UsdPrim prim, TfToken const &attrName, HdDirtyBits dirtyFlag, TfToken const &perfToken, HdDirtyBits *dirtyFlags, bool isInherited, bool *exists=nullptr) const
 
USDIMAGING_API bool _IsTransformVarying (UsdPrim prim, HdDirtyBits dirtyFlag, TfToken const &perfToken, HdDirtyBits *dirtyFlags) const
 
USDIMAGING_API void _MergePrimvar (HdPrimvarDescriptorVector *vec, TfToken const &name, HdInterpolation interp, TfToken const &role=TfToken(), bool indexed=false) const
 
USDIMAGING_API void _RemovePrimvar (HdPrimvarDescriptorVector *vec, TfToken const &name) const
 
USDIMAGING_API void _ComputeAndMergePrimvar (UsdPrim const &prim, UsdGeomPrimvar const &primvar, UsdTimeCode time, HdPrimvarDescriptorVector *primvarDescs, HdInterpolation *interpOverride=nullptr) const
 
USDIMAGING_API HdDirtyBits _ProcessNonPrefixedPrimvarPropertyChange (UsdPrim const &prim, SdfPath const &cachePath, TfToken const &propertyName, TfToken const &primvarName, HdInterpolation const &primvarInterp, HdDirtyBits valueChangeDirtyBit=HdChangeTracker::DirtyPrimvar) const
 
USDIMAGING_API HdDirtyBits _ProcessPrefixedPrimvarPropertyChange (UsdPrim const &prim, SdfPath const &cachePath, TfToken const &propertyName, HdDirtyBits valueChangeDirtyBit=HdChangeTracker::DirtyPrimvar, bool inherited=true) const
 
USDIMAGING_API void _ResyncDependents (SdfPath const &usdPath, UsdImagingIndexProxy *index)
 
USDIMAGING_API UsdImaging_CollectionCache & _GetCollectionCache () const
 
USDIMAGING_API UsdStageRefPtr _GetStage () const
 
USDIMAGING_API UsdImaging_CoordSysBindingStrategy::value_type _GetCoordSysBindings (UsdPrim const &prim) const
 
USDIMAGING_API UsdImaging_InheritedPrimvarStrategy::value_type _GetInheritedPrimvars (UsdPrim const &prim) const
 
USDIMAGING_API UsdGeomPrimvar _GetInheritedPrimvar (UsdPrim const &prim, TfToken const &primvarName) const
 
USDIMAGING_API GfInterval _GetCurrentTimeSamplingInterval ()
 
USDIMAGING_API Usd_PrimFlagsConjunction _GetDisplayPredicate () const
 
USDIMAGING_API Usd_PrimFlagsConjunction _GetDisplayPredicateForPrototypes () const
 
USDIMAGING_API bool _DoesDelegateSupportCoordSys () const
 
- Static Protected Member Functions inherited from UsdImagingPrimAdapter
static USDIMAGING_API bool _HasPrimvarsPrefix (TfToken const &propertyName)
 

Detailed Description

Delegate support for instanced prims.

In addition to prim schemas that support instancing, like the point instancer, USD has a built in instancing feature that will allow prims composed from the same assets, with compatible attributes, to be de-duplicated inside of USD.

When these prims are found during scene load, the prim location is marked as an instance (meaning prim.IsInstance() == true), and its descendants are added to a new hidden scene root. There can be multiple prototype scene roots, and each one can be pointed to by many instance prims, and these prototype sub-scenes can themselves contain instances.

We handle this by sending all instance prims to the instance adapter. In order to preserve USD's native instancing work during rendering, for each prototype scene root, we insert one hydra gprim per prototype USD gprim, and we insert a hydra instancer that computes all of the places these gprims (and any child instancers) are referenced in the scene, adjusting the instancing count accordingly.

The instance adapter is responsible for computing and passing down a small amount of inheritable data that we allow to vary per-instance: for example, transform and visibility state, and inherited constant primvars. Otherwise, prototypes have no knowledge of the instance prims that refer to them.

Just like the scene root, the root of the prototype tree isn't allowed to have attributes or a prim type; those are set on the instance prim instead. This means if a gprim is directly instanced, USD won't actually de-duplicate it. The instance adapter could theoretically bucket such gprims together, but the difficulty of doing so is the same as the difficulty of deduplicating arbitrary prims in the scene. Instead, the instance adapter refuses to image directly-instanced gprims, and the recommended authoring guidelines is to only enable USD instancing on enclosing scopes or xforms.

There's a small set of extremely-special-case prims that are allowed to be directly instanced, including cards and support prims that designate e.g. skinning buffers. These prim adapters opt-in via CanPopulateUsdInstance, and generally require very careful coding and support in the instance adapter; but they are useful for restricted schemas where we know how to vary the data per-instance or know how to efficiently aggregate instances.

Finally, there's a small (hopefully shrinking) set of inherited attributes that we need to respect, but don't know how to vary per-instance; for example, material bindings. If two instances point to the same USD proto root, but have different material bindings, we currently populate two hydra instancers with two sets of hydra prototypes. This cuts into the efficiency of instancing, so we try to minimize it.

Definition at line 91 of file instanceAdapter.h.

Member Typedef Documentation

◆ BaseAdapter

Definition at line 94 of file instanceAdapter.h.

Member Function Documentation

◆ _RemovePrim()

virtual void _RemovePrim ( SdfPath const &  cachePath,
UsdImagingIndexProxy index 
)
finaloverrideprotectedvirtual

Implements UsdImagingPrimAdapter.

◆ Get()

VtValue Get ( UsdPrim const &  prim,
SdfPath const &  cachePath,
TfToken const &  key,
UsdTimeCode  time,
VtIntArray *  outIndices 
) const
overridevirtual

Gets the value of the parameter named key for the given prim (which has the given cache path) and given time.

If outIndices is not nullptr and the value has indices, it will return the unflattened value and set outIndices to the value's associated indices.

Reimplemented from UsdImagingPrimAdapter.

◆ GetCullStyle()

HdCullStyle GetCullStyle ( UsdPrim const &  prim,
SdfPath const &  cachePath,
UsdTimeCode  time 
) const
overridevirtual

Gets the cullstyle of a specific path in the scene graph.

Reimplemented from UsdImagingPrimAdapter.

◆ GetDoubleSided()

bool GetDoubleSided ( UsdPrim const &  prim,
SdfPath const &  cachePath,
UsdTimeCode  time 
) const
overridevirtual

Reads double-sided from the given prim. If not authored, returns false.

Reimplemented from UsdImagingPrimAdapter.

◆ GetExtComputationInput()

VtValue GetExtComputationInput ( UsdPrim const &  prim,
SdfPath const &  cachePath,
TfToken const &  name,
UsdTimeCode  time,
const UsdImagingInstancerContext instancerContext 
) const
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ GetExtComputationInputs()

HdExtComputationInputDescriptorVector GetExtComputationInputs ( UsdPrim const &  prim,
SdfPath const &  cachePath,
const UsdImagingInstancerContext instancerContext 
) const
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ GetExtComputationKernel()

std::string GetExtComputationKernel ( UsdPrim const &  prim,
SdfPath const &  cachePath,
const UsdImagingInstancerContext instancerContext 
) const
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ GetExtComputationOutputs()

HdExtComputationOutputDescriptorVector GetExtComputationOutputs ( UsdPrim const &  prim,
SdfPath const &  cachePath,
const UsdImagingInstancerContext instancerContext 
) const
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ GetExtComputationPrimvars()

HdExtComputationPrimvarDescriptorVector GetExtComputationPrimvars ( UsdPrim const &  prim,
SdfPath const &  cachePath,
HdInterpolation  interpolation,
const UsdImagingInstancerContext instancerContext 
) const
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ GetExtent()

GfRange3d GetExtent ( UsdPrim const &  prim,
SdfPath const &  cachePath,
UsdTimeCode  time 
) const
overridevirtual

Reads the extent from the given prim.

If the extent is not authored, an empty GfRange3d is returned, the extent will not be computed.

Reimplemented from UsdImagingPrimAdapter.

◆ GetInstanceCategories()

std::vector< VtArray< TfToken > > GetInstanceCategories ( UsdPrim const &  prim)
overridevirtual

Return an array of the categories used by each instance.

Reimplemented from UsdImagingPrimAdapter.

◆ GetInstanceIndices()

VtValue GetInstanceIndices ( UsdPrim const &  instancerPrim,
SdfPath const &  instancerCachePath,
SdfPath const &  prototypeCachePath,
UsdTimeCode  time 
) const
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ GetInstancerId()

SdfPath GetInstancerId ( UsdPrim const &  usdPrim,
SdfPath const &  cachePath 
) const
overridevirtual

Return the instancerId for this prim.

Reimplemented from UsdImagingPrimAdapter.

◆ GetInstancerPrototypes()

SdfPathVector GetInstancerPrototypes ( UsdPrim const &  usdPrim,
SdfPath const &  cachePath 
) const
overridevirtual

Return the list of known prototypes of this prim.

Reimplemented from UsdImagingPrimAdapter.

◆ GetInstancerTransform()

GfMatrix4d GetInstancerTransform ( UsdPrim const &  instancerPrim,
SdfPath const &  instancerPath,
UsdTimeCode  time 
) const
overridevirtual

Get the instancer transform for the given prim.

See also
HdSceneDelegate::GetInstancerTransform()

Reimplemented from UsdImagingPrimAdapter.

◆ GetLightParamValue()

VtValue GetLightParamValue ( const UsdPrim prim,
const SdfPath cachePath,
const TfToken paramName,
UsdTimeCode  time 
) const
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ GetMaterialId()

SdfPath GetMaterialId ( UsdPrim const &  prim,
SdfPath const &  cachePath,
UsdTimeCode  time 
) const
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ GetMaterialResource()

VtValue GetMaterialResource ( const UsdPrim prim,
const SdfPath cachePath,
UsdTimeCode  time 
) const
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ GetPurpose()

TfToken GetPurpose ( UsdPrim const &  prim,
SdfPath const &  cachePath,
TfToken const &  instanceInheritablePurpose 
) const
overridevirtual

Returns the purpose token for prim.

If a non-empty instanceInheritablePurpose is specified and the prim doesn't have an explicitly authored or inherited purpose, it may inherit the instancer's purpose if the instance has an explicit purpose.

Reimplemented from UsdImagingPrimAdapter.

◆ GetRelativeInstancerTransform()

virtual GfMatrix4d GetRelativeInstancerTransform ( SdfPath const &  instancerPath,
SdfPath const &  protoInstancerPath,
UsdTimeCode  time 
) const
overridevirtual

Returns the transform of protoInstancerPath relative to instancerPath.

instancerPath must be managed by this adapter.

Reimplemented from UsdImagingPrimAdapter.

◆ GetScenePrimPath()

virtual SdfPath GetScenePrimPath ( SdfPath const &  cachePath,
int  instanceIndex,
HdInstancerContext *  instancerCtx 
) const
overridevirtual
Deprecated:
Call and implement GetScenePrimPaths instead.

Reimplemented from UsdImagingPrimAdapter.

◆ GetScenePrimPaths()

virtual SdfPathVector GetScenePrimPaths ( SdfPath const &  cachePath,
std::vector< int > const &  instanceIndices,
std::vector< HdInstancerContext > *  instancerCtxs 
) const
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ GetSubdivTags()

PxOsdSubdivTags GetSubdivTags ( UsdPrim const &  usdPrim,
SdfPath const &  cachePath,
UsdTimeCode  time 
) const
overridevirtual

Get the subdiv tags for this prim.

Reimplemented from UsdImagingPrimAdapter.

◆ GetTopology()

VtValue GetTopology ( UsdPrim const &  prim,
SdfPath const &  cachePath,
UsdTimeCode  time 
) const
overridevirtual

Gets the topology object of a specific Usd prim.

If the adapter is a mesh it will return an HdMeshTopology, if it is of type basis curves, it will return an HdBasisCurvesTopology. If the adapter does not have a topology, it returns an empty VtValue.

Reimplemented from UsdImagingPrimAdapter.

◆ GetTransform()

GfMatrix4d GetTransform ( UsdPrim const &  prim,
SdfPath const &  cachePath,
UsdTimeCode  time,
bool  ignoreRootTransform = false 
) const
overridevirtual

Fetches the transform for the given prim at the given time from a pre-computed cache of prim transforms.

Requesting transforms at incoherent times is currently inefficient.

Reimplemented from UsdImagingPrimAdapter.

◆ GetVisible()

bool GetVisible ( UsdPrim const &  prim,
SdfPath const &  cachePath,
UsdTimeCode  time 
) const
overridevirtual

Returns true if the given prim is visible, taking into account inherited visibility values.

Inherited values are strongest, Usd has no notion of "super vis/invis".

Reimplemented from UsdImagingPrimAdapter.

◆ GetVolumeFieldDescriptors()

virtual HdVolumeFieldDescriptorVector GetVolumeFieldDescriptors ( UsdPrim const &  usdPrim,
SdfPath const &  id,
UsdTimeCode  time 
) const
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ IsInstancerAdapter()

virtual bool IsInstancerAdapter ( ) const
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ MarkCullStyleDirty()

virtual void MarkCullStyleDirty ( UsdPrim const &  prim,
SdfPath const &  cachePath,
UsdImagingIndexProxy index 
)
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ MarkDirty()

virtual void MarkDirty ( UsdPrim const &  prim,
SdfPath const &  cachePath,
HdDirtyBits  dirty,
UsdImagingIndexProxy index 
)
overridevirtual

Implements UsdImagingPrimAdapter.

◆ MarkRefineLevelDirty()

virtual void MarkRefineLevelDirty ( UsdPrim const &  prim,
SdfPath const &  cachePath,
UsdImagingIndexProxy index 
)
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ MarkRenderTagDirty()

virtual void MarkRenderTagDirty ( UsdPrim const &  prim,
SdfPath const &  cachePath,
UsdImagingIndexProxy index 
)
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ MarkReprDirty()

virtual void MarkReprDirty ( UsdPrim const &  prim,
SdfPath const &  cachePath,
UsdImagingIndexProxy index 
)
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ MarkTransformDirty()

virtual void MarkTransformDirty ( UsdPrim const &  prim,
SdfPath const &  cachePath,
UsdImagingIndexProxy index 
)
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ MarkVisibilityDirty()

virtual void MarkVisibilityDirty ( UsdPrim const &  prim,
SdfPath const &  cachePath,
UsdImagingIndexProxy index 
)
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ Populate()

virtual SdfPath Populate ( UsdPrim const &  prim,
UsdImagingIndexProxy index,
UsdImagingInstancerContext const *  instancerContext = nullptr 
)
overridevirtual

Called to populate the RenderIndex for this UsdPrim.

The adapter is expected to create one or more prims in the render index using the given proxy.

Implements UsdImagingPrimAdapter.

◆ PopulateSelection()

virtual bool PopulateSelection ( HdSelection::HighlightMode const &  highlightMode,
SdfPath const &  cachePath,
UsdPrim const &  usdPrim,
int const  hydraInstanceIndex,
VtIntArray const &  parentInstanceIndices,
HdSelectionSharedPtr const &  result 
) const
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ ProcessPrimRemoval()

virtual void ProcessPrimRemoval ( SdfPath const &  cachePath,
UsdImagingIndexProxy index 
)
overridevirtual

Removes all associated Rprims and dependencies from the render index without scheduling them for repopulation.


Reimplemented from UsdImagingPrimAdapter.

◆ ProcessPrimResync()

virtual void ProcessPrimResync ( SdfPath const &  cachePath,
UsdImagingIndexProxy index 
)
overridevirtual

When a PrimResync event occurs, the prim may have been deleted entirely, adapter plug-ins should override this method to free any per-prim state that was accumulated in the adapter.

Reimplemented from UsdImagingPrimAdapter.

◆ ProcessPropertyChange()

virtual HdDirtyBits ProcessPropertyChange ( UsdPrim const &  prim,
SdfPath const &  cachePath,
TfToken const &  propertyName 
)
overridevirtual

Returns a bit mask of attributes to be updated, or HdChangeTracker::AllDirty if the entire prim must be resynchronized.

Implements UsdImagingPrimAdapter.

◆ SampleInstancerTransform()

size_t SampleInstancerTransform ( UsdPrim const &  instancerPrim,
SdfPath const &  instancerPath,
UsdTimeCode  time,
size_t  maxNumSamples,
float *  sampleTimes,
GfMatrix4d sampleValues 
)
overridevirtual

Sample the instancer transform for the given prim.

See also
HdSceneDelegate::SampleInstancerTransform()

Reimplemented from UsdImagingPrimAdapter.

◆ SamplePrimvar()

size_t SamplePrimvar ( UsdPrim const &  usdPrim,
SdfPath const &  cachePath,
TfToken const &  key,
UsdTimeCode  time,
size_t  maxNumSamples,
float *  sampleTimes,
VtValue sampleValues,
VtIntArray *  sampleIndices 
)
overridevirtual

Sample the primvar for the given prim.

If *sampleIndices is not nullptr and the primvar has indices, it will sample the unflattened primvar and set *sampleIndices to the primvar's sampled indices.

See also
HdSceneDelegate::SamplePrimvar() and HdSceneDelegate::SampleIndexedPrimvar()

Reimplemented from UsdImagingPrimAdapter.

◆ SampleTransform()

size_t SampleTransform ( UsdPrim const &  prim,
SdfPath const &  cachePath,
UsdTimeCode  time,
size_t  maxNumSamples,
float *  sampleTimes,
GfMatrix4d sampleValues 
)
overridevirtual

Samples the transform for the given prim.

Reimplemented from UsdImagingPrimAdapter.

◆ ShouldCullChildren()

virtual bool ShouldCullChildren ( ) const
overridevirtual

Reimplemented from UsdImagingPrimAdapter.

◆ TrackVariability()

virtual void TrackVariability ( UsdPrim const &  prim,
SdfPath const &  cachePath,
HdDirtyBits *  timeVaryingBits,
UsdImagingInstancerContext const *  instancerContext = NULL 
) const
overridevirtual

For the given prim, variability is detected and stored in timeVaryingBits.

Initial values are cached into the value cache.

This method is expected to be called from multiple threads.

Implements UsdImagingPrimAdapter.

◆ UpdateForTime()

virtual void UpdateForTime ( UsdPrim const &  prim,
SdfPath const &  cachePath,
UsdTimeCode  time,
HdDirtyBits  requestedBits,
UsdImagingInstancerContext const *  instancerContext = NULL 
) const
overridevirtual

Populates the cache for the given prim, time and requestedBits.

This method is expected to be called from multiple threads.

Implements UsdImagingPrimAdapter.


The documentation for this class was generated from the following file: