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 Apache License, Version 2.0 (the "Apache License")
5 // with the following modification; you may not use this file except in
6 // compliance with the Apache License and the following modification to it:
7 // Section 6. Trademarks. is deleted and replaced with:
8 //
9 // 6. Trademarks. This License does not grant permission to use the trade
10 // names, trademarks, service marks, or product names of the Licensor
11 // and its affiliates, except as required to comply with Section 4(c) of
12 // the License and to reproduce the content of the NOTICE file.
13 //
14 // You may obtain a copy of the Apache License at
15 //
16 // http://www.apache.org/licenses/LICENSE-2.0
17 //
18 // Unless required by applicable law or agreed to in writing, software
19 // distributed under the Apache License with the above modification is
20 // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21 // KIND, either express or implied. See the Apache License for the specific
22 // language governing permissions and limitations under the Apache License.
23 //
24 #ifndef PXR_USD_IMAGING_USD_IMAGING_POINT_INSTANCER_ADAPTER_H
25 #define PXR_USD_IMAGING_USD_IMAGING_POINT_INSTANCER_ADAPTER_H
26 
27 /// \file usdImaging/pointInstancerAdapter.h
28 
29 #include "pxr/pxr.h"
34 
35 #include <mutex>
36 
38 
39 
40 /// Delegate support for UsdGeomPointInstancer
41 ///
43 {
44 public:
46 
48  : BaseAdapter()
49  { }
51 
52  virtual SdfPath Populate(
53  UsdPrim const& prim,
55  UsdImagingInstancerContext const* instancerContext = nullptr) override;
56 
57  virtual bool ShouldCullChildren() const override;
58 
59  virtual bool IsInstancerAdapter() const override;
60 
61  // ---------------------------------------------------------------------- //
62  /// \name Scene Index Support
63  // ---------------------------------------------------------------------- //
64 
66  TfTokenVector GetImagingSubprims(UsdPrim const& prim) override;
67 
70  UsdPrim const& prim,
71  TfToken const& subprim) override;
72 
74  HdContainerDataSourceHandle GetImagingSubprimData(
75  UsdPrim const& prim,
76  TfToken const& subprim,
77  const UsdImagingDataSourceStageGlobals &stageGlobals) override;
78 
81  UsdPrim const& prim,
82  TfToken const& subprim,
83  TfTokenVector const& properties,
84  UsdImagingPropertyInvalidationType invalidationType) override;
85 
86  // ---------------------------------------------------------------------- //
87  /// \name Parallel Setup and Resolve
88  // ---------------------------------------------------------------------- //
89 
90  virtual void TrackVariability(UsdPrim const& prim,
91  SdfPath const& cachePath,
92  HdDirtyBits* timeVaryingBits,
94  instancerContext = NULL) const override;
95 
96  virtual void UpdateForTime(UsdPrim const& prim,
97  SdfPath const& cachePath,
99  HdDirtyBits requestedBits,
101  instancerContext = NULL) const override;
102 
103  // ---------------------------------------------------------------------- //
104  /// \name Change Processing
105  // ---------------------------------------------------------------------- //
106 
107  virtual HdDirtyBits ProcessPropertyChange(UsdPrim const& prim,
108  SdfPath const& cachePath,
109  TfToken const& propertyName)
110  override;
111 
112  virtual void ProcessPrimResync(SdfPath const& cachePath,
113  UsdImagingIndexProxy* index) override;
114 
115  virtual void ProcessPrimRemoval(SdfPath const& cachePath,
116  UsdImagingIndexProxy* index) override;
117 
118  virtual void MarkDirty(UsdPrim const& prim,
119  SdfPath const& cachePath,
120  HdDirtyBits dirty,
121  UsdImagingIndexProxy* index) override;
122 
123  virtual void MarkRefineLevelDirty(UsdPrim const& prim,
124  SdfPath const& cachePath,
125  UsdImagingIndexProxy* index) override;
126 
127  virtual void MarkReprDirty(UsdPrim const& prim,
128  SdfPath const& cachePath,
129  UsdImagingIndexProxy* index) override;
130 
131  virtual void MarkCullStyleDirty(UsdPrim const& prim,
132  SdfPath const& cachePath,
133  UsdImagingIndexProxy* index) override;
134 
135  virtual void MarkRenderTagDirty(UsdPrim const& prim,
136  SdfPath const& cachePath,
137  UsdImagingIndexProxy* index) override;
138 
139  virtual void MarkTransformDirty(UsdPrim const& prim,
140  SdfPath const& cachePath,
141  UsdImagingIndexProxy* index) override;
142 
143  virtual void MarkVisibilityDirty(UsdPrim const& prim,
144  SdfPath const& cachePath,
145  UsdImagingIndexProxy* index) override;
146 
147  virtual void MarkLightParamsDirty(
148  const UsdPrim& prim,
149  const SdfPath& cachePath,
150  UsdImagingIndexProxy* index) override;
151 
152  virtual void MarkCollectionsDirty(
153  const UsdPrim& prim,
154  const SdfPath& cachePath,
155  UsdImagingIndexProxy* index) override;
156 
157  // ---------------------------------------------------------------------- //
158  /// \name Instancing
159  // ---------------------------------------------------------------------- //
160 
161  GfMatrix4d GetInstancerTransform(UsdPrim const& instancerPrim,
162  SdfPath const& instancerPath,
163  UsdTimeCode time) const override;
164 
165  size_t SampleInstancerTransform(UsdPrim const& instancerPrim,
166  SdfPath const& instancerPath,
168  size_t maxNumSamples,
169  float *sampleTimes,
170  GfMatrix4d *sampleValues) override;
171 
173  UsdPrim const& usdPrim,
174  SdfPath const& cachePath) const override;
175 
177  UsdPrim const& usdPrim,
178  SdfPath const& cachePath) const override;
179 
180  GfMatrix4d GetTransform(UsdPrim const& prim,
181  SdfPath const& cachePath,
183  bool ignoreRootTransform = false) const override;
184 
185  size_t SampleTransform(UsdPrim const& prim,
186  SdfPath const& cachePath,
187  UsdTimeCode time,
188  size_t maxNumSamples,
189  float *sampleTimes,
190  GfMatrix4d *sampleValues) override;
191 
192  size_t SamplePrimvar(UsdPrim const& usdPrim,
193  SdfPath const& cachePath,
194  TfToken const& key,
196  size_t maxNumSamples,
197  float *sampleTimes,
198  VtValue *sampleValues,
199  VtIntArray *sampleIndices) override;
200 
201  PxOsdSubdivTags GetSubdivTags(UsdPrim const& usdPrim,
202  SdfPath const& cachePath,
203  UsdTimeCode time) const override;
204 
205  bool GetVisible(UsdPrim const& prim,
206  SdfPath const& cachePath,
207  UsdTimeCode time) const override;
208 
210  UsdPrim const& usdPrim,
211  SdfPath const& cachePath,
212  TfToken const& instanceInheritablePurpose) const override;
213 
214  VtValue GetTopology(UsdPrim const& prim,
215  SdfPath const& cachePath,
216  UsdTimeCode time) const override;
217 
218  HdCullStyle GetCullStyle(UsdPrim const& prim,
219  SdfPath const& cachePath,
220  UsdTimeCode time) const override;
221 
222  GfRange3d GetExtent(UsdPrim const& usdPrim,
223  SdfPath const& cachePath,
224  UsdTimeCode time) const override;
225 
226  bool GetDoubleSided(UsdPrim const& usdPrim,
227  SdfPath const& cachePath,
228  UsdTimeCode time) const override;
229 
230 
231  SdfPath GetMaterialId(UsdPrim const& prim,
232  SdfPath const& cachePath,
233  UsdTimeCode time) const override;
234 
236  const UsdPrim& prim,
237  const SdfPath& cachePath,
238  const TfToken& paramName,
239  UsdTimeCode time) const override;
240 
242  const UsdPrim& prim,
243  const SdfPath& cachePath,
244  UsdTimeCode time) const override;
245 
247  GetExtComputationInputs(UsdPrim const& prim,
248  SdfPath const& cachePath,
249  const UsdImagingInstancerContext* instancerContext)
250  const override;
251 
253  GetExtComputationOutputs(UsdPrim const& prim,
254  SdfPath const& cachePath,
255  const UsdImagingInstancerContext* instancerContext)
256  const override;
257 
260  UsdPrim const& prim,
261  SdfPath const& cachePath,
262  HdInterpolation interpolation,
263  const UsdImagingInstancerContext* instancerContext) const override;
264 
265  VtValue
267  UsdPrim const& prim,
268  SdfPath const& cachePath,
269  TfToken const& name,
271  const UsdImagingInstancerContext* instancerContext) const override;
272 
273  std::string
275  UsdPrim const& prim,
276  SdfPath const& cachePath,
277  const UsdImagingInstancerContext* instancerContext) const override;
278 
279  VtValue
280  GetInstanceIndices(UsdPrim const& instancerPrim,
281  SdfPath const& instancerCachePath,
282  SdfPath const& prototypeCachePath,
283  UsdTimeCode time) const override;
284 
285  VtValue Get(UsdPrim const& prim,
286  SdfPath const& cachePath,
287  TfToken const& key,
289  VtIntArray *outIndices) const override;
290 
291  // ---------------------------------------------------------------------- //
292  /// \name Nested instancing support
293  // ---------------------------------------------------------------------- //
294 
296  SdfPath const &instancerPath,
297  SdfPath const &protoInstancerPath,
298  UsdTimeCode time) const override;
299 
300  // ---------------------------------------------------------------------- //
301  /// \name Picking & selection
302  // ---------------------------------------------------------------------- //
303 
304  virtual SdfPath GetScenePrimPath(
305  SdfPath const& cachePath,
306  int instanceIndex,
307  HdInstancerContext *instancerContext) const override;
308 
310  SdfPath const& cachePath,
311  std::vector<int> const& instanceIndices,
312  std::vector<HdInstancerContext> *instancerCtxs) const override;
313 
314  virtual SdfPath GetDataSharingId(
315  SdfPath const& cachePath) const override;
316 
317  virtual bool PopulateSelection(
318  HdSelection::HighlightMode const& highlightMode,
319  SdfPath const &cachePath,
320  UsdPrim const &usdPrim,
321  int const hydraInstanceIndex,
322  VtIntArray const &parentInstanceIndices,
323  HdSelectionSharedPtr const &result) const override;
324 
325  // ---------------------------------------------------------------------- //
326  /// \name Volume field information
327  // ---------------------------------------------------------------------- //
328 
330  GetVolumeFieldDescriptors(UsdPrim const& usdPrim, SdfPath const &id,
331  UsdTimeCode time) const override;
332 
333 protected:
334  virtual void _RemovePrim(SdfPath const& cachePath,
335  UsdImagingIndexProxy* index) override final;
336 
337 private:
338  struct _ProtoPrim;
339  struct _InstancerData;
340 
341  SdfPath _Populate(UsdPrim const& prim,
343  UsdImagingInstancerContext const* instancerContext);
344 
345  void _PopulatePrototype(int protoIndex,
346  _InstancerData& instrData,
347  UsdPrim const& protoRootPrim,
349  UsdImagingInstancerContext const *instancerContext);
350 
351  // Process prim removal and output a set of affected instancer paths is
352  // provided.
353  void _ProcessPrimRemoval(SdfPath const& cachePath,
355  SdfPathVector* instancersToReload);
356 
357  // Removes all instancer data, both locally and from the render index.
358  void _UnloadInstancer(SdfPath const& instancerPath,
360 
361  // Updates per-frame instancer visibility.
362  void _UpdateInstancerVisibility(SdfPath const& instancerPath,
363  _InstancerData const& instrData,
364  UsdTimeCode time) const;
365 
366  // Returns true if the instancer is visible, taking into account all
367  // parent instancers visibilities.
368  bool _GetInstancerVisible(SdfPath const &instancerPath, UsdTimeCode time)
369  const;
370 
371  // Gets the associated _ProtoPrim for the given instancer and cache path.
372  _ProtoPrim const& _GetProtoPrim(SdfPath const& instancerPath,
373  SdfPath const& cachePath) const;
374 
375  // Gets the associated _ProtoPrim and instancerContext if cachePath is a
376  // child path and returns \c true, otherwise returns \c false.
377  //
378  // Note that the returned instancer context may not be as fully featured as
379  // your needs may be.
380  bool _GetProtoPrimForChild(
381  UsdPrim const& usdPrim,
382  SdfPath const& cachePath,
383  _ProtoPrim const** proto,
384  UsdImagingInstancerContext* ctx) const;
385 
386  // Gets the UsdPrim to use from the given _ProtoPrim.
387  const UsdPrim _GetProtoUsdPrim(_ProtoPrim const& proto) const;
388 
389  // Takes the transform applies a corrective transform to 1) remove any
390  // transforms above the model root (root proto path) and 2) apply the
391  // instancer transform.
392  GfMatrix4d _CorrectTransform(UsdPrim const& instancer,
393  UsdPrim const& proto,
394  SdfPath const& cachePath,
395  SdfPathVector const& protoPathChain,
396  GfMatrix4d const& inTransform,
397  UsdTimeCode time) const;
398 
399  // Similar to CorrectTransform, requires a visibility value exist in the
400  // ValueCache, removes any visibility opinions above the model root (proto
401  // root path) and applies the instancer visibility.
402  void _ComputeProtoVisibility(UsdPrim const& protoRoot,
403  UsdPrim const& protoGprim,
405  bool* vis) const;
406 
407  /*
408  PointInstancer (InstancerData)
409  |
410  +-- Prototype[0]------+-- ProtoRprim (mesh, curve, ...)
411  | +-- ProtoRprim
412  | +-- ProtoRprim
413  |
414  +-- Prototype[1]------+-- ProtoRprim
415  | +-- ProtoRprim
416  .
417  .
418  */
419 
420  // A proto prim represents a single populated prim under a prototype root
421  // declared on the instancer. For example, a character may be targeted
422  // by the prototypes relationship; it will have many meshes, and each
423  // mesh is represented as a separate proto prim.
424  struct _ProtoPrim {
425  _ProtoPrim() : variabilityBits(0), visible(true) {}
426  // Each prim will become a prototype "child" under the instancer.
427  // paths is a list of paths we had to hop across when resolving native
428  // USD instances.
429  SdfPathVector paths;
430  // The prim adapter for the actual prototype prim.
432  // The root prototype path, typically the model root, which is a subtree
433  // and might contain several imageable prims.
434  SdfPath protoRootPath;
435  // Tracks the variability of the underlying adapter to avoid
436  // redundantly reading data. This value is stored as
437  // HdDirtyBits bit flags.
438  // XXX: This is mutable so we can set it in TrackVariability.
439  mutable HdDirtyBits variabilityBits;
440  // When variabilityBits does not include HdChangeTracker::DirtyVisibility
441  // the visible field is the unvarying value for visibility.
442  // XXX: This is mutable so we can set it in TrackVariability.
443  mutable bool visible;
444  };
445 
446  // Indexed by cachePath (each prim has one entry)
447  typedef std::unordered_map<SdfPath, _ProtoPrim, SdfPath::Hash> _ProtoPrimMap;
448 
449  // All data associated with a given Instancer prim. PrimMap could
450  // technically be split out to avoid two lookups, however it seems cleaner
451  // to keep everything bundled up under the instancer path.
452  struct _InstancerData {
453  _InstancerData() {}
454  SdfPath parentInstancerCachePath;
455  _ProtoPrimMap protoPrimMap;
456  SdfPathVector prototypePaths;
457 
458  using PathToIndexMap = TfDenseHashMap<SdfPath, size_t, SdfPath::Hash>;
459  PathToIndexMap prototypePathIndices;
460 
461 
462  // XXX: We keep a bunch of state around visibility that's set in
463  // TrackVariability and UpdateForTime. "visible", and "visibleTime"
464  // (the cache key for visible) are set in UpdateForTime and guarded
465  // by "mutex".
466  mutable std::mutex mutex;
467  mutable bool variableVisibility;
468  mutable bool visible;
469  mutable UsdTimeCode visibleTime;
470  };
471 
472  // A map of instancer data, one entry per instancer prim that has been
473  // populated.
474  // Note: this is accessed in multithreaded code paths and must be protected
475  typedef std::unordered_map<SdfPath /*instancerPath*/,
476  _InstancerData,
477  SdfPath::Hash> _InstancerDataMap;
478  _InstancerDataMap _instancerData;
479 };
480 
481 
482 
484 
485 #endif // PXR_USD_IMAGING_USD_IMAGING_POINT_INSTANCER_ADAPTER_H
TfToken GetPurpose(UsdPrim const &usdPrim, SdfPath const &cachePath, TfToken const &instanceInheritablePurpose) const override
HdCullStyle
Definition: enums.h:122
virtual SdfPath GetScenePrimPath(SdfPath const &cachePath, int instanceIndex, HdInstancerContext *instancerContext) const override
virtual void ProcessPrimResync(SdfPath const &cachePath, UsdImagingIndexProxy *index) override
#define USDIMAGING_API
Definition: api.h:40
GT_API const UT_StringHolder time
HdExtComputationInputDescriptorVector GetExtComputationInputs(UsdPrim const &prim, SdfPath const &cachePath, const UsdImagingInstancerContext *instancerContext) const override
HdCullStyle GetCullStyle(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
Gets the cullstyle of a specific path in the scene graph.
uint32_t HdDirtyBits
Definition: types.h:158
GLsizei const GLchar *const * string
Definition: glcorearb.h:814
virtual HdDirtyBits ProcessPropertyChange(UsdPrim const &prim, SdfPath const &cachePath, TfToken const &propertyName) override
size_t SamplePrimvar(UsdPrim const &usdPrim, SdfPath const &cachePath, TfToken const &key, UsdTimeCode time, size_t maxNumSamples, float *sampleTimes, VtValue *sampleValues, VtIntArray *sampleIndices) override
std::vector< HdExtComputationInputDescriptor > HdExtComputationInputDescriptorVector
virtual void MarkRenderTagDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
std::vector< HdExtComputationOutputDescriptor > HdExtComputationOutputDescriptorVector
virtual void MarkDirty(UsdPrim const &prim, SdfPath const &cachePath, HdDirtyBits dirty, UsdImagingIndexProxy *index) override
SdfPath GetInstancerId(UsdPrim const &usdPrim, SdfPath const &cachePath) const override
Return the instancerId for this prim.
**But if you need a result
Definition: thread.h:613
size_t SampleInstancerTransform(UsdPrim const &instancerPrim, SdfPath const &instancerPath, UsdTimeCode time, size_t maxNumSamples, float *sampleTimes, GfMatrix4d *sampleValues) override
VtValue GetMaterialResource(const UsdPrim &prim, const SdfPath &cachePath, UsdTimeCode time) const override
The root transform provided by the delegate.
SdfPathVector GetInstancerPrototypes(UsdPrim const &usdPrim, SdfPath const &cachePath) const override
Return the list of known prototypes of this prim.
VtValue Get(UsdPrim const &prim, SdfPath const &cachePath, TfToken const &key, UsdTimeCode time, VtIntArray *outIndices) const override
virtual void MarkCollectionsDirty(const UsdPrim &prim, const SdfPath &cachePath, UsdImagingIndexProxy *index) override
std::vector< std::pair< SdfPath, int > > HdInstancerContext
Instancer context: a pair of instancer paths and instance indices.
Definition: sceneDelegate.h:61
virtual void MarkReprDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
virtual bool PopulateSelection(HdSelection::HighlightMode const &highlightMode, SdfPath const &cachePath, UsdPrim const &usdPrim, int const hydraInstanceIndex, VtIntArray const &parentInstanceIndices, HdSelectionSharedPtr const &result) const override
HdExtComputationPrimvarDescriptorVector GetExtComputationPrimvars(UsdPrim const &prim, SdfPath const &cachePath, HdInterpolation interpolation, const UsdImagingInstancerContext *instancerContext) const override
virtual void MarkCullStyleDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
Definition: token.h:87
SdfPath GetMaterialId(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
The root transform provided by the delegate.
virtual void MarkTransformDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
VtValue GetExtComputationInput(UsdPrim const &prim, SdfPath const &cachePath, TfToken const &name, UsdTimeCode time, const UsdImagingInstancerContext *instancerContext) const override
USDIMAGING_API TfToken GetImagingSubprimType(UsdPrim const &prim, TfToken const &subprim) override
Definition: prim.h:135
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:442
virtual SdfPathVector GetScenePrimPaths(SdfPath const &cachePath, std::vector< int > const &instanceIndices, std::vector< HdInstancerContext > *instancerCtxs) const override
virtual SdfPath GetDataSharingId(SdfPath const &cachePath) const override
GfRange3d GetExtent(UsdPrim const &usdPrim, SdfPath const &cachePath, UsdTimeCode time) const override
virtual SdfPath Populate(UsdPrim const &prim, UsdImagingIndexProxy *index, UsdImagingInstancerContext const *instancerContext=nullptr) override
virtual GfMatrix4d GetRelativeInstancerTransform(SdfPath const &instancerPath, SdfPath const &protoInstancerPath, UsdTimeCode time) const override
GLuint const GLchar * name
Definition: glcorearb.h:786
HighlightMode
Selection modes allow differentiation in selection highlight behavior.
Definition: selection.h:56
Definition: path.h:291
USDIMAGING_API HdDataSourceLocatorSet InvalidateImagingSubprim(UsdPrim const &prim, TfToken const &subprim, TfTokenVector const &properties, UsdImagingPropertyInvalidationType invalidationType) override
std::vector< HdVolumeFieldDescriptor > HdVolumeFieldDescriptorVector
std::vector< class SdfPath > SdfPathVector
A vector of SdfPaths.
Definition: path.h:212
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.
virtual void UpdateForTime(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time, HdDirtyBits requestedBits, UsdImagingInstancerContext const *instancerContext=NULL) const override
virtual bool ShouldCullChildren() const override
bool GetVisible(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
virtual void ProcessPrimRemoval(SdfPath const &cachePath, UsdImagingIndexProxy *index) 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:1441
GfMatrix4d GetTransform(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time, bool ignoreRootTransform=false) const override
VtValue GetLightParamValue(const UsdPrim &prim, const SdfPath &cachePath, const TfToken &paramName, UsdTimeCode time) const override
USDIMAGING_API TfTokenVector GetImagingSubprims(UsdPrim const &prim) override
virtual void MarkLightParamsDirty(const UsdPrim &prim, const SdfPath &cachePath, UsdImagingIndexProxy *index) override
virtual void TrackVariability(UsdPrim const &prim, SdfPath const &cachePath, HdDirtyBits *timeVaryingBits, UsdImagingInstancerContext const *instancerContext=NULL) const override
GLuint index
Definition: glcorearb.h:786
HdInterpolation
Definition: enums.h:194
std::string GetExtComputationKernel(UsdPrim const &prim, SdfPath const &cachePath, const UsdImagingInstancerContext *instancerContext) const override
virtual void MarkVisibilityDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
virtual void _RemovePrim(SdfPath const &cachePath, UsdImagingIndexProxy *index) overridefinal
Provides to paramName->UsdAttribute value mappings.
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:91
std::shared_ptr< UsdImagingPrimAdapter > UsdImagingPrimAdapterSharedPtr
virtual void MarkRefineLevelDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
bool GetDoubleSided(UsdPrim const &usdPrim, SdfPath const &cachePath, UsdTimeCode time) const override
Reads double-sided from the given prim. If not authored, returns false.
VtValue GetTopology(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
virtual bool IsInstancerAdapter() const override
HdExtComputationOutputDescriptorVector GetExtComputationOutputs(UsdPrim const &prim, SdfPath const &cachePath, const UsdImagingInstancerContext *instancerContext) const override
PxOsdSubdivTags GetSubdivTags(UsdPrim const &usdPrim, SdfPath const &cachePath, UsdTimeCode time) const override
Get the subdiv tags for this prim.
GfMatrix4d GetInstancerTransform(UsdPrim const &instancerPrim, SdfPath const &instancerPath, UsdTimeCode time) const override
virtual HdVolumeFieldDescriptorVector GetVolumeFieldDescriptors(UsdPrim const &usdPrim, SdfPath const &id, UsdTimeCode time) const override
std::shared_ptr< class HdSelection > HdSelectionSharedPtr
Definition: selection.h:40
Definition: value.h:167
UsdImagingPropertyInvalidationType
Definition: types.h:34
VtValue GetInstanceIndices(UsdPrim const &instancerPrim, SdfPath const &instancerCachePath, SdfPath const &prototypeCachePath, UsdTimeCode time) const override
std::vector< HdExtComputationPrimvarDescriptor > HdExtComputationPrimvarDescriptorVector