HDK
|
#include <rprim.h>
Classes | |
struct | _ReprComparator |
struct | _ReprDescConfigs |
Public Member Functions | |
HD_API | HdRprim (SdfPath const &id) |
virtual HD_API | ~HdRprim () |
Rprim Hydra Engine API : Execute Phase | |
HD_API const HdRepr::DrawItemUniquePtrVector & | GetDrawItems (TfToken const &reprToken) const |
Rprim Hydra Engine API : Cleanup | |
virtual HD_API void | Finalize (HdRenderParam *renderParam) |
Rprim Data API | |
SdfPath const & | GetId () const |
int32_t | GetPrimId () const |
Return the unique instance id. More... | |
HD_API void | SetPrimId (int32_t primId) |
Set the unique instance id. More... | |
SdfPath const & | GetInstancerId () const |
SdfPath const & | GetMaterialId () const |
HD_API void | SetMaterialId (SdfPath const &materialId) |
Sets a new material binding to be used by this rprim. More... | |
HdReprSelector const & | GetReprSelector () const |
TfToken const & | GetRenderTag () const |
TfToken | GetRenderTag (HdSceneDelegate *delegate) const |
Returns the render tag associated to this rprim. More... | |
GfRange3d | GetExtent (HdSceneDelegate *delegate) const |
Returns the bounds of the rprim in local, untransformed space. More... | |
HdPrimvarDescriptorVector | GetPrimvarDescriptors (HdSceneDelegate *delegate, HdInterpolation interpolation) const |
Primvar Query. More... | |
virtual HD_API TfTokenVector const & | GetBuiltinPrimvarNames () const =0 |
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. More... | |
bool | IsVisible () const |
Is the prim itself visible. More... | |
HD_API void | UpdateReprSelector (HdSceneDelegate *delegate, HdDirtyBits *dirtyBits) |
virtual HD_API void | UpdateRenderTag (HdSceneDelegate *delegate, HdRenderParam *renderParam) |
Rprim Hydra Engine API : Pre-Sync & Sync-Phase | |
virtual HdDirtyBits | GetInitialDirtyBitsMask () const =0 |
HD_API bool | CanSkipDirtyBitPropagationAndSync (HdDirtyBits bits) const |
HD_API HdDirtyBits | PropagateRprimDirtyBits (HdDirtyBits bits) |
HD_API void | InitRepr (HdSceneDelegate *delegate, TfToken const &reprToken, HdDirtyBits *dirtyBits) |
virtual void | Sync (HdSceneDelegate *delegate, HdRenderParam *renderParam, HdDirtyBits *dirtyBits, TfToken const &reprToken)=0 |
virtual HdDirtyBits | _PropagateDirtyBits (HdDirtyBits bits) const =0 |
virtual void | _InitRepr (TfToken const &reprToken, HdDirtyBits *dirtyBits)=0 |
Rprim Shared API | |
using | _ReprVector = std::vector< std::pair< TfToken, HdReprSharedPtr >> |
HdRprimSharedData | _sharedData |
HdReprSelector | _authoredReprSelector |
TfToken | _renderTag |
_ReprVector | _reprs |
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) |
The render engine state for a given rprim from the scene graph. All data access (aside from local caches) is delegated to the HdSceneDelegate.
|
protected |
|
virtual |
|
protected |
|
protectedpure virtual |
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.
Implemented in HdStBasisCurves, HdStMesh, HdStVolume, and HdStPoints.
|
protectedpure virtual |
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()
Implemented in HdStBasisCurves, HdStMesh, HdStVolume, and HdStPoints.
|
protected |
|
protected |
HD_API bool HdRprim::CanSkipDirtyBitPropagationAndSync | ( | HdDirtyBits | bits | ) | const |
This function gives an Rprim the chance to "early exit" from dirty bit propagation, delegate sync and rprim sync altogether. It is a temporary measure to prevent unnecessary work, like in the case of invisible prims. The dirty bits in the change tracker remain the same. See the implementation for the finer details.
|
virtual |
Finalizes object resources. This function might not delete resources, but it should deal with resource ownership so that the rprim is deletable.
Reimplemented in HdStBasisCurves, HdStMesh, HdStPoints, and HdStVolume.
|
pure virtual |
Returns the names of built-in primvars, i.e. primvars that are part of the core geometric schema for this prim.
Implemented in HdMesh, HdStBasisCurves, HdBasisCurves, HdPoints, and HdVolume.
HD_API const HdRepr::DrawItemUniquePtrVector& HdRprim::GetDrawItems | ( | TfToken const & | reprToken | ) | const |
Returns the draw items for the requested repr token, if any. These draw items should be constructed and cached beforehand by Sync(). If no draw items exist, or reprToken cannot be found, nullptr will be returned.
|
inline |
|
inline |
|
inline |
|
pure virtual |
Returns the set of dirty bits that should be added to the change tracker for this prim, when this prim is inserted.
Implemented in HdStBasisCurves, HdStMesh, HdStPoints, and HdStVolume.
|
inline |
HD_API VtMatrix4dArray HdRprim::GetInstancerTransforms | ( | HdSceneDelegate * | delegate | ) |
Returns the identifier of this Rprim. This is both used in the RenderIndex and the SceneDelegate and acts as the associative key for the Rprim in both contexts.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
HD_API void HdRprim::InitRepr | ( | HdSceneDelegate * | delegate, |
TfToken const & | reprToken, | ||
HdDirtyBits * | dirtyBits | ||
) |
Initialize the representation of this Rprim by calling _InitRepr. This is called prior to dirty bit propagation & sync, the first time the repr is used, or when the authored representation is dirty.
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.
HD_API bool HdRprim::IsDirty | ( | HdChangeTracker & | changeTracker | ) | const |
Returns true if any dirty flags are set for this rprim.
|
inline |
HD_API HdDirtyBits HdRprim::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. It calls into _PropagateDirtyBits, which gives the Rprim an opportunity to specify the additional data needed to process the requested changes.
The return value is the new set of dirty bits.
Sets a new material binding to be used by this rprim.
|
pure virtual |
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.
sceneDelegate | The data source for this geometry item. |
renderParam | A render delegate object that holds rendering parameters that scene geometry may use. |
dirtyBits | A specifier for which scene data has changed. |
reprToken | The 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. |
dirtyBits | On 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. |
Implemented in HdStBasisCurves, HdStMesh, HdStPoints, and HdStVolume.
|
virtual |
Returns the identifier of this Rprim. This is both used in the RenderIndex and the SceneDelegate and acts as the associative key for the Rprim in both contexts.
Reimplemented in HdStBasisCurves, HdStMesh, HdStPoints, and HdStVolume.
HD_API void HdRprim::UpdateReprSelector | ( | HdSceneDelegate * | delegate, |
HdDirtyBits * | dirtyBits | ||
) |
Returns the identifier of this Rprim. This is both used in the RenderIndex and the SceneDelegate and acts as the associative key for the Rprim in both contexts.
|
protected |
|
protected |
|
protected |