7 #ifndef PXR_IMAGING_HD_SCENE_INDEX_ADAPTER_SCENE_DELEGATE_H
8 #define PXR_IMAGING_HD_SCENE_INDEX_ADAPTER_SCENE_DELEGATE_H
14 #include <tbb/concurrent_unordered_map.h>
32 HdSceneIndexBaseRefPtr inputSceneIndex,
43 HdSceneIndexBaseRefPtr inputSceneIndex,
SdfPath const &delegateID);
81 SdfPath const &volumeId)
override;
88 float *sampleTimes,
GfMatrix4d *sampleValues)
override;
90 float startTime,
float endTime,
91 size_t maxSampleCount,
92 float *sampleTimes,
GfMatrix4d *sampleValues)
override;
95 SdfPath const &instancerId)
override;
97 size_t maxSampleCount,
float *sampleTimes,
100 float startTime,
float endTime,
101 size_t maxSampleCount,
float *sampleTimes,
113 VtIntArray *outIndices)
override;
116 size_t maxSampleCount,
float *sampleTimes,
117 VtValue *sampleValues)
override;
119 float startTime,
float endTime,
120 size_t maxSampleCount,
float *sampleTimes,
121 VtValue *sampleValues)
override;
124 VtIntArray *sampleIndices)
override;
126 float startTime,
float endTime,
127 size_t maxNumSamples,
float *times,
VtValue *samples,
128 VtIntArray *sampleIndices)
override;
134 SdfPath const &instancerId)
override;
162 TfToken const ¶mName)
override;
168 TfToken const ¶mName)
override;
180 SdfPath const &computationId)
override;
186 size_t maxSampleCount,
188 VtValue *sampleValues)
override;
194 size_t maxSampleCount,
196 VtValue *sampleValues)
override;
199 SdfPath const &computationId)
override;
201 SdfPath const &computationId)
override;
225 using _InputPrimCacheEntry = std::pair<SdfPath, HdSceneIndexPrim>;
229 std::hash<std::thread::id> > _inputPrimCache;
236 VtIntArray *outIndices);
239 const HdContainerDataSourceHandle &primvarsDataSource,
241 VtIntArray *outIndices);
248 float startTime,
float endTime,
249 size_t maxNumSamples,
float *times,
VtValue *samples,
250 VtIntArray *sampleIndices);
252 HdSceneIndexBaseRefPtr _inputSceneIndex;
254 struct _PrimCacheEntry
258 using PrimvarDescriptorsArray =
259 std::array<HdPrimvarDescriptorVector, HdInterpolationCount>;
260 std::shared_ptr<PrimvarDescriptorsArray> primvarDescriptors;
261 using ExtCmpPrimvarDescriptorsArray =
264 std::shared_ptr<ExtCmpPrimvarDescriptorsArray> extCmpPrimvarDescriptors;
270 std::shared_ptr<_PrimCacheEntry::PrimvarDescriptorsArray>
271 _ComputePrimvarDescriptors(
272 const HdContainerDataSourceHandle &primDataSource);
273 std::shared_ptr<_PrimCacheEntry::ExtCmpPrimvarDescriptorsArray>
274 _ComputeExtCmpPrimvarDescriptors(
275 const HdContainerDataSourceHandle &primDataSource);
277 bool _sceneDelegatesBuilt;
278 std::vector<HdSceneDelegate*> _sceneDelegates;
std::shared_ptr< SdfPathVector > HdIdVectorSharedPtr
A shared pointer to a vector of id's.
GfMatrix4d GetInstancerTransform(SdfPath const &instancerId) override
Returns the instancer transform.
~HdSceneIndexAdapterSceneDelegate() override
VtValue Get(SdfPath const &id, TfToken const &key) override
Returns a named value.
void PrimsDirtied(const HdSceneIndexBase &sender, const DirtiedPrimEntries &entries) override
HdIdVectorSharedPtr GetCoordSysBindings(SdfPath const &id) override
Returns the coordinate system bindings, or a nullptr if none are bound.
VtIntArray GetInstanceIndices(SdfPath const &instancerId, SdfPath const &prototypeId) override
size_t SampleTransform(SdfPath const &id, size_t maxSampleCount, float *sampleTimes, GfMatrix4d *sampleValues) override
HdExtComputationOutputDescriptorVector GetExtComputationOutputDescriptors(SdfPath const &computationId) override
SdfPath GetDataSharingId(SdfPath const &primId) override
VtValue GetLightParamValue(SdfPath const &id, TfToken const ¶mName) override
std::vector< HdExtComputationInputDescriptor > HdExtComputationInputDescriptorVector
HdPrimvarDescriptorVector GetPrimvarDescriptors(SdfPath const &id, HdInterpolation interpolation) override
Returns descriptors for all primvars of the given interpolation type.
HdBasisCurvesTopology GetBasisCurvesTopology(SdfPath const &id) override
Gets the topological curve data for a given prim.
std::vector< HdExtComputationOutputDescriptor > HdExtComputationOutputDescriptorVector
HdVolumeFieldDescriptorVector GetVolumeFieldDescriptors(SdfPath const &volumeId) override
VtValue GetShadingStyle(SdfPath const &id) override
Returns the shading style for the given prim.
void PrimsRemoved(const HdSceneIndexBase &sender, const RemovedPrimEntries &entries) override
SdfPath GetInstancerId(SdfPath const &primId) override
Returns the parent instancer of the given rprim or instancer.
void Sync(HdSyncRequestVector *request) override
Synchronizes the delegate state for the given request vector.
std::string GetExtComputationKernel(SdfPath const &computationId) override
std::vector< VtArray< TfToken > > GetInstanceCategories(SdfPath const &instancerId) override
Returns the categories for each of the instances in the instancer.
VtValue GetMaterialResource(SdfPath const &id) override
Returns the material ID bound to the rprim rprimId.
GfMatrix4d GetTransform(SdfPath const &id) override
Returns the object space transform, including all parent transforms.
void PostSyncCleanup() override
size_t SamplePrimvar(SdfPath const &id, TfToken const &key, size_t maxSampleCount, float *sampleTimes, VtValue *sampleValues) override
VtValue GetExtComputationInput(SdfPath const &computationId, TfToken const &input) override
size_t SampleInstancerTransform(SdfPath const &instancerId, size_t maxSampleCount, float *sampleTimes, GfMatrix4d *sampleValues) override
std::vector< class SdfPath > SdfPathVector
HdDisplayStyle GetDisplayStyle(SdfPath const &id) override
Returns the display style for the given prim.
void PrimsAdded(const HdSceneIndexBase &sender, const AddedPrimEntries &entries) override
HdCullStyle GetCullStyle(SdfPath const &id) override
Returns the cullstyle for the given prim.
GfRange3d GetExtent(SdfPath const &id) override
VtValue GetIndexedPrimvar(SdfPath const &id, TfToken const &key, VtIntArray *outIndices) override
size_t SampleIndexedPrimvar(SdfPath const &id, TfToken const &key, size_t maxNumSamples, float *times, VtValue *samples, VtIntArray *sampleIndices) override
HdExtComputationInputDescriptorVector GetExtComputationInputDescriptors(SdfPath const &computationId) override
void PrimsRenamed(const HdSceneIndexBase &sender, const RenamedPrimEntries &entries) override
std::vector< TfToken > TfTokenVector
Convenience types.
HdSceneIndexAdapterSceneDelegate(HdSceneIndexBaseRefPtr inputSceneIndex, HdRenderIndex *parentIndex, SdfPath const &delegateID)
std::vector< HdVolumeFieldDescriptor > HdVolumeFieldDescriptorVector
HdRenderBufferDescriptor GetRenderBufferDescriptor(SdfPath const &id) override
Returns the allocation descriptor for a given render buffer prim.
static HdSceneIndexBaseRefPtr AppendDefaultSceneFilters(HdSceneIndexBaseRefPtr inputSceneIndex, SdfPath const &delegateID)
VtArray< TfToken > GetCategories(SdfPath const &id) override
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
void InvokeExtComputation(SdfPath const &computationId, HdExtComputationContext *context) override
bool GetVisible(SdfPath const &id) override
Returns the authored visible state of the prim.
PxOsdSubdivTags GetSubdivTags(SdfPath const &id) override
Gets the subdivision surface tags (sharpness, holes, etc).
#define PXR_NAMESPACE_CLOSE_SCOPE
TfTokenVector GetTaskRenderTags(SdfPath const &taskId) override
SdfPath GetMaterialId(SdfPath const &id) override
Returns the material ID bound to the rprim rprimId.
TfTokenVector GetExtComputationSceneInputNames(SdfPath const &computationId) override
std::vector< HdPrimvarDescriptor > HdPrimvarDescriptorVector
TfToken GetRenderTag(SdfPath const &id) override
bool GetDoubleSided(SdfPath const &id) override
Returns the doubleSided state for the given prim.
HdExtComputationPrimvarDescriptorVector GetExtComputationPrimvarDescriptors(SdfPath const &id, HdInterpolation interpolationMode) override
SdfPathVector GetInstancerPrototypes(SdfPath const &instancerId) override
VtValue GetCameraParamValue(SdfPath const &cameraId, TfToken const ¶mName) override
HdMeshTopology GetMeshTopology(SdfPath const &id) override
Gets the topological mesh data for a given prim.
size_t SampleExtComputationInput(SdfPath const &computationId, TfToken const &input, size_t maxSampleCount, float *sampleTimes, VtValue *sampleValues) override
std::vector< HdExtComputationPrimvarDescriptor > HdExtComputationPrimvarDescriptorVector
HdReprSelector GetReprSelector(SdfPath const &id) override
Returns the authored repr (if any) for the given prim.