HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
pointInstancerAdapter.h
Go to the documentation of this file.
1 //
2 // Copyright 2016 Pixar
3 //
4 // Licensed under the terms set forth in the LICENSE.txt file available at
5 // https://openusd.org/license.
6 //
7 #ifndef PXR_USD_IMAGING_USD_IMAGING_POINT_INSTANCER_ADAPTER_H
8 #define PXR_USD_IMAGING_USD_IMAGING_POINT_INSTANCER_ADAPTER_H
9 
10 /// \file usdImaging/pointInstancerAdapter.h
11 
14 
15 #include "pxr/usd/sdf/path.h"
16 
18 
19 #include "pxr/pxr.h"
20 
21 #include <atomic>
22 #include <mutex>
23 
25 
26 /// Delegate support for UsdGeomPointInstancer
27 ///
29 {
30 public:
32 
35  UsdPrim const& prim,
37  UsdImagingInstancerContext const* instancerContext = nullptr) override;
38 
40  bool ShouldCullChildren() const override;
41 
43  bool IsInstancerAdapter() const override;
44 
45  // ---------------------------------------------------------------------- //
46  /// \name Scene Index Support
47  // ---------------------------------------------------------------------- //
48 
50  TfTokenVector GetImagingSubprims(UsdPrim const& prim) override;
51 
54  UsdPrim const& prim,
55  TfToken const& subprim) override;
56 
58  HdContainerDataSourceHandle GetImagingSubprimData(
59  UsdPrim const& prim,
60  TfToken const& subprim,
61  const UsdImagingDataSourceStageGlobals &stageGlobals) override;
62 
65  UsdPrim const& prim,
66  TfToken const& subprim,
67  TfTokenVector const& properties,
68  UsdImagingPropertyInvalidationType invalidationType) override;
69 
70  // ---------------------------------------------------------------------- //
71  /// \name Parallel Setup and Resolve
72  // ---------------------------------------------------------------------- //
73 
75  void TrackVariability(UsdPrim const& prim,
76  SdfPath const& cachePath,
77  HdDirtyBits* timeVaryingBits,
79  instancerContext = NULL) const override;
80 
82  void UpdateForTime(UsdPrim const& prim,
83  SdfPath const& cachePath,
85  HdDirtyBits requestedBits,
87  instancerContext = NULL) const override;
88 
89  // ---------------------------------------------------------------------- //
90  /// \name Change Processing
91  // ---------------------------------------------------------------------- //
92 
95  SdfPath const& cachePath,
96  TfToken const& propertyName)
97  override;
98 
100  void ProcessPrimResync(SdfPath const& cachePath,
101  UsdImagingIndexProxy* index) override;
102 
104  void ProcessPrimRemoval(SdfPath const& cachePath,
105  UsdImagingIndexProxy* index) override;
106 
108  void MarkDirty(UsdPrim const& prim,
109  SdfPath const& cachePath,
110  HdDirtyBits dirty,
111  UsdImagingIndexProxy* index) override;
112 
114  void MarkRefineLevelDirty(UsdPrim const& prim,
115  SdfPath const& cachePath,
116  UsdImagingIndexProxy* index) override;
117 
119  void MarkReprDirty(UsdPrim const& prim,
120  SdfPath const& cachePath,
121  UsdImagingIndexProxy* index) override;
122 
124  void MarkCullStyleDirty(UsdPrim const& prim,
125  SdfPath const& cachePath,
126  UsdImagingIndexProxy* index) override;
127 
129  void MarkRenderTagDirty(UsdPrim const& prim,
130  SdfPath const& cachePath,
131  UsdImagingIndexProxy* index) override;
132 
134  void MarkTransformDirty(UsdPrim const& prim,
135  SdfPath const& cachePath,
136  UsdImagingIndexProxy* index) override;
137 
139  void MarkVisibilityDirty(UsdPrim const& prim,
140  SdfPath const& cachePath,
141  UsdImagingIndexProxy* index) override;
142 
145  const UsdPrim& prim,
146  const SdfPath& cachePath,
147  UsdImagingIndexProxy* index) override;
148 
151  const UsdPrim& prim,
152  const SdfPath& cachePath,
153  UsdImagingIndexProxy* index) override;
154 
155  // ---------------------------------------------------------------------- //
156  /// \name Instancing
157  // ---------------------------------------------------------------------- //
158 
160  GfMatrix4d GetInstancerTransform(UsdPrim const& instancerPrim,
161  SdfPath const& instancerPath,
162  UsdTimeCode time) const override;
163 
165  size_t SampleInstancerTransform(UsdPrim const& instancerPrim,
166  SdfPath const& instancerPath,
168  size_t maxNumSamples,
169  float *sampleTimes,
170  GfMatrix4d *sampleValues) override;
171 
174  UsdPrim const& usdPrim,
175  SdfPath const& cachePath) const override;
176 
179  UsdPrim const& usdPrim,
180  SdfPath const& cachePath) const override;
181 
183  GfMatrix4d GetTransform(UsdPrim const& prim,
184  SdfPath const& cachePath,
186  bool ignoreRootTransform = false) const override;
187 
189  size_t SampleTransform(UsdPrim const& prim,
190  SdfPath const& cachePath,
191  UsdTimeCode time,
192  size_t maxNumSamples,
193  float *sampleTimes,
194  GfMatrix4d *sampleValues) override;
195 
197  size_t SamplePrimvar(UsdPrim const& usdPrim,
198  SdfPath const& cachePath,
199  TfToken const& key,
201  size_t maxNumSamples,
202  float *sampleTimes,
203  VtValue *sampleValues,
204  VtIntArray *sampleIndices) override;
205 
207  PxOsdSubdivTags GetSubdivTags(UsdPrim const& usdPrim,
208  SdfPath const& cachePath,
209  UsdTimeCode time) const override;
210 
212  bool IsChildPath(const SdfPath& path) const override;
213 
214  bool GetVisible(UsdPrim const& prim,
215  SdfPath const& cachePath,
216  UsdTimeCode time) const override;
217 
220  UsdPrim const& usdPrim,
221  SdfPath const& cachePath,
222  TfToken const& instanceInheritablePurpose) const override;
223 
225  VtValue GetTopology(UsdPrim const& prim,
226  SdfPath const& cachePath,
227  UsdTimeCode time) const override;
228 
230  HdCullStyle GetCullStyle(UsdPrim const& prim,
231  SdfPath const& cachePath,
232  UsdTimeCode time) const override;
233 
235  GfRange3d GetExtent(UsdPrim const& usdPrim,
236  SdfPath const& cachePath,
237  UsdTimeCode time) const override;
238 
240  bool GetDoubleSided(UsdPrim const& usdPrim,
241  SdfPath const& cachePath,
242  UsdTimeCode time) const override;
243 
244 
246  SdfPath GetMaterialId(UsdPrim const& prim,
247  SdfPath const& cachePath,
248  UsdTimeCode time) const override;
249 
252  const UsdPrim& prim,
253  const SdfPath& cachePath,
254  const TfToken& paramName,
255  UsdTimeCode time) const override;
256 
259  const UsdPrim& prim,
260  const SdfPath& cachePath,
261  UsdTimeCode time) const override;
262 
265  GetExtComputationInputs(UsdPrim const& prim,
266  SdfPath const& cachePath,
267  const UsdImagingInstancerContext* instancerContext)
268  const override;
269 
272  GetExtComputationOutputs(UsdPrim const& prim,
273  SdfPath const& cachePath,
274  const UsdImagingInstancerContext* instancerContext)
275  const override;
276 
280  UsdPrim const& prim,
281  SdfPath const& cachePath,
282  HdInterpolation interpolation,
283  const UsdImagingInstancerContext* instancerContext) const override;
284 
286  VtValue
288  UsdPrim const& prim,
289  SdfPath const& cachePath,
290  TfToken const& name,
292  const UsdImagingInstancerContext* instancerContext) const override;
293 
295  std::string
297  UsdPrim const& prim,
298  SdfPath const& cachePath,
299  const UsdImagingInstancerContext* instancerContext) const override;
300 
302  VtValue
303  GetInstanceIndices(UsdPrim const& instancerPrim,
304  SdfPath const& instancerCachePath,
305  SdfPath const& prototypeCachePath,
306  UsdTimeCode time) const override;
307 
309  VtValue Get(UsdPrim const& prim,
310  SdfPath const& cachePath,
311  TfToken const& key,
313  VtIntArray *outIndices) const override;
314 
315  // ---------------------------------------------------------------------- //
316  /// \name Nested instancing support
317  // ---------------------------------------------------------------------- //
318 
321  SdfPath const &instancerPath,
322  SdfPath const &protoInstancerPath,
323  UsdTimeCode time) const override;
324 
325  // ---------------------------------------------------------------------- //
326  /// \name Picking & selection
327  // ---------------------------------------------------------------------- //
328 
331  SdfPath const& cachePath,
332  int instanceIndex,
333  HdInstancerContext *instancerContext) const override;
334 
337  SdfPath const& cachePath,
338  std::vector<int> const& instanceIndices,
339  std::vector<HdInstancerContext> *instancerCtxs) const override;
340 
343  SdfPath const& cachePath) const override;
344 
346  bool PopulateSelection(
347  HdSelection::HighlightMode const& highlightMode,
348  SdfPath const &cachePath,
349  UsdPrim const &usdPrim,
350  int const hydraInstanceIndex,
351  VtIntArray const &parentInstanceIndices,
352  HdSelectionSharedPtr const &result) const override;
353 
354  // ---------------------------------------------------------------------- //
355  /// \name Volume field information
356  // ---------------------------------------------------------------------- //
357 
360  GetVolumeFieldDescriptors(UsdPrim const& usdPrim, SdfPath const &id,
361  UsdTimeCode time) const override;
362 
363 protected:
365  // ---------------------------------------------------------------------- //
366  /// \name Utility
367  // ---------------------------------------------------------------------- //
368 
369  // Given the USD path for a prim of this adapter's type, returns
370  // the prim's Hydra cache path. This version will reserve a path in
371  // the adapter's instancer data map for the given point instancer USD
372  // path, including any necessary variant selection path.
373  //
374  // This method is marked const, but it is not const! If called with the
375  // path of a populated point instancer, it will modify the instancer data
376  // cache and return a new path.
378  SdfPath
380  const SdfPath& usdPath,
381  const UsdImagingInstancerContext* ctx = nullptr) const override;
382 
384  void _RemovePrim(SdfPath const& cachePath,
385  UsdImagingIndexProxy* index) override final;
386 
387 private:
388  struct _ProtoPrim;
389  struct _InstancerData;
390 
391  SdfPath _Populate(UsdPrim const& prim,
393  UsdImagingInstancerContext const* instancerContext);
394 
395  void _PopulatePrototype(int protoIndex,
396  _InstancerData& instrData,
397  UsdPrim const& protoRootPrim,
399  UsdImagingInstancerContext const *instancerContext);
400 
401  // Process prim removal and output a set of affected instancer paths is
402  // provided.
403  void _ProcessPrimRemoval(SdfPath const& cachePath,
405  SdfPathVector* instancersToReload);
406 
407  // Removes all instancer data, both locally and from the render index.
408  void _UnloadInstancer(SdfPath const& instancerPath,
410 
411  // Updates per-frame instancer visibility.
412  void _UpdateInstancerVisibility(SdfPath const& instancerPath,
413  _InstancerData const& instrData,
414  UsdTimeCode time) const;
415 
416  // Returns true if the instancer is visible, taking into account all
417  // parent instancers visibilities.
418  bool _GetInstancerVisible(SdfPath const &instancerPath, UsdTimeCode time)
419  const;
420 
421  // Gets the associated _ProtoPrim for the given instancer and cache path.
422  _ProtoPrim const& _GetProtoPrim(SdfPath const& instancerPath,
423  SdfPath const& cachePath) const;
424 
425  // Gets the associated _ProtoPrim and instancerContext if cachePath is a
426  // child path and returns \c true, otherwise returns \c false.
427  //
428  // Note that the returned instancer context may not be as fully featured as
429  // your needs may be.
430  bool _GetProtoPrimForChild(
431  UsdPrim const& usdPrim,
432  SdfPath const& cachePath,
433  _ProtoPrim const** proto,
434  UsdImagingInstancerContext* ctx) const;
435 
436  // Gets the UsdPrim to use from the given _ProtoPrim.
437  const UsdPrim _GetProtoUsdPrim(_ProtoPrim const& proto) const;
438 
439  // Takes the transform applies a corrective transform to 1) remove any
440  // transforms above the model root (root proto path) and 2) apply the
441  // instancer transform.
442  GfMatrix4d _CorrectTransform(UsdPrim const& instancer,
443  UsdPrim const& proto,
444  SdfPath const& cachePath,
445  SdfPathVector const& protoPathChain,
446  GfMatrix4d const& inTransform,
447  UsdTimeCode time) const;
448 
449  // Similar to CorrectTransform, requires a visibility value exist in the
450  // ValueCache, removes any visibility opinions above the model root (proto
451  // root path) and applies the instancer visibility.
452  void _ComputeProtoVisibility(UsdPrim const& protoRoot,
453  UsdPrim const& protoGprim,
455  bool* vis) const;
456 
457  /*
458  PointInstancer (InstancerData)
459  |
460  +-- Prototype[0]------+-- ProtoRprim (mesh, curve, ...)
461  | +-- ProtoRprim
462  | +-- ProtoRprim
463  |
464  +-- Prototype[1]------+-- ProtoRprim
465  | +-- ProtoRprim
466  .
467  .
468  */
469 
470  // A proto prim represents a single populated prim under a prototype root
471  // declared on the instancer. For example, a character may be targeted
472  // by the prototypes relationship; it will have many meshes, and each
473  // mesh is represented as a separate proto prim.
474  struct _ProtoPrim {
475  _ProtoPrim() : variabilityBits(0), visible(true) {}
476  // Each prim will become a prototype "child" under the instancer.
477  // paths is a list of paths we had to hop across when resolving native
478  // USD instances.
479  SdfPathVector paths;
480  // The prim adapter for the actual prototype prim.
482  // The root prototype path, typically the model root, which is a subtree
483  // and might contain several imageable prims.
484  SdfPath protoRootPath;
485  // Tracks the variability of the underlying adapter to avoid
486  // redundantly reading data. This value is stored as
487  // HdDirtyBits bit flags.
488  // XXX: This is mutable so we can set it in TrackVariability.
489  mutable HdDirtyBits variabilityBits;
490  // When variabilityBits does not include HdChangeTracker::DirtyVisibility
491  // the visible field is the unvarying value for visibility.
492  // XXX: This is mutable so we can set it in TrackVariability.
493  mutable bool visible;
494  };
495 
496  // Indexed by cachePath (each prim has one entry)
497  typedef std::unordered_map<SdfPath, _ProtoPrim, SdfPath::Hash> _ProtoPrimMap;
498 
499  // All data associated with a given Instancer prim. PrimMap could
500  // technically be split out to avoid two lookups, however it seems cleaner
501  // to keep everything bundled up under the instancer path.
502  struct _InstancerData {
503  _InstancerData() {}
504  SdfPath parentInstancerCachePath;
505  _ProtoPrimMap protoPrimMap;
506  SdfPathVector prototypePaths;
507 
508  using PathToIndexMap = TfDenseHashMap<SdfPath, size_t, SdfPath::Hash>;
509  PathToIndexMap prototypePathIndices;
510 
511 
512  // XXX: We keep a bunch of state around visibility that's set in
513  // TrackVariability and UpdateForTime. "visible", and "visibleTime"
514  // (the cache key for visible) are set in UpdateForTime and guarded
515  // by "mutex".
516  mutable std::mutex mutex;
517  mutable bool variableVisibility;
518  mutable bool visible;
519  mutable UsdTimeCode visibleTime;
520  mutable std::atomic_bool initialized = std::atomic_bool(false);
521  };
522 
523  // A map of instancer data, one entry per instancer prim that has been
524  // populated. This must be mutable so we can modify it in ResolveCachePath.
525  // Note: this is accessed in multithreaded code paths and must be protected
526  typedef std::unordered_map<SdfPath /*instancerPath*/,
527  _InstancerData,
528  SdfPath::Hash> _InstancerDataMap;
529  mutable _InstancerDataMap _instancerData;
530 
531  inline static std::atomic_int _globalVariantCounter = std::atomic_int(0);
532 };
533 
535 
536 #endif // PXR_USD_IMAGING_USD_IMAGING_POINT_INSTANCER_ADAPTER_H
USDIMAGING_API size_t SamplePrimvar(UsdPrim const &usdPrim, SdfPath const &cachePath, TfToken const &key, UsdTimeCode time, size_t maxNumSamples, float *sampleTimes, VtValue *sampleValues, VtIntArray *sampleIndices) override
USDIMAGING_API VtValue GetMaterialResource(const UsdPrim &prim, const SdfPath &cachePath, UsdTimeCode time) const override
The root transform provided by the delegate.
USDIMAGING_API bool IsChildPath(const SdfPath &path) const override
The root transform provided by the delegate.
HdCullStyle
Definition: enums.h:105
USDIMAGING_API HdDirtyBits ProcessPropertyChange(UsdPrim const &prim, SdfPath const &cachePath, TfToken const &propertyName) override
USDIMAGING_API SdfPathVector GetScenePrimPaths(SdfPath const &cachePath, std::vector< int > const &instanceIndices, std::vector< HdInstancerContext > *instancerCtxs) const override
#define USDIMAGING_API
Definition: api.h:23
USDIMAGING_API void UpdateForTime(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time, HdDirtyBits requestedBits, UsdImagingInstancerContext const *instancerContext=NULL) const override
USDIMAGING_API bool GetDoubleSided(UsdPrim const &usdPrim, SdfPath const &cachePath, UsdTimeCode time) const override
Reads double-sided from the given prim. If not authored, returns false.
USDIMAGING_API HdExtComputationInputDescriptorVector GetExtComputationInputs(UsdPrim const &prim, SdfPath const &cachePath, const UsdImagingInstancerContext *instancerContext) const override
GT_API const UT_StringHolder time
USDIMAGING_API SdfPath GetMaterialId(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
The root transform provided by the delegate.
uint32_t HdDirtyBits
Definition: types.h:143
USDIMAGING_API SdfPath ResolveCachePath(const SdfPath &usdPath, const UsdImagingInstancerContext *ctx=nullptr) const override
Returns whether custom shading of prims is enabled.
USDIMAGING_API void MarkTransformDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
HighlightMode
Selection modes allow differentiation in selection highlight behavior.
Definition: selection.h:39
GLsizei const GLchar *const * path
Definition: glcorearb.h:3341
std::vector< HdExtComputationInputDescriptor > HdExtComputationInputDescriptorVector
USDIMAGING_API TfToken GetPurpose(UsdPrim const &usdPrim, SdfPath const &cachePath, TfToken const &instanceInheritablePurpose) const override
USDIMAGING_API GfMatrix4d GetTransform(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time, bool ignoreRootTransform=false) const override
USDIMAGING_API SdfPath GetInstancerId(UsdPrim const &usdPrim, SdfPath const &cachePath) const override
Return the instancerId for this prim.
std::vector< HdExtComputationOutputDescriptor > HdExtComputationOutputDescriptorVector
**But if you need a result
Definition: thread.h:622
USDIMAGING_API GfRange3d GetExtent(UsdPrim const &usdPrim, SdfPath const &cachePath, UsdTimeCode time) const override
USDIMAGING_API void ProcessPrimRemoval(SdfPath const &cachePath, UsdImagingIndexProxy *index) override
USDIMAGING_API HdExtComputationPrimvarDescriptorVector GetExtComputationPrimvars(UsdPrim const &prim, SdfPath const &cachePath, HdInterpolation interpolation, const UsdImagingInstancerContext *instancerContext) const override
USDIMAGING_API void MarkCullStyleDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
USDIMAGING_API VtValue GetInstanceIndices(UsdPrim const &instancerPrim, SdfPath const &instancerCachePath, SdfPath const &prototypeCachePath, UsdTimeCode time) const override
USDIMAGING_API std::string GetExtComputationKernel(UsdPrim const &prim, SdfPath const &cachePath, const UsdImagingInstancerContext *instancerContext) const override
std::vector< std::pair< SdfPath, int > > HdInstancerContext
Instancer context: a pair of instancer paths and instance indices.
Definition: sceneDelegate.h:44
USDIMAGING_API void _RemovePrim(SdfPath const &cachePath, UsdImagingIndexProxy *index) overridefinal
Returns whether custom shading of prims is enabled.
atomic< int > atomic_int
Definition: atomic.h:25
USDIMAGING_API HdVolumeFieldDescriptorVector GetVolumeFieldDescriptors(UsdPrim const &usdPrim, SdfPath const &id, UsdTimeCode time) const override
Definition: token.h:70
USDIMAGING_API size_t SampleTransform(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time, size_t maxNumSamples, float *sampleTimes, GfMatrix4d *sampleValues) override
Samples the transform for the given prim.
USDIMAGING_API VtValue GetLightParamValue(const UsdPrim &prim, const SdfPath &cachePath, const TfToken &paramName, UsdTimeCode time) const override
USDIMAGING_API VtValue Get(UsdPrim const &prim, SdfPath const &cachePath, TfToken const &key, UsdTimeCode time, VtIntArray *outIndices) const override
std::vector< class SdfPath > SdfPathVector
USDIMAGING_API void MarkReprDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
USDIMAGING_API void MarkLightParamsDirty(const UsdPrim &prim, const SdfPath &cachePath, UsdImagingIndexProxy *index) override
USDIMAGING_API void MarkRenderTagDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
USDIMAGING_API TfToken GetImagingSubprimType(UsdPrim const &prim, TfToken const &subprim) override
Definition: prim.h:116
USDIMAGING_API void MarkVisibilityDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:440
GLuint const GLchar * name
Definition: glcorearb.h:786
Definition: path.h:273
USDIMAGING_API HdDataSourceLocatorSet InvalidateImagingSubprim(UsdPrim const &prim, TfToken const &subprim, TfTokenVector const &properties, UsdImagingPropertyInvalidationType invalidationType) override
USDIMAGING_API SdfPath Populate(UsdPrim const &prim, UsdImagingIndexProxy *index, UsdImagingInstancerContext const *instancerContext=nullptr) override
USDIMAGING_API size_t SampleInstancerTransform(UsdPrim const &instancerPrim, SdfPath const &instancerPath, UsdTimeCode time, size_t maxNumSamples, float *sampleTimes, GfMatrix4d *sampleValues) override
std::vector< HdVolumeFieldDescriptor > HdVolumeFieldDescriptorVector
USDIMAGING_API VtValue GetExtComputationInput(UsdPrim const &prim, SdfPath const &cachePath, TfToken const &name, UsdTimeCode time, const UsdImagingInstancerContext *instancerContext) const override
USDIMAGING_API VtValue GetTopology(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
bool GetVisible(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
USDIMAGING_API HdContainerDataSourceHandle GetImagingSubprimData(UsdPrim const &prim, TfToken const &subprim, const UsdImagingDataSourceStageGlobals &stageGlobals) override
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1425
USDIMAGING_API TfTokenVector GetImagingSubprims(UsdPrim const &prim) override
USDIMAGING_API HdCullStyle GetCullStyle(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
Gets the cullstyle of a specific path in the scene graph.
GLuint index
Definition: glcorearb.h:786
HdInterpolation
Definition: enums.h:177
USDIMAGING_API void MarkCollectionsDirty(const UsdPrim &prim, const SdfPath &cachePath, UsdImagingIndexProxy *index) override
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74
USDIMAGING_API HdExtComputationOutputDescriptorVector GetExtComputationOutputs(UsdPrim const &prim, SdfPath const &cachePath, const UsdImagingInstancerContext *instancerContext) const override
std::shared_ptr< UsdImagingPrimAdapter > UsdImagingPrimAdapterSharedPtr
USDIMAGING_API bool ShouldCullChildren() const override
USDIMAGING_API bool PopulateSelection(HdSelection::HighlightMode const &highlightMode, SdfPath const &cachePath, UsdPrim const &usdPrim, int const hydraInstanceIndex, VtIntArray const &parentInstanceIndices, HdSelectionSharedPtr const &result) const override
USDIMAGING_API void ProcessPrimResync(SdfPath const &cachePath, UsdImagingIndexProxy *index) override
USDIMAGING_API SdfPath GetDataSharingId(SdfPath const &cachePath) const override
USDIMAGING_API void TrackVariability(UsdPrim const &prim, SdfPath const &cachePath, HdDirtyBits *timeVaryingBits, UsdImagingInstancerContext const *instancerContext=NULL) const override
USDIMAGING_API void MarkDirty(UsdPrim const &prim, SdfPath const &cachePath, HdDirtyBits dirty, UsdImagingIndexProxy *index) override
std::shared_ptr< class HdSelection > HdSelectionSharedPtr
Definition: selection.h:23
USDIMAGING_API void MarkRefineLevelDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
USDIMAGING_API GfMatrix4d GetInstancerTransform(UsdPrim const &instancerPrim, SdfPath const &instancerPath, UsdTimeCode time) const override
USDIMAGING_API SdfPathVector GetInstancerPrototypes(UsdPrim const &usdPrim, SdfPath const &cachePath) const override
Return the list of known prototypes of this prim.
USDIMAGING_API bool IsInstancerAdapter() const override
Definition: value.h:146
USDIMAGING_API GfMatrix4d GetRelativeInstancerTransform(SdfPath const &instancerPath, SdfPath const &protoInstancerPath, UsdTimeCode time) const override
UsdImagingPropertyInvalidationType
Definition: types.h:17
USDIMAGING_API PxOsdSubdivTags GetSubdivTags(UsdPrim const &usdPrim, SdfPath const &cachePath, UsdTimeCode time) const override
Get the subdiv tags for this prim.
std::vector< HdExtComputationPrimvarDescriptor > HdExtComputationPrimvarDescriptorVector
USDIMAGING_API SdfPath GetScenePrimPath(SdfPath const &cachePath, int instanceIndex, HdInstancerContext *instancerContext) const override