HDK
|
#include <changeTracker.h>
Public Types | |
enum | RprimDirtyBits : HdDirtyBits { Clean = 0, InitRepr = 1 << 0, Varying = 1 << 1, AllDirty = ~Varying, DirtyPrimID = 1 << 2, DirtyExtent = 1 << 3, DirtyDisplayStyle = 1 << 4, DirtyPoints = 1 << 5, DirtyPrimvar = 1 << 6, DirtyMaterialId = 1 << 7, DirtyTopology = 1 << 8, DirtyTransform = 1 << 9, DirtyVisibility = 1 << 10, DirtyNormals = 1 << 11, DirtyDoubleSided = 1 << 12, DirtyCullStyle = 1 << 13, DirtySubdivTags = 1 << 14, DirtyWidths = 1 << 15, DirtyInstancer = 1 << 16, DirtyInstanceIndex = 1 << 17, DirtyRepr = 1 << 18, DirtyRenderTag = 1 << 19, DirtyComputationPrimvarDesc = 1 << 20, DirtyCategories = 1 << 21, DirtyVolumeField = 1 << 22, AllSceneDirtyBits = ((1<<23) - 1), NewRepr = 1 << 23, CustomBitsBegin = 1 << 24, CustomBitsEnd = 1 << 30, CustomBitsMask = 0x7f << 24 } |
enum | TaskDirtyBits : HdDirtyBits { DirtyParams = 1 << 2, DirtyCollection = 1 << 3, DirtyRenderTags = 1 << 4 } |
Public Member Functions | |
HD_API | HdChangeTracker () |
virtual HD_API | ~HdChangeTracker () |
Rprim Object Tracking | |
HD_API void | RprimInserted (SdfPath const &id, HdDirtyBits initialDirtyState) |
Start tracking Rprim with the given id . More... | |
HD_API void | RprimRemoved (SdfPath const &id) |
Stop tracking Rprim with the given id . More... | |
Task Object Tracking | |
HD_API void | TaskInserted (SdfPath const &id, HdDirtyBits initialDirtyState) |
Start tracking Task with the given id . More... | |
HD_API void | TaskRemoved (SdfPath const &id) |
Stop tracking Task with the given id . More... | |
HD_API void | MarkTaskDirty (SdfPath const &id, HdDirtyBits bits=AllDirty) |
Set the dirty flags to bits . More... | |
HD_API HdDirtyBits | GetTaskDirtyBits (SdfPath const &id) |
Get the dirty bits for Task with the given id . More... | |
HD_API void | MarkTaskClean (SdfPath const &id, HdDirtyBits newBits=Clean) |
Set the dirty flags to newBits . More... | |
HD_API unsigned | GetRenderTagVersion () const |
HD_API unsigned | GetTaskRenderTagsVersion () const |
Retrieve the current version number of the task's render tags opinion. More... | |
Instancer State Tracking | |
HD_API void | InstancerInserted (SdfPath const &id, HdDirtyBits initialDirtyState) |
Start tracking Instancer with the given id . More... | |
HD_API void | InstancerRemoved (SdfPath const &id) |
Stop tracking Instancer with the given id . More... | |
HD_API HdDirtyBits | GetInstancerDirtyBits (SdfPath const &id) |
Returns the dirty bits for the instancer with id . More... | |
HD_API void | MarkInstancerDirty (SdfPath const &id, HdDirtyBits bits=AllDirty) |
HD_API void | MarkInstancerClean (SdfPath const &id, HdDirtyBits newBits=Clean) |
Clean the specified dirty bits for the instancer with id . More... | |
HD_API void | AddInstancerRprimDependency (SdfPath const &instancerId, SdfPath const &rprimId) |
HD_API void | RemoveInstancerRprimDependency (SdfPath const &instancerId, SdfPath const &rprimId) |
HD_API void | AddInstancerInstancerDependency (SdfPath const &parentInstancerId, SdfPath const &instancerId) |
HD_API void | RemoveInstancerInstancerDependency (SdfPath const &parentInstancerId, SdfPath const &instancerId) |
Sprim (scene state prim: camera, light, ...) state Tracking | |
HD_API void | SprimInserted (SdfPath const &id, HdDirtyBits initialDirtyState) |
Start tracking sprim with the given id . More... | |
HD_API void | SprimRemoved (SdfPath const &id) |
Stop tracking sprim with the given id . More... | |
HD_API HdDirtyBits | GetSprimDirtyBits (SdfPath const &id) |
Get the dirty bits for sprim with the given id . More... | |
HD_API void | MarkSprimDirty (SdfPath const &id, HdDirtyBits bits) |
Set the dirty flags to bits . More... | |
HD_API void | MarkSprimClean (SdfPath const &id, HdDirtyBits newBits=Clean) |
Set the dirty flags to newBits . More... | |
HD_API void | AddInstancerSprimDependency (SdfPath const &instancerId, SdfPath const &sprimId) |
HD_API void | RemoveInstancerSprimDependency (SdfPath const &instancerId, SdfPath const &sprimId) |
HD_API void | AddSprimSprimDependency (SdfPath const &parentSprimId, SdfPath const &sprimId) |
HD_API void | RemoveSprimSprimDependency (SdfPath const &parentSprimId, SdfPath const &sprimId) |
HD_API void | RemoveSprimFromSprimSprimDependencies (SdfPath const &sprimId) |
Remove all dependencies involving sprimId as a parent or child. More... | |
Bprim (buffer prim: texture, buffer, ...) state Tracking | |
HD_API void | BprimInserted (SdfPath const &id, HdDirtyBits initialDirtyState) |
Start tracking bprim with the given id . More... | |
HD_API void | BprimRemoved (SdfPath const &id) |
Stop tracking bprim with the given id . More... | |
HD_API HdDirtyBits | GetBprimDirtyBits (SdfPath const &id) |
Get the dirty bits for bprim with the given id . More... | |
HD_API void | MarkBprimDirty (SdfPath const &id, HdDirtyBits bits) |
Set the dirty flags to bits . More... | |
HD_API void | MarkBprimClean (SdfPath const &id, HdDirtyBits newBits=Clean) |
Set the dirty flags to newBits . More... | |
RprimCollection Tracking | |
HD_API void | AddCollection (TfToken const &collectionName) |
Adds a named collection for tracking. More... | |
HD_API void | MarkCollectionDirty (TfToken const &collectionName) |
HD_API unsigned | GetCollectionVersion (TfToken const &collectionName) const |
Returns the current version of the named collection. More... | |
HD_API unsigned | GetVisibilityChangeCount () const |
HD_API unsigned | GetInstanceIndicesChangeCount () const |
unsigned | GetVaryingStateVersion () const |
Render Index Versioning | |
unsigned | GetRprimIndexVersion () const |
unsigned | GetSprimIndexVersion () const |
unsigned | GetBprimIndexVersion () const |
unsigned | GetInstancerIndexVersion () const |
unsigned | GetSceneStateVersion () const |
General state tracking | |
HD_API void | AddState (TfToken const &name) |
Adds a named state for tracking. More... | |
HD_API void | MarkStateDirty (TfToken const &name) |
HD_API unsigned | GetStateVersion (TfToken const &name) const |
Returns the current version of the named state. More... | |
Static Public Member Functions | |
Debug | |
static HD_API std::string | StringifyDirtyBits (HdDirtyBits dirtyBits) |
static HD_API void | DumpDirtyBits (HdDirtyBits dirtyBits) |
Friends | |
class | HdRenderIndex |
class | HdSceneIndexAdapterSceneDelegate |
Rprim State Tracking | |
HD_API HdDirtyBits | GetRprimDirtyBits (SdfPath const &id) const |
Returns the dirty bits for the rprim with id . More... | |
HD_API void | MarkRprimDirty (SdfPath const &id, HdDirtyBits bits=AllDirty) |
HD_API void | MarkRprimClean (SdfPath const &id, HdDirtyBits newBits=Clean) |
HD_API void | MarkPrimvarDirty (SdfPath const &id, TfToken const &name) |
Mark the primvar for the rprim with id as being dirty. More... | |
HD_API void | MarkAllRprimsDirty (HdDirtyBits bits) |
HD_API void | ResetVaryingState () |
HD_API void | ResetRprimVaryingState (SdfPath const &id) |
HD_API bool | IsRprimDirty (SdfPath const &id) |
Returns true if the rprim identified by id has any dirty flags set. More... | |
HD_API bool | IsExtentDirty (SdfPath const &id) |
Returns true if the rprim identified by id has a dirty extent. More... | |
HD_API bool | IsDisplayStyleDirty (SdfPath const &id) |
Returns true if the rprim identified by id has a dirty display style. More... | |
HD_API bool | IsPrimvarDirty (SdfPath const &id, TfToken const &name) |
HD_API bool | IsAnyPrimvarDirty (SdfPath const &id) |
Returns true if the rprim identified by id has any dirty primvars. More... | |
HD_API bool | IsTopologyDirty (SdfPath const &id) |
Returns true if the rprim identified by id has a dirty topology. More... | |
HD_API bool | IsDoubleSidedDirty (SdfPath const &id) |
Returns true if the rprim identified by id has dirty doubleSided state. More... | |
HD_API bool | IsCullStyleDirty (SdfPath const &id) |
Returns true if the rprim identified by id has dirty cullstyle. More... | |
HD_API bool | IsSubdivTagsDirty (SdfPath const &id) |
Returns true if the rprim identified by id has a dirty subdiv tags. More... | |
HD_API bool | IsTransformDirty (SdfPath const &id) |
Returns true if the rprim identified by id has a dirty transform. More... | |
HD_API bool | IsVisibilityDirty (SdfPath const &id) |
Returns true if the rprim identified by id has dirty visibility. More... | |
HD_API bool | IsPrimIdDirty (SdfPath const &id) |
Returns true if the rprim identified by id has a dirty primID. More... | |
static bool | IsDirty (HdDirtyBits dirtyBits) |
static bool | IsClean (HdDirtyBits dirtyBits) |
Returns true if the dirtyBits has no flags set except the varying flag. More... | |
static bool | IsVarying (HdDirtyBits dirtyBits) |
Returns true if the varying flag is set. More... | |
static HD_API bool | IsExtentDirty (HdDirtyBits dirtyBits, SdfPath const &id) |
Returns true if the dirtyBits has a dirty extent. id is for perflog. More... | |
static HD_API bool | IsDisplayStyleDirty (HdDirtyBits dirtyBits, SdfPath const &id) |
Returns true if the dirtyBits has a dirty display style. id is for perflog. More... | |
static HD_API bool | IsSubdivTagsDirty (HdDirtyBits dirtyBits, SdfPath const &id) |
Returns true if the dirtyBits has a dirty subdiv tags. id is for perflog. More... | |
static HD_API bool | IsPrimvarDirty (HdDirtyBits dirtyBits, SdfPath const &id, TfToken const &name) |
static HD_API bool | IsAnyPrimvarDirty (HdDirtyBits dirtyBits, SdfPath const &id) |
static HD_API bool | IsTopologyDirty (HdDirtyBits dirtyBits, SdfPath const &id) |
Returns true if the dirtyBits has a dirty topology. id is for perflog. More... | |
static HD_API bool | IsDoubleSidedDirty (HdDirtyBits dirtyBits, SdfPath const &id) |
Returns true if the dirtyBits has dirty doubleSided state. id is for perflog. More... | |
static HD_API bool | IsCullStyleDirty (HdDirtyBits dirtyBits, SdfPath const &id) |
Returns true if the dirtyBits has dirty cullstyle. id is for perflog. More... | |
static HD_API bool | IsTransformDirty (HdDirtyBits dirtyBits, SdfPath const &id) |
Returns true if the dirtyBits has a dirty transform. id is for perflog. More... | |
static HD_API bool | IsVisibilityDirty (HdDirtyBits dirtyBits, SdfPath const &id) |
Returns true if the dirtyBits has dirty visibility. id is for perflog. More... | |
static HD_API bool | IsPrimIdDirty (HdDirtyBits dirtyBits, SdfPath const &id) |
Returns true if the dirtyBits has a dirty primID. id is for perflog. More... | |
static HD_API bool | IsInstancerDirty (HdDirtyBits dirtyBits, SdfPath const &id) |
Returns true if the dirtyBits has a dirty instancer. id is for perflog. More... | |
static HD_API bool | IsInstanceIndexDirty (HdDirtyBits dirtyBits, SdfPath const &id) |
Returns true if the dirtyBits has a dirty instance index. id is for perflog. More... | |
static HD_API bool | IsReprDirty (HdDirtyBits dirtyBits, SdfPath const &id) |
Returns the dirty bits for the rprim with id . More... | |
static HD_API void | MarkPrimvarDirty (HdDirtyBits *dirtyBits, TfToken const &name) |
Set the primvar dirty flag to dirtyBits . More... | |
Tracks changes from the HdSceneDelegate, providing invalidation cues to the render engine.
Changes flagged here are accumulated until the next time resource associated with the change is required, at which point the resource is updated and the flag is cleared.
Definition at line 51 of file changeTracker.h.
Definition at line 57 of file changeTracker.h.
Enumerator | |
---|---|
DirtyParams | |
DirtyCollection | |
DirtyRenderTags |
Definition at line 97 of file changeTracker.h.
HD_API HdChangeTracker::HdChangeTracker | ( | ) |
|
virtual |
Adds a named collection for tracking.
HD_API void HdChangeTracker::AddInstancerInstancerDependency | ( | SdfPath const & | parentInstancerId, |
SdfPath const & | instancerId | ||
) |
Insert a dependency between instancerId
and parent instancer parentInstancerId
. Changes to the latter mark the former with DirtyInstancer.
HD_API void HdChangeTracker::AddInstancerRprimDependency | ( | SdfPath const & | instancerId, |
SdfPath const & | rprimId | ||
) |
Insert a dependency between rprimId
and parent instancer instancerId
. Changes to the latter mark the former with DirtyInstancer.
HD_API void HdChangeTracker::AddInstancerSprimDependency | ( | SdfPath const & | instancerId, |
SdfPath const & | sprimId | ||
) |
Insert a dependency between sprimId
and parent instancer instancerId
. Changes to the latter mark the former with DirtyInstancer.
HD_API void HdChangeTracker::AddSprimSprimDependency | ( | SdfPath const & | parentSprimId, |
SdfPath const & | sprimId | ||
) |
Insert a dependency between sprimId
and parent sprim parentSprimId
.
HD_API void HdChangeTracker::BprimInserted | ( | SdfPath const & | id, |
HdDirtyBits | initialDirtyState | ||
) |
Start tracking bprim with the given id
.
Stop tracking bprim with the given id
.
|
static |
HD_API HdDirtyBits HdChangeTracker::GetBprimDirtyBits | ( | SdfPath const & | id | ) |
Get the dirty bits for bprim with the given id
.
|
inline |
Returns the current version of the Render Index's BPrim set. This version number changes when Bprims are inserted or removed from the render index. Invalidating any cached gather operations.
Definition at line 528 of file changeTracker.h.
Returns the current version of the named collection.
HD_API unsigned HdChangeTracker::GetInstanceIndicesChangeCount | ( | ) | const |
Returns the number of changes to instance index. This is intended to be used to detect when instance indices changed for any Rprim. Use in with GetInstancerIndexVersion() to detect all changes to instance indices.
HD_API HdDirtyBits HdChangeTracker::GetInstancerDirtyBits | ( | SdfPath const & | id | ) |
Returns the dirty bits for the instancer with id
.
|
inline |
Returns the current version of the Render Index's Instancer set. This version number changes when Instancers are inserted or removed from the render index. Invalidating any cached gather operations.
Definition at line 535 of file changeTracker.h.
HD_API unsigned HdChangeTracker::GetRenderTagVersion | ( | ) | const |
Retrieve the current version number of the rprim render tag set XXX Rename to GetRprimRenderTagVersion
HD_API HdDirtyBits HdChangeTracker::GetRprimDirtyBits | ( | SdfPath const & | id | ) | const |
Returns the dirty bits for the rprim with id
.
|
inline |
Returns the current version of the Render Index's RPrim set. This version number changes when Rprims are inserted or removed from the render index. Invalidating any cached gather operations.
Definition at line 514 of file changeTracker.h.
|
inline |
Returns the current version of the scene state. This version number changes whenever any prims are inserted, removed or marked dirty. The use case is to detect that nothing has changed, so the Sync phase can be avoided.
Definition at line 545 of file changeTracker.h.
HD_API HdDirtyBits HdChangeTracker::GetSprimDirtyBits | ( | SdfPath const & | id | ) |
Get the dirty bits for sprim with the given id
.
|
inline |
Returns the current version of the Render Index's SPrim set. This version number changes when Sprims are inserted or removed from the render index. Invalidating any cached gather operations.
Definition at line 521 of file changeTracker.h.
Returns the current version of the named state.
HD_API HdDirtyBits HdChangeTracker::GetTaskDirtyBits | ( | SdfPath const & | id | ) |
Get the dirty bits for Task with the given id
.
HD_API unsigned HdChangeTracker::GetTaskRenderTagsVersion | ( | ) | const |
Retrieve the current version number of the task's render tags opinion.
|
inline |
Returns the current version of varying state. This is used to refresh cached DirtyLists
Definition at line 501 of file changeTracker.h.
HD_API unsigned HdChangeTracker::GetVisibilityChangeCount | ( | ) | const |
Returns the number of changes to visibility. This is intended to be used to detect when visibility has changed for any Rprim.
HD_API void HdChangeTracker::InstancerInserted | ( | SdfPath const & | id, |
HdDirtyBits | initialDirtyState | ||
) |
Start tracking Instancer with the given id
.
Stop tracking Instancer with the given id
.
Returns true if the rprim identified by id
has any dirty primvars.
|
static |
Returns true if the dirtyBits has any dirty primvars. id is for perflog.
|
inlinestatic |
Returns true if the dirtyBits has no flags set except the varying flag.
Definition at line 227 of file changeTracker.h.
Returns true if the rprim identified by id
has dirty cullstyle.
|
static |
Returns true if the dirtyBits has dirty cullstyle. id is for perflog.
|
inlinestatic |
Returns true if the dirtyBits has any flags set other than the varying flag.
Definition at line 222 of file changeTracker.h.
Returns true if the rprim identified by id
has a dirty display style.
|
static |
Returns true if the dirtyBits has a dirty display style. id is for perflog.
Returns true if the rprim identified by id
has dirty doubleSided state.
|
static |
Returns true if the dirtyBits has dirty doubleSided state. id is for perflog.
Returns true if the rprim identified by id
has a dirty extent.
|
static |
Returns true if the dirtyBits has a dirty extent. id is for perflog.
|
static |
Returns true if the dirtyBits has a dirty instance index. id is for perflog.
|
static |
Returns true if the dirtyBits has a dirty instancer. id is for perflog.
Returns true if the rprim identified by id
has a dirty primID.
|
static |
Returns true if the dirtyBits has a dirty primID. id is for perflog.
Returns true if the rprim identified by id
with primvar name
is dirty.
|
static |
Returns true if the dirtyBits has a dirty primvar name
. id is for perflog.
|
static |
Returns the dirty bits for the rprim with id
.
Returns true if the rprim identified by id
has any dirty flags set.
Returns true if the rprim identified by id
has a dirty subdiv tags.
|
static |
Returns true if the dirtyBits has a dirty subdiv tags. id is for perflog.
Returns true if the rprim identified by id
has a dirty topology.
|
static |
Returns true if the dirtyBits has a dirty topology. id is for perflog.
Returns true if the rprim identified by id
has a dirty transform.
|
static |
Returns true if the dirtyBits has a dirty transform. id is for perflog.
|
inlinestatic |
Returns true if the varying flag is set.
Definition at line 232 of file changeTracker.h.
Returns true if the rprim identified by id
has dirty visibility.
|
static |
Returns true if the dirtyBits has dirty visibility. id is for perflog.
HD_API void HdChangeTracker::MarkAllRprimsDirty | ( | HdDirtyBits | bits | ) |
Flag all the Rprim with the given id
as being dirty. Multiple calls with different dirty bits accumulate. Doesn't touch varying state.
HD_API void HdChangeTracker::MarkBprimClean | ( | SdfPath const & | id, |
HdDirtyBits | newBits = Clean |
||
) |
Set the dirty flags to newBits
.
HD_API void HdChangeTracker::MarkBprimDirty | ( | SdfPath const & | id, |
HdDirtyBits | bits | ||
) |
Set the dirty flags to bits
.
Marks a named collection as being dirty, this bumps the version of the collection.
HD_API void HdChangeTracker::MarkInstancerClean | ( | SdfPath const & | id, |
HdDirtyBits | newBits = Clean |
||
) |
Clean the specified dirty bits for the instancer with id
.
HD_API void HdChangeTracker::MarkInstancerDirty | ( | SdfPath const & | id, |
HdDirtyBits | bits = AllDirty |
||
) |
Flag the Instancer with the given id
as being dirty. Multiple calls with different dirty bits accumulate.
Mark the primvar for the rprim with id
as being dirty.
|
static |
Set the primvar dirty flag to dirtyBits
.
HD_API void HdChangeTracker::MarkRprimClean | ( | SdfPath const & | id, |
HdDirtyBits | newBits = Clean |
||
) |
Clear the dirty flags for an HdRprim. if inSync is true, set OutOfSync flag to notify dirtyList will discover the prim to sync the residual data for new repr.
HD_API void HdChangeTracker::MarkRprimDirty | ( | SdfPath const & | id, |
HdDirtyBits | bits = AllDirty |
||
) |
Flag the Rprim with the given id
as being dirty. Multiple calls with different dirty bits accumulate.
HD_API void HdChangeTracker::MarkSprimClean | ( | SdfPath const & | id, |
HdDirtyBits | newBits = Clean |
||
) |
Set the dirty flags to newBits
.
HD_API void HdChangeTracker::MarkSprimDirty | ( | SdfPath const & | id, |
HdDirtyBits | bits | ||
) |
Set the dirty flags to bits
.
Marks a named state as being dirty., this bumps the version of the state.
HD_API void HdChangeTracker::MarkTaskClean | ( | SdfPath const & | id, |
HdDirtyBits | newBits = Clean |
||
) |
Set the dirty flags to newBits
.
HD_API void HdChangeTracker::MarkTaskDirty | ( | SdfPath const & | id, |
HdDirtyBits | bits = AllDirty |
||
) |
Set the dirty flags to bits
.
HD_API void HdChangeTracker::RemoveInstancerInstancerDependency | ( | SdfPath const & | parentInstancerId, |
SdfPath const & | instancerId | ||
) |
Remove a dependency between instancerId
and parent instancer parentInstancerId
.
HD_API void HdChangeTracker::RemoveInstancerRprimDependency | ( | SdfPath const & | instancerId, |
SdfPath const & | rprimId | ||
) |
Remove a dependency between rprimId
and parent instancer instancerId
.
HD_API void HdChangeTracker::RemoveInstancerSprimDependency | ( | SdfPath const & | instancerId, |
SdfPath const & | sprimId | ||
) |
Remove a dependency between sprimId
and parent instancer instancerId
.
Remove all dependencies involving sprimId
as a parent or child.
HD_API void HdChangeTracker::RemoveSprimSprimDependency | ( | SdfPath const & | parentSprimId, |
SdfPath const & | sprimId | ||
) |
Remove a dependency between sprimId
and parent sprim parentSprimId
.
Reset the varying state on one Rprim This is done for Rprims, where we choose not to clean them (due to state like invisibility).
Clear Varying bit of all prims.
The idea is that from frame to frame (update iteration), the set of dirty rprims and their dirty bits do not change; that is, the same rprims get dirtied with the same dirty bits.. The change tracker can leverage this help build a stable dirty list and reduce the overall cost of an update iteration.
HD_API void HdChangeTracker::RprimInserted | ( | SdfPath const & | id, |
HdDirtyBits | initialDirtyState | ||
) |
Start tracking Rprim with the given id
.
Stop tracking Rprim with the given id
.
HD_API void HdChangeTracker::SprimInserted | ( | SdfPath const & | id, |
HdDirtyBits | initialDirtyState | ||
) |
Start tracking sprim with the given id
.
Stop tracking sprim with the given id
.
|
static |
HD_API void HdChangeTracker::TaskInserted | ( | SdfPath const & | id, |
HdDirtyBits | initialDirtyState | ||
) |
Start tracking Task with the given id
.
Stop tracking Task with the given id
.
|
friend |
Definition at line 671 of file changeTracker.h.
|
friend |
Definition at line 685 of file changeTracker.h.