This document is for a version of USD that is under development. See this page for the current release.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
HdStMesh Class Referencefinal

A subdivision surface or poly-mesh object. More...

#include <mesh.h>

+ Inheritance diagram for HdStMesh:

Public Member Functions

 HF_MALLOC_TAG_NEW ("new HdStMesh")
 
HDST_API HdStMesh (SdfPath const &id)
 
HDST_API void UpdateRenderTag (HdSceneDelegate *delegate, HdRenderParam *renderParam) override
 
HDST_API void Sync (HdSceneDelegate *delegate, HdRenderParam *renderParam, HdDirtyBits *dirtyBits, TfToken const &reprToken) override
 Pull invalidated scene data and prepare/update the renderable representation.
 
HDST_API void Finalize (HdRenderParam *renderParam) override
 Finalizes object resources.
 
HDST_API HdDirtyBits GetInitialDirtyBitsMask () const override
 Returns the set of dirty bits that should be added to the change tracker for this prim, when this prim is inserted.
 
HDST_API HdMeshTopologySharedPtr GetTopology () const override
 Topology (member) getter.
 
- Public Member Functions inherited from HdMesh
bool IsDoubleSided (HdSceneDelegate *delegate) const
 Render State.
 
HdCullStyle GetCullStyle (HdSceneDelegate *delegate) const
 
VtValue GetShadingStyle (HdSceneDelegate *delegate) const
 
HdMeshTopology GetMeshTopology (HdSceneDelegate *delegate) const
 Topological accessors via the scene delegate.
 
HdDisplayStyle GetDisplayStyle (HdSceneDelegate *delegate) const
 
PxOsdSubdivTags GetSubdivTags (HdSceneDelegate *delegate) const
 
virtual HdMeshTopologySharedPtr GetTopology () const
 Topology getter.
 
VtValue GetPoints (HdSceneDelegate *delegate) const
 Primvars Accessors.
 
VtValue GetNormals (HdSceneDelegate *delegate) const
 
HD_API TfTokenVector const & GetBuiltinPrimvarNames () const override
 Returns the names of built-in primvars, i.e.
 
- Public Member Functions inherited from HdRprim
HD_API HdRprim (SdfPath const &id)
 
HD_API const HdRepr::DrawItemUniquePtrVector & GetDrawItems (TfToken const &reprToken) const
 Returns the draw items for the requested repr token, if any.
 
SdfPath const & GetId () const
 Returns the identifier of this Rprim.
 
int32_t GetPrimId () const
 Return the unique instance id.
 
HD_API void SetPrimId (int32_t primId)
 Set the unique instance id.
 
SdfPath const & GetInstancerId () const
 Returns the identifier of the instancer (if any) for this Rprim.
 
SdfPath const & GetMaterialId () const
 Returns the path of the material to which this Rprim is bound.
 
HD_API void SetMaterialId (SdfPath const &materialId)
 Sets a new material binding to be used by this rprim.
 
HdReprSelector const & GetReprSelector () const
 
TfToken const & GetRenderTag () const
 
TfToken GetRenderTag (HdSceneDelegate *delegate) const
 Returns the render tag associated to this rprim.
 
GfRange3d GetExtent (HdSceneDelegate *delegate) const
 Returns the bounds of the rprim in local, untransformed space.
 
HdPrimvarDescriptorVector GetPrimvarDescriptors (HdSceneDelegate *delegate, HdInterpolation interpolation) const
 Primvar Query.
 
VtValue GetPrimvar (HdSceneDelegate *delegate, const TfToken &name) const
 
VtValue GetIndexedPrimvar (HdSceneDelegate *delegate, const TfToken &name, VtIntArray *indices) const
 
HD_API VtMatrix4dArray GetInstancerTransforms (HdSceneDelegate *delegate)
 
HD_API bool IsDirty (HdChangeTracker &changeTracker) const
 Returns true if any dirty flags are set for this rprim.
 
bool IsVisible () const
 Is the prim itself visible.
 
HD_API void UpdateReprSelector (HdSceneDelegate *delegate, HdDirtyBits *dirtyBits)
 
HD_API bool CanSkipDirtyBitPropagationAndSync (HdDirtyBits bits) const
 This function gives an Rprim the chance to "early exit" from dirty bit propagation, delegate sync and rprim sync altogether.
 
HD_API HdDirtyBits PropagateRprimDirtyBits (HdDirtyBits bits)
 This function gives an Rprim the chance to set additional dirty bits based on those set in the change tracker, before passing the dirty bits to the scene delegate.
 
HD_API void InitRepr (HdSceneDelegate *delegate, TfToken const &reprToken, HdDirtyBits *dirtyBits)
 Initialize the representation of this Rprim by calling _InitRepr.
 

Static Public Member Functions

static HDST_API bool IsEnabledPackedNormals ()
 Returns whether packed (10_10_10 bits) normals to be used.
 
- Static Public Member Functions inherited from HdMesh
static HD_API void ConfigureRepr (TfToken const &reprName, HdMeshReprDesc desc1, HdMeshReprDesc desc2=HdMeshReprDesc())
 Configure the geometric style of the mesh for a given representation.
 

Protected Member Functions

HDST_API void _InitRepr (TfToken const &reprToken, HdDirtyBits *dirtyBits) override
 Initialize the given representation of this Rprim.
 
HDST_API HdDirtyBits _PropagateDirtyBits (HdDirtyBits bits) const override
 This callback from Rprim gives the prim an opportunity to set additional dirty bits based on those already set.
 
void _UpdateRepr (HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam, TfToken const &reprToken, HdDirtyBits *dirtyBitsState)
 
HdBufferArrayRangeSharedPtr _GetSharedPrimvarRange (uint64_t primvarId, HdBufferSpecVector const &updatedOrAddedSpecs, HdBufferSpecVector const &removedSpecs, HdBufferArrayRangeSharedPtr const &curRange, bool *isFirstInstance, HdStResourceRegistrySharedPtr const &resourceRegistry) const
 
bool _MaterialHasPtex (const HdRenderIndex &renderIndex, const SdfPath &materialId) const
 
bool _UseQuadIndices (const HdRenderIndex &renderIndex, const HdSt_MeshTopologySharedPtr &topology) const
 
bool _MaterialHasLimitSurface (const HdRenderIndex &renderIndex, const SdfPath &materialId) const
 
bool _UseLimitRefinement (const HdRenderIndex &renderIndex, const HdMeshTopology &topology) const
 
bool _UseSmoothNormals (HdSt_MeshTopologySharedPtr const &topology) const
 
bool _UseFlatNormals (const HdMeshReprDesc &desc) const
 
void _UpdateDrawItem (HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam, HdStDrawItem *drawItem, HdDirtyBits *dirtyBits, const TfToken &reprToken, const HdReprSharedPtr &repr, const HdMeshReprDesc &desc, bool requireSmoothNormals, bool requireFlatNormals, int geomSubsetDescIndex)
 
void _UpdateDrawItemGeometricShader (HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam, HdStDrawItem *drawItem, const HdMeshReprDesc &desc, const SdfPath &materialId)
 
void _UpdateShadersForAllReprs (HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam, bool updateMaterialNetworkShader, bool updateGeometricShader)
 
void _UpdateMaterialTagsForAllReprs (HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam)
 
void _PopulateTopology (HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam, HdStDrawItem *drawItem, HdDirtyBits *dirtyBits, const TfToken &reprToken, const HdReprSharedPtr &repr, const HdMeshReprDesc &desc, int geomSubsetDescIndex)
 
void _UpdateDrawItemsForGeomSubsets (HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam, HdStDrawItem *drawItem, const TfToken &reprToken, const HdReprSharedPtr &repr, const HdGeomSubsets &geomSubsets, size_t oldNumGeomSubsets)
 
void _CreateTopologyRangeForGeomSubset (HdStResourceRegistrySharedPtr resourceRegistry, HdChangeTracker &changeTracker, HdRenderParam *renderParam, HdStDrawItem *drawItem, const TfToken &indexToken, HdBufferSourceSharedPtr indicesSource, HdBufferSourceSharedPtr fvarIndicesSource, HdBufferSourceSharedPtr geomSubsetFaceIndicesHelperSource, const VtIntArray &faceIndices, bool refined)
 
void _GatherFaceVaryingTopologies (HdSceneDelegate *sceneDelegate, const HdReprSharedPtr &repr, const HdMeshReprDesc &desc, HdStDrawItem *drawItem, int geomSubsetDescIndex, HdDirtyBits *dirtyBits, const SdfPath &id, HdSt_MeshTopologySharedPtr topology)
 
void _PopulateAdjacency (HdStResourceRegistrySharedPtr const &resourceRegistry)
 
void _PopulateVertexPrimvars (HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam, const HdReprSharedPtr &repr, const HdMeshReprDesc &desc, HdStDrawItem *drawItem, int geomSubsetDescIndex, HdDirtyBits *dirtyBits, bool requireSmoothNormals)
 
void _PopulateFaceVaryingPrimvars (HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam, const HdReprSharedPtr &repr, const HdMeshReprDesc &desc, HdStDrawItem *drawItem, int geomSubsetDescIndex, HdDirtyBits *dirtyBits)
 
void _PopulateElementPrimvars (HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam, const HdReprSharedPtr &repr, const HdMeshReprDesc &desc, HdStDrawItem *drawItem, int geomSubsetDescIndex, HdDirtyBits *dirtyBits, bool requireFlatNormals)
 
int _GetRefineLevelForDesc (const HdMeshReprDesc &desc) const
 
- Protected Member Functions inherited from HdMesh
HD_API HdMesh (SdfPath const &id)
 Constructor.
 
- Protected Member Functions inherited from HdRprim
HD_API HdReprSharedPtr const & _GetRepr (TfToken const &reprToken) const
 
HD_API void _UpdateVisibility (HdSceneDelegate *sceneDelegate, HdDirtyBits *dirtyBits)
 
HD_API void _UpdateInstancer (HdSceneDelegate *sceneDelegate, HdDirtyBits *dirtyBits)
 

Additional Inherited Members

- Protected Types inherited from HdMesh
using _MeshReprConfig = _ReprDescConfigs< HdMeshReprDesc, 2 >
 
- Protected Types inherited from HdRprim
using _ReprVector = std::vector< std::pair< TfToken, HdReprSharedPtr > >
 
- Static Protected Member Functions inherited from HdMesh
static HD_API _MeshReprConfig::DescArray _GetReprDesc (TfToken const &reprName)
 
- Protected Attributes inherited from HdRprim
HdRprimSharedData _sharedData
 
HdReprSelector _authoredReprSelector
 
TfToken _renderTag
 
_ReprVector _reprs
 

Detailed Description

A subdivision surface or poly-mesh object.

Definition at line 39 of file mesh.h.

Member Function Documentation

◆ _InitRepr()

HDST_API void _InitRepr ( TfToken const &  reprToken,
HdDirtyBits *  dirtyBits 
)
overrideprotectedvirtual

Initialize the given representation of this Rprim.

This is called prior to syncing the prim, the first time the repr is used.

reprToken is the name of the representation to initalize.

dirtyBits is an in/out value. It is initialized to the dirty bits from the change tracker. InitRepr can then set additional dirty bits if additional data is required from the scene delegate when this repr is synced. InitRepr occurs before dirty bit propagation.

See HdRprim::InitRepr()

Implements HdRprim.

◆ _PropagateDirtyBits()

HDST_API HdDirtyBits _PropagateDirtyBits ( HdDirtyBits  bits) const
overrideprotectedvirtual

This callback from Rprim gives the prim an opportunity to set additional dirty bits based on those already set.

This is done before the dirty bits are passed to the scene delegate, so can be used to communicate that extra information is needed by the prim to process the changes.

The return value is the new set of dirty bits, which replaces the bits passed in.

See HdRprim::PropagateRprimDirtyBits()

Implements HdRprim.

◆ Finalize()

HDST_API void Finalize ( HdRenderParam renderParam)
overridevirtual

Finalizes object resources.

This function might not delete resources, but it should deal with resource ownership so that the rprim is deletable.

Reimplemented from HdRprim.

◆ GetInitialDirtyBitsMask()

HDST_API HdDirtyBits GetInitialDirtyBitsMask ( ) const
overridevirtual

Returns the set of dirty bits that should be added to the change tracker for this prim, when this prim is inserted.

Implements HdRprim.

◆ GetTopology()

HDST_API HdMeshTopologySharedPtr GetTopology ( ) const
overridevirtual

Topology (member) getter.

Reimplemented from HdMesh.

◆ IsEnabledPackedNormals()

static HDST_API bool IsEnabledPackedNormals ( )
static

Returns whether packed (10_10_10 bits) normals to be used.

◆ Sync()

HDST_API void Sync ( HdSceneDelegate delegate,
HdRenderParam renderParam,
HdDirtyBits *  dirtyBits,
TfToken const &  reprToken 
)
overridevirtual

Pull invalidated scene data and prepare/update the renderable representation.

This function is told which scene data to pull through the dirtyBits parameter. The first time it's called, dirtyBits comes from _GetInitialDirtyBits(), which provides initial dirty state, but after that it's driven by invalidation tracking in the scene delegate.

The contract for this function is that the prim can only pull on scene delegate buffers that are marked dirty. Scene delegates can and do implement just-in-time data schemes that mean that pulling on clean data will be at best incorrect, and at worst a crash.

This function is called in parallel from worker threads, so it needs to be threadsafe; calls into HdSceneDelegate are ok.

Parameters
sceneDelegateThe data source for this geometry item.
renderParamA render delegate object that holds rendering parameters that scene geometry may use.
dirtyBitsA specifier for which scene data has changed.
reprTokenThe representation that needs to be updated. This is useful for backends that support multiple display representations for an rprim. A given representation may choose to pull on a subset of the dirty state.
dirtyBitsOn input specifies which state is dirty and can be pulled from the scene delegate. On output specifies which bits are still dirty and were not cleaned by the sync.

Implements HdRprim.

◆ UpdateRenderTag()

HDST_API void UpdateRenderTag ( HdSceneDelegate delegate,
HdRenderParam renderParam 
)
overridevirtual

Reimplemented from HdRprim.


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