HDK
|
#include <renderIndex.h>
Public Types | |
typedef std::vector < HdDrawItem const * > | HdDrawItemPtrVector |
Public Member Functions | |
HD_API | ~HdRenderIndex () |
HD_API void | Clear () |
Clear all r (render), s (state) and b (buffer) prims. More... | |
HD_API void | RemoveSubtree (const SdfPath &root, HdSceneDelegate *sceneDelegate) |
HD_API SdfPath | GetRprimPathFromPrimId (int primId) const |
Synchronization | |
HD_API void | EnqueueCollectionToSync (HdRprimCollection const &collection) |
HD_API void | SyncAll (HdTaskSharedPtrVector *tasks, HdTaskContext *taskContext) |
Execution | |
HD_API HdDrawItemPtrVector | GetDrawItems (HdRprimCollection const &collection, TfTokenVector const &renderTags) |
Returns a list of relevant draw items that match the criteria specified. More... | |
Change Tracker | |
HdChangeTracker & | GetChangeTracker () |
HdChangeTracker const & | GetChangeTracker () const |
Renderable prims (e.g. meshes, basis curves) | |
HD_API bool | IsRprimTypeSupported (TfToken const &typeId) const |
Returns whether the rprim type is supported by this render index. More... | |
HD_API void | InsertRprim (TfToken const &typeId, HdSceneDelegate *sceneDelegate, SdfPath const &rprimId) |
Insert a rprim into index. More... | |
HD_API void | RemoveRprim (SdfPath const &id) |
Remove a rprim from index. More... | |
bool | HasRprim (SdfPath const &id) |
Returns true if rprim id exists in index. More... | |
HD_API HdRprim const * | GetRprim (SdfPath const &id) const |
Returns the rprim of id. More... | |
HD_API HdSceneDelegate * | GetSceneDelegateForRprim (SdfPath const &id) const |
Returns the scene delegate for the given rprim. More... | |
HD_API bool | GetSceneDelegateAndInstancerIds (SdfPath const &id, SdfPath *sceneDelegateId, SdfPath *instancerId) const |
HD_API TfToken | GetRenderTag (SdfPath const &id) const |
Returns the render tag for the given rprim. More... | |
TfToken | UpdateRenderTag (SdfPath const &id, HdDirtyBits bits) |
Like GetRenderTag, but updates the render tag if dirty. More... | |
HD_API const SdfPathVector & | GetRprimIds () |
HD_API SdfPathVector | GetRprimSubtree (SdfPath const &root) |
Returns the subtree rooted under the given path. More... | |
Instancer Support | |
HD_API void | InsertInstancer (HdSceneDelegate *delegate, SdfPath const &id) |
Insert an instancer into index. More... | |
HD_API void | RemoveInstancer (SdfPath const &id) |
Remove an instancer from index. More... | |
bool | HasInstancer (SdfPath const &id) |
Returns true if instancer id exists in index. More... | |
HD_API HdInstancer * | GetInstancer (SdfPath const &id) const |
Returns the instancer of id. More... | |
Task Support | |
template<typename T > | |
void | InsertTask (HdSceneDelegate *delegate, SdfPath const &id) |
Inserts a new task into the render index with an identifier of id . More... | |
HD_API void | RemoveTask (SdfPath const &id) |
Removes the given task from the RenderIndex. More... | |
bool | HasTask (SdfPath const &id) |
Returns true if a task exists in the index with the given id . More... | |
HD_API HdTaskSharedPtr const & | GetTask (SdfPath const &id) const |
Returns the task for the given id . More... | |
Scene state prims (e.g. camera, light) | |
HD_API bool | IsSprimTypeSupported (TfToken const &typeId) const |
Returns whether the sprim type is supported by this render index. More... | |
HD_API void | InsertSprim (TfToken const &typeId, HdSceneDelegate *delegate, SdfPath const &sprimId) |
Insert a sprim into index. More... | |
HD_API void | RemoveSprim (TfToken const &typeId, SdfPath const &id) |
Returns whether the sprim type is supported by this render index. More... | |
HD_API HdSprim * | GetSprim (TfToken const &typeId, SdfPath const &id) const |
Returns whether the sprim type is supported by this render index. More... | |
HD_API SdfPathVector | GetSprimSubtree (TfToken const &typeId, SdfPath const &root) |
HD_API HdSprim * | GetFallbackSprim (TfToken const &typeId) const |
Returns the fullback prim for the Sprim of the given type. More... | |
Buffer prims (e.g. textures, buffers) | |
HD_API bool | IsBprimTypeSupported (TfToken const &typeId) const |
Returns whether the bprim type is supported by this render index. More... | |
HD_API void | InsertBprim (TfToken const &typeId, HdSceneDelegate *delegate, SdfPath const &bprimId) |
Insert a bprim into index. More... | |
HD_API void | RemoveBprim (TfToken const &typeId, SdfPath const &id) |
Returns whether the bprim type is supported by this render index. More... | |
HD_API HdBprim * | GetBprim (TfToken const &typeId, SdfPath const &id) const |
Returns whether the bprim type is supported by this render index. More... | |
HD_API SdfPathVector | GetBprimSubtree (TfToken const &typeId, SdfPath const &root) |
HD_API HdBprim * | GetFallbackBprim (TfToken const &typeId) const |
Returns the fallback prim for the Bprim of the given type. More... | |
Scene indices | |
HD_API void | InsertSceneIndex (const HdSceneIndexBaseRefPtr &inputScene, SdfPath const &scenePathPrefix, bool needsPrefixing=true) |
HD_API void | RemoveSceneIndex (const HdSceneIndexBaseRefPtr &inputScene) |
HD_API HdSceneIndexBaseRefPtr | GetTerminalSceneIndex () const |
Static Public Member Functions | |
static HD_API HdRenderIndex * | New (HdRenderDelegate *renderDelegate, HdDriverVector const &drivers, const std::string &instanceName=std::string()) |
Render Delegate | |
class | HdSceneIndexAdapterSceneDelegate |
static HD_API bool | IsSceneIndexEmulationEnabled () |
HD_API HdRenderDelegate * | GetRenderDelegate () const |
HD_API HdDriverVector const & | GetDrivers () const |
HD_API HdResourceRegistrySharedPtr | GetResourceRegistry () const |
HD_API void | SceneIndexEmulationNoticeBatchBegin () |
HD_API void | SceneIndexEmulationNoticeBatchEnd () |
HD_API std::string | GetInstanceName () const |
The Hydra render index is a flattened representation of the client scene graph, which may be composed of several self-contained scene graphs, each of which provides a HdSceneDelegate adapter for data access.
Thus, multiple HdSceneDelegate's may be tied to the same HdRenderIndex.
The render index, however, is tied to a single HdRenderDelegate, which handles the actual creation and deletion of Hydra scene primitives. These include geometry and non-drawable objects (such as the camera and texture buffers). The render index simply holds a handle to these primitives, and tracks any changes to them via the HdChangeTracker. It also tracks computations and tasks that may update resources and render a subset of the renderable primitives.
The render index orchestrates the "syncing" of scene primitives, by providing the relevant scene delegate for data access, and leaves resource management to the rendering backend (via HdResourceRegistry).
It also provides "execution" functionality for application facing Hydra concepts (such as HdTask/HdRenderPass) in computing the set of HdDrawItems for a given HdRprimCollection, for rendering.
If two viewers use different HdRenderDelegate's, then it may unfortunately require populating two HdRenderIndex's.
Definition at line 120 of file renderIndex.h.
typedef std::vector<HdDrawItem const*> HdRenderIndex::HdDrawItemPtrVector |
Definition at line 123 of file renderIndex.h.
HD_API HdRenderIndex::~HdRenderIndex | ( | ) |
HD_API void HdRenderIndex::EnqueueCollectionToSync | ( | HdRprimCollection const & | collection | ) |
Hydra's core currently needs to know the collections used by tasks to aggregate the reprs that need to be synced for the dirty Rprims.
Returns whether the bprim type is supported by this render index.
HD_API SdfPathVector HdRenderIndex::GetBprimSubtree | ( | TfToken const & | typeId, |
SdfPath const & | root | ||
) |
Returns the subtree rooted under the given path for the given bprim type.
|
inline |
Definition at line 197 of file renderIndex.h.
|
inline |
Definition at line 198 of file renderIndex.h.
HD_API HdDrawItemPtrVector HdRenderIndex::GetDrawItems | ( | HdRprimCollection const & | collection, |
TfTokenVector const & | renderTags | ||
) |
Returns a list of relevant draw items that match the criteria specified.
The is typically called during render pass execution, which is the final phase in the Hydra's execution. See HdRenderPass::Execute
HD_API HdDriverVector const& HdRenderIndex::GetDrivers | ( | ) | const |
Returns true if scene index features are available This is true by default but can be controlled via an HD_ENABLE_SCENE_INDEX_EMULATION environment variable.
Returns the fallback prim for the Bprim of the given type.
Returns the fullback prim for the Sprim of the given type.
HD_API std::string HdRenderIndex::GetInstanceName | ( | ) | const |
Returns true if scene index features are available This is true by default but can be controlled via an HD_ENABLE_SCENE_INDEX_EMULATION environment variable.
HD_API HdInstancer* HdRenderIndex::GetInstancer | ( | SdfPath const & | id | ) | const |
Returns the instancer of id.
HD_API HdRenderDelegate* HdRenderIndex::GetRenderDelegate | ( | ) | const |
Currently, a render index only supports connection to one type of render delegate, due to the inserted information and change tracking being specific to that delegate type.
Returns the render tag for the given rprim.
HD_API HdResourceRegistrySharedPtr HdRenderIndex::GetResourceRegistry | ( | ) | const |
Returns a shared ptr to the resource registry of the current render delegate.
|
inline |
Returns a sorted list of all Rprims in the render index. The list is sorted by std::less<SdfPath>
Definition at line 249 of file renderIndex.h.
Given a prim id, returns the path of the corresponding rprim or an empty path if none is found.
HD_API SdfPathVector HdRenderIndex::GetRprimSubtree | ( | SdfPath const & | root | ) |
Returns the subtree rooted under the given path.
HD_API bool HdRenderIndex::GetSceneDelegateAndInstancerIds | ( | SdfPath const & | id, |
SdfPath * | sceneDelegateId, | ||
SdfPath * | instancerId | ||
) | const |
Query function to return the id's of the scene delegate and instancer associated with the Rprim at the given path.
HD_API HdSceneDelegate* HdRenderIndex::GetSceneDelegateForRprim | ( | SdfPath const & | id | ) | const |
Returns the scene delegate for the given rprim.
Returns whether the sprim type is supported by this render index.
HD_API SdfPathVector HdRenderIndex::GetSprimSubtree | ( | TfToken const & | typeId, |
SdfPath const & | root | ||
) |
Returns the subtree rooted under the given path for the given sprim type.
HD_API HdTaskSharedPtr const& HdRenderIndex::GetTask | ( | SdfPath const & | id | ) | const |
Returns the task for the given id
.
HD_API HdSceneIndexBaseRefPtr HdRenderIndex::GetTerminalSceneIndex | ( | ) | const |
The terminal scene index that is driving what is in the render index through emulation.
|
inline |
Returns true if instancer id
exists in index.
Definition at line 271 of file renderIndex.h.
|
inline |
Returns true if rprim id
exists in index.
Definition at line 219 of file renderIndex.h.
|
inline |
Returns true if a task exists in the index with the given id
.
Definition at line 292 of file renderIndex.h.
HD_API void HdRenderIndex::InsertBprim | ( | TfToken const & | typeId, |
HdSceneDelegate * | delegate, | ||
SdfPath const & | bprimId | ||
) |
Insert a bprim into index.
HD_API void HdRenderIndex::InsertInstancer | ( | HdSceneDelegate * | delegate, |
SdfPath const & | id | ||
) |
Insert an instancer into index.
HD_API void HdRenderIndex::InsertRprim | ( | TfToken const & | typeId, |
HdSceneDelegate * | sceneDelegate, | ||
SdfPath const & | rprimId | ||
) |
Insert a rprim into index.
HD_API void HdRenderIndex::InsertSceneIndex | ( | const HdSceneIndexBaseRefPtr & | inputScene, |
SdfPath const & | scenePathPrefix, | ||
bool | needsPrefixing = true |
||
) |
The terminal scene index that is driving what is in the render index through emulation.
HD_API void HdRenderIndex::InsertSprim | ( | TfToken const & | typeId, |
HdSceneDelegate * | delegate, | ||
SdfPath const & | sprimId | ||
) |
Insert a sprim into index.
void HdRenderIndex::InsertTask | ( | HdSceneDelegate * | delegate, |
SdfPath const & | id | ||
) |
Inserts a new task into the render index with an identifier of id
.
Definition at line 594 of file renderIndex.h.
Returns whether the bprim type is supported by this render index.
Returns whether the rprim type is supported by this render index.
|
static |
Returns true if scene index features are available This is true by default but can be controlled via an HD_ENABLE_SCENE_INDEX_EMULATION environment variable.
Returns whether the sprim type is supported by this render index.
|
static |
Create a render index with the given render delegate. Returns null if renderDelegate is null. The render delegate and render tasks may require access to a renderer's device provided by the application. The objects can be passed in as 'drivers'. Hgi is an example of a HdDriver. "instanceName" is an optional identifier useful for applications to associate this render index with related resources (such as the scene index instances).
Returns whether the bprim type is supported by this render index.
The terminal scene index that is driving what is in the render index through emulation.
Returns whether the sprim type is supported by this render index.
HD_API void HdRenderIndex::RemoveSubtree | ( | const SdfPath & | root, |
HdSceneDelegate * | sceneDelegate | ||
) |
Clear all entries in the render index under the given root and belong to a specified delegate.
Used for example to unload a delegate.
Removes the given task from the RenderIndex.
An application or legacy scene delegate may prefer for the scene index observer notices generated from its prim insertions, removals, or invalidations to be consolidated into vectorized batches. Calling this will cause subsequent notices to be be queued.
NOTE: This tracks depth internally and is safe to call in nested contexts. It is not safe to call from multiple threads, though.
Flushes any queued scene index observer notices and disables further queueing.
NOTE: This tracks depth internally and is safe to call in nested contexts. It is not safe to call from multiple threads, though.
HD_API void HdRenderIndex::SyncAll | ( | HdTaskSharedPtrVector * | tasks, |
HdTaskContext * | taskContext | ||
) |
Syncs input tasks, B & S prims, (external) computations and updates the Rprim dirty list to then sync the Rprims. At the end of this step, all the resources that need to be updated have handles to their data sources. This is the first phase in Hydra's execution. See HdEngine::Execute
TfToken HdRenderIndex::UpdateRenderTag | ( | SdfPath const & | id, |
HdDirtyBits | bits | ||
) |
Like GetRenderTag, but updates the render tag if dirty.
|
friend |
Returns true if scene index features are available This is true by default but can be controlled via an HD_ENABLE_SCENE_INDEX_EMULATION environment variable.
Definition at line 474 of file renderIndex.h.