24 #ifndef PXR_IMAGING_HD_SCENE_INDEX_ADAPTER_SCENE_DELEGATE_H 25 #define PXR_IMAGING_HD_SCENE_INDEX_ADAPTER_SCENE_DELEGATE_H 27 #include "pxr/imaging/hd/sceneDelegate.h" 28 #include "pxr/imaging/hd/sceneIndex.h" 30 #include "pxr/usd/sdf/pathTable.h" 32 PXR_NAMESPACE_OPEN_SCOPE
48 HdSceneIndexBaseRefPtr inputSceneIndex,
59 HdSceneIndexBaseRefPtr inputSceneIndex,
SdfPath const &delegateID);
92 HdVolumeFieldDescriptorVector GetVolumeFieldDescriptors(
93 SdfPath const &volumeId)
override;
100 float *sampleTimes,
GfMatrix4d *sampleValues)
override;
103 SdfPath const &instancerId)
override;
105 size_t maxSampleCount,
float *sampleTimes,
111 HdPrimvarDescriptorVector
113 SdfPath const &
id, HdInterpolation interpolation)
override;
117 VtIntArray *outIndices)
override;
120 size_t maxSampleCount,
float *sampleTimes,
121 VtValue *sampleValues)
override;
123 size_t maxNumSamples,
float *times,
VtValue *samples,
124 VtIntArray *sampleIndices)
override;
131 SdfPath const &instancerId)
override;
154 TfToken const ¶mName)
override;
160 TfToken const ¶mName)
override;
166 HdExtComputationPrimvarDescriptorVector
168 SdfPath const &
id, HdInterpolation interpolationMode)
override;
172 SdfPath const &computationId)
override;
178 size_t maxSampleCount,
180 VtValue *sampleValues)
override;
183 SdfPath const &computationId)
override;
185 SdfPath const &computationId)
override;
205 VtIntArray *outIndices);
208 const HdContainerDataSourceHandle &primvarsDataSource,
210 VtIntArray *outIndices);
214 size_t maxNumSamples,
float *times,
VtValue *samples,
215 VtIntArray *sampleIndices);
217 HdSceneIndexBaseRefPtr _inputSceneIndex;
219 struct _PrimCacheEntry
222 : primvarDescriptorsState(ReadStateUnread)
223 , extCmpPrimvarDescriptorsState(ReadStateUnread)
226 _PrimCacheEntry(
const _PrimCacheEntry &rhs)
228 primType = rhs.primType;
229 primvarDescriptorsState.store(rhs.primvarDescriptorsState.load());
230 extCmpPrimvarDescriptorsState.store(
231 rhs.extCmpPrimvarDescriptorsState.load());
236 enum ReadState :
unsigned char {
242 std::atomic<ReadState> primvarDescriptorsState;
243 std::atomic<ReadState> extCmpPrimvarDescriptorsState;
244 std::map<HdInterpolation, HdPrimvarDescriptorVector>
246 std::map<HdInterpolation, HdExtComputationPrimvarDescriptorVector>
247 extCmpPrimvarDescriptors;
253 bool _sceneDelegatesBuilt;
254 std::vector<HdSceneDelegate*> _sceneDelegates;
258 HdDirtyBits _cachedDirtyBits;
262 PXR_NAMESPACE_CLOSE_SCOPE
void PrimsDirtied(const HdSceneIndexBase &sender, const DirtiedPrimEntries &entries) override
A notification indicating prim datasources have been invalidated.
Interface class that defines the execution environment for the client to run a computation.
static HdSceneIndexBaseRefPtr AppendDefaultSceneFilters(HdSceneIndexBaseRefPtr inputSceneIndex, SdfPath const &delegateID)
Returns the end of a scene index chain containing the filters necessary for input to an instance of t...
The Hydra render index is a flattened representation of the client scene graph, which may be composed...
Basic type: 3-dimensional floating point range.
size_t SampleInstancerTransform(SdfPath const &instancerId, size_t maxSampleCount, float *sampleTimes, GfMatrix4d *sampleValues) override
Store up to maxSampleCount transform samples in *sampleValues.
HdCullStyle GetCullStyle(SdfPath const &id) override
Returns the cullstyle for the given prim.
VtValue GetCameraParamValue(SdfPath const &cameraId, TfToken const ¶mName) override
Returns a single value for a given camera and parameter.
HdExtComputationPrimvarDescriptorVector GetExtComputationPrimvarDescriptors(SdfPath const &id, HdInterpolation interpolationMode) override
Returns a list of primvar names that should be bound to a generated output from an ExtComputation for...
GfMatrix4d GetInstancerTransform(SdfPath const &instancerId) override
Returns the instancer transform.
Describes how the geometry of a prim should be displayed.
VtValue Get(SdfPath const &id, TfToken const &key) override
Returns a named value.
SdfPath GetMaterialId(SdfPath const &id) override
Returns the material ID bound to the rprim rprimId.
VtValue GetExtComputationInput(SdfPath const &computationId, TfToken const &input) override
Returns a single value for a given computation id and input token.
Describes the allocation structure of a render buffer bprim.
VtArray< TfToken > GetCategories(SdfPath const &id) override
Returns the prim categories.
bool GetVisible(SdfPath const &id) override
Returns the authored visible state of the prim.
HdPrimvarDescriptorVector GetPrimvarDescriptors(SdfPath const &id, HdInterpolation interpolation) override
Returns descriptors for all primvars of the given interpolation type.
HdIdVectorSharedPtr GetCoordSysBindings(SdfPath const &id) override
Returns the coordinate system bindings, or a nullptr if none are bound.
PxOsdSubdivTags GetSubdivTags(SdfPath const &id) override
Gets the subdivision surface tags (sharpness, holes, etc).
HdReprSelector GetReprSelector(SdfPath const &id) override
Returns the authored repr (if any) for the given prim.
bool GetDoubleSided(SdfPath const &id) override
Returns the doubleSided state for the given prim.
HdExtComputationInputDescriptorVector GetExtComputationInputDescriptors(SdfPath const &computationId) override
For the given computation id, returns a list of computation input descriptors.
size_t SampleTransform(SdfPath const &id, size_t maxSampleCount, float *sampleTimes, GfMatrix4d *sampleValues) override
Store up to maxSampleCount transform samples in *sampleValues.
VtIntArray GetInstanceIndices(SdfPath const &instancerId, SdfPath const &prototypeId) override
Gets the extracted indices array of the prototype id used in the instancer.
HdExtComputationOutputDescriptorVector GetExtComputationOutputDescriptors(SdfPath const &computationId) override
For the given computation id, returns a list of computation output descriptors.
Scene delegate which observes notices from an HdSceneIndex and applies them to an HdRenderIndex.
HdDisplayStyle GetDisplayStyle(SdfPath const &id) override
Returns the refinement level for the given prim in the range [0,8].
Token for efficient comparison, assignment, and hashing of known strings.
VtValue GetIndexedPrimvar(SdfPath const &id, TfToken const &key, VtIntArray *outIndices) override
Returns a named primvar value.
Stores a 4x4 matrix of double elements.
HdMeshTopology GetMeshTopology(SdfPath const &id) override
Gets the topological mesh data for a given prim.
Adapter class providing data exchange with the client scene graph.
Abstract interface to scene data.
Represents a set of data source locators closed under descendancy.
HdBasisCurvesTopology GetBasisCurvesTopology(SdfPath const &id) override
Gets the topological curve data for a given prim.
VtValue GetShadingStyle(SdfPath const &id) override
Returns the shading style for the given prim.
void PostSyncCleanup() override
Opportunity for the delegate to clean itself up after performing parallel work during sync phase.
void Sync(HdSyncRequestVector *request) override
Synchronizes the delegate state for the given request vector.
TfTokenVector GetExtComputationSceneInputNames(SdfPath const &computationId) override
For the given computation id, returns a list of inputs which will be requested from the scene delegat...
std::vector< TfToken > TfTokenVector
Convenience types.
size_t SampleExtComputationInput(SdfPath const &computationId, TfToken const &input, size_t maxSampleCount, float *sampleTimes, VtValue *sampleValues) override
Return up to maxSampleCount samples for a given computation id and input token.
GfRange3d GetExtent(SdfPath const &id) override
Gets the axis aligned bounds of a prim.
A path value used to locate objects in layers or scenegraphs.
Topology data for basisCurves.
The SceneDelegate is requested to synchronize prims as the result of executing a specific render pass...
Describes one or more authored display representations for an rprim.
void PrimsAdded(const HdSceneIndexBase &sender, const AddedPrimEntries &entries) override
A notification indicating prims have been added to the scene.
size_t SampleIndexedPrimvar(SdfPath const &id, TfToken const &key, size_t maxNumSamples, float *times, VtValue *samples, VtIntArray *sampleIndices) override
SamplePrimvar() for getting an unflattened primvar and its indices.
HdRenderBufferDescriptor GetRenderBufferDescriptor(SdfPath const &id) override
Returns the allocation descriptor for a given render buffer prim.
TfToken GetRenderTag(SdfPath const &id) override
Returns the render tag that will be used to bucket prims during render pass bucketing.
Topology data for meshes.
size_t SamplePrimvar(SdfPath const &id, TfToken const &key, size_t maxSampleCount, float *sampleTimes, VtValue *sampleValues) override
Store up to maxSampleCount primvar samples in *samplesValues.
std::vector< VtArray< TfToken > > GetInstanceCategories(SdfPath const &instancerId) override
Returns the categories for all instances in the instancer.
Provides a container which may hold any type, and provides introspection and iteration over array typ...
void InvokeExtComputation(SdfPath const &computationId, HdExtComputationContext *context) override
Requests the scene delegate run the ExtComputation with the given id.
std::string GetExtComputationKernel(SdfPath const &computationId) override
Returns the kernel source assigned to the computation at the path id.
SdfPath GetInstancerId(SdfPath const &primId) override
Returns the parent instancer of the given rprim or instancer.
SdfPathVector GetInstancerPrototypes(SdfPath const &instancerId) override
Returns a list of prototypes of this instancer.
void PrimsRemoved(const HdSceneIndexBase &sender, const RemovedPrimEntries &entries) override
A notification indicating prims have been removed from the scene.
GfMatrix4d GetTransform(SdfPath const &id) override
Returns the object space transform, including all parent transforms.