7 #ifndef PXR_USD_IMAGING_USD_IMAGING_INSTANCE_ADAPTER_H
8 #define PXR_USD_IMAGING_USD_IMAGING_INSTANCE_ADAPTER_H
101 instancerContext = NULL)
const override;
109 instancerContext = NULL)
const override;
185 SdfPath const& cachePath)
const override;
190 SdfPath const& cachePath)
const override;
196 size_t maxSampleCount,
204 size_t maxNumSamples,
213 size_t maxNumSamples,
216 VtIntArray *sampleIndices)
override;
222 TfToken const& instanceInheritablePurpose)
const override;
260 bool ignoreRootTransform =
false)
const override;
322 SdfPath const& instancerCachePath,
323 SdfPath const& prototypeCachePath,
331 VtIntArray *outIndices)
const override;
339 SdfPath const &parentInstancerPath,
356 std::vector<int>
const& instanceIndices,
357 std::vector<HdInstancerContext> *instancerCtxs)
const override;
361 SdfPath const& cachePath)
const override;
368 int const hydraInstanceIndex,
369 VtIntArray
const &parentInstanceIndices,
391 SdfPath const& parentProxyPath);
395 struct _InstancerData;
397 bool _IsChildPrim(
UsdPrim const& prim,
398 SdfPath const& cachePath)
const;
401 bool _PrimIsInstancer(
UsdPrim const& prim)
const;
413 void _ResyncPath(
SdfPath const& cachePath,
418 void _ResyncInstancer(
SdfPath const& instancerPath,
423 struct _ComputeInstanceMapFn;
424 VtIntArray _ComputeInstanceMap(
UsdPrim const& instancerPrim,
425 _InstancerData
const& instrData,
432 struct _ComputeInstanceMapVariabilityFn;
433 bool _ComputeInstanceMapVariability(
UsdPrim const& instancerPrim,
434 _InstancerData
const& instrData)
const;
438 _ProtoPrim
const& _GetProtoPrim(
SdfPath const& instancerPath,
444 bool _GetProtoPrimForChild(
447 _ProtoPrim
const** proto,
452 struct _ComputeInstanceTransformFn;
453 bool _ComputeInstanceTransforms(
UsdPrim const& instancer,
454 VtMatrix4dArray* transforms,
458 struct _GatherInstanceTransformTimeSamplesFn;
459 bool _GatherInstanceTransformsTimeSamples(
UsdPrim const& instancer,
461 std::vector<double>* outTimes)
465 struct _GatherInstancePrimvarTimeSamplesFn;
466 bool _GatherInstancePrimvarTimeSamples(
UsdPrim const& instancer,
469 std::vector<double>* outTimes)
474 struct _IsInstanceTransformVaryingFn;
475 bool _IsInstanceTransformVarying(
UsdPrim const& instancer)
const;
480 template<
typename T>
struct _ComputeInheritedPrimvarFn;
483 bool _ComputeInheritedPrimvar(
UsdPrim const& instancer,
488 bool _ComputeInheritedPrimvar(
UsdPrim const& instancer,
496 struct _IsInstanceInheritedPrimvarVaryingFn;
497 bool _IsInstanceInheritedPrimvarVarying(
UsdPrim const& instancer)
const;
499 struct _PopulateInstanceSelectionFn;
500 struct _GetScenePrimPathsFn;
501 struct _GetInstanceCategoriesFn;
530 template <
typename Functor>
531 void _RunForAllInstancesToDraw(
UsdPrim const& instancer, Functor* fn)
const;
532 template <
typename Functor>
533 bool _RunForAllInstancesToDrawImpl(
UsdPrim const& instancer,
534 std::vector<UsdPrim>* instanceContext,
539 size_t _CountAllInstancesToDraw(
UsdPrim const& instancer)
const;
540 size_t _CountAllInstancesToDrawImpl(
UsdPrim const& instancer,
561 struct _InstancerData {
562 _InstancerData() : numInstancesToDraw(0), refresh(false) { }
584 std::vector<PrimvarInfo> inheritedPrimvars;
595 mutable size_t numInstancesToDraw;
608 mutable std::vector<Visibility> visibility;
627 mutable bool refresh;
634 typedef std::unordered_map<SdfPath, _InstancerData, SdfPath::Hash>
636 _InstancerDataMap _instancerData;
643 _InstanceToInstancerMap;
644 _InstanceToInstancerMap _instanceToInstancerMap;
667 _PrototypeToInstancerMap;
668 _PrototypeToInstancerMap _prototypeToInstancerMap;
672 typedef std::unordered_map<SdfPath, SdfPath, SdfPath::Hash>
673 _ProtoPrimToInstancerMap;
674 _ProtoPrimToInstancerMap _protoPrimToInstancerMap;
679 #endif // PXR_USD_IMAGING_USD_IMAGING_INSTANCE_ADAPTER_H
bool GetVisible(UsdPrim const &usdPrim, SdfPath const &cachePath, UsdTimeCode time) const override
USDIMAGING_API HdDirtyBits ProcessPropertyChange(UsdPrim const &prim, SdfPath const &cachePath, TfToken const &propertyName) override
PXL_API void reload()
Reload the configuration.
USDIMAGING_API void UpdateForTime(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time, HdDirtyBits requestedBits, UsdImagingInstancerContext const *instancerContext=NULL) const override
USDIMAGING_API void MarkRefineLevelDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
GT_API const UT_StringHolder time
USDIMAGING_API GfRange3d GetExtent(UsdPrim const &usdPrim, SdfPath const &cachePath, UsdTimeCode time) const override
HighlightMode
Selection modes allow differentiation in selection highlight behavior.
GLsizei const GLchar *const * path
USDIMAGING_API bool IsChildPath(const SdfPath &path) const override
The root transform provided by the delegate.
std::vector< HdExtComputationInputDescriptor > HdExtComputationInputDescriptorVector
USDIMAGING_API VtValue Get(UsdPrim const &prim, SdfPath const &cachePath, TfToken const &key, UsdTimeCode time, VtIntArray *outIndices) const override
USDIMAGING_API SdfPath GetMaterialId(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
The root transform provided by the delegate.
VaryingRef< T > Varying(T *x)
USDIMAGING_API VtValue GetLightParamValue(const UsdPrim &prim, const SdfPath &cachePath, const TfToken ¶mName, UsdTimeCode time) const override
USDIMAGING_API void MarkVisibilityDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
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.
std::vector< HdExtComputationOutputDescriptor > HdExtComputationOutputDescriptorVector
USDIMAGING_API size_t SampleInstancerTransform(UsdPrim const &instancerPrim, SdfPath const &instancerPath, UsdTimeCode time, size_t maxSampleCount, float *sampleTimes, GfMatrix4d *sampleValues) override
**But if you need a result
USDIMAGING_API SdfPath GetScenePrimPath(SdfPath const &cachePath, int instanceIndex, HdInstancerContext *instancerContext) const override
USDIMAGING_API void ProcessPrimResync(SdfPath const &cachePath, UsdImagingIndexProxy *index) override
USDIMAGING_API VtValue GetInstanceIndices(UsdPrim const &instancerPrim, SdfPath const &instancerCachePath, SdfPath const &prototypeCachePath, UsdTimeCode time) const override
std::vector< std::pair< SdfPath, int > > HdInstancerContext
Instancer context: a pair of instancer paths and instance indices.
USDIMAGING_API void TrackVariability(UsdPrim const &prim, SdfPath const &cachePath, HdDirtyBits *timeVaryingBits, UsdImagingInstancerContext const *instancerContext=NULL) const override
USDIMAGING_API GfMatrix4d GetTransform(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time, bool ignoreRootTransform=false) const override
USDIMAGING_API void MarkRenderTagDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
GLint GLint GLsizei GLint GLenum GLenum type
USDIMAGING_API TfToken GetPurpose(UsdPrim const &usdPrim, SdfPath const &cachePath, TfToken const &instanceInheritablePurpose) const 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.
std::vector< class SdfPath > SdfPathVector
USDIMAGING_API HdExtComputationPrimvarDescriptorVector GetExtComputationPrimvars(UsdPrim const &prim, SdfPath const &cachePath, HdInterpolation interpolation, const UsdImagingInstancerContext *instancerContext) const override
USDIMAGING_API std::vector< VtArray< TfToken > > GetInstanceCategories(UsdPrim const &prim) override
Return an array of the categories used by each instance.
USDIMAGING_API void MarkReprDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
USDIMAGING_API VtValue GetExtComputationInput(UsdPrim const &prim, SdfPath const &cachePath, TfToken const &name, UsdTimeCode time, const UsdImagingInstancerContext *instancerContext) const override
USDIMAGING_API HdExtComputationInputDescriptorVector GetExtComputationInputs(UsdPrim const &prim, SdfPath const &cachePath, const UsdImagingInstancerContext *instancerContext) const override
USDIMAGING_API bool ShouldCullChildren() const override
USDIMAGING_API void _RemovePrim(SdfPath const &cachePath, UsdImagingIndexProxy *index) overridefinal
Returns whether custom shading of prims is enabled.
GLuint const GLchar * name
USDIMAGING_API bool GetDoubleSided(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
Reads double-sided from the given prim. If not authored, returns false.
USDIMAGING_API GfMatrix4d GetInstancerTransform(UsdPrim const &instancerPrim, SdfPath const &instancerPath, UsdTimeCode time) const override
std::vector< HdVolumeFieldDescriptor > HdVolumeFieldDescriptorVector
std::set< class SdfPath > SdfPathSet
A set of SdfPaths.
USDIMAGING_API void MarkTransformDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
USDIMAGING_API void MarkDirty(UsdPrim const &prim, SdfPath const &cachePath, HdDirtyBits dirty, UsdImagingIndexProxy *index) override
USDIMAGING_API PxOsdSubdivTags GetSubdivTags(UsdPrim const &usdPrim, SdfPath const &cachePath, UsdTimeCode time) const override
Get the subdiv tags for this prim.
bool operator==(const PrimvarInfo &rhs) const
USDIMAGING_API std::string GetExtComputationKernel(UsdPrim const &prim, SdfPath const &cachePath, const UsdImagingInstancerContext *instancerContext) const override
USDIMAGING_API SdfPath Populate(UsdPrim const &prim, UsdImagingIndexProxy *index, UsdImagingInstancerContext const *instancerContext=nullptr) override
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
USDIMAGING_API void MarkCullStyleDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
USDIMAGING_API SdfPathVector GetScenePrimPaths(SdfPath const &cachePath, std::vector< int > const &instanceIndices, std::vector< HdInstancerContext > *instancerCtxs) 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 ProcessPrimRemoval(SdfPath const &cachePath, UsdImagingIndexProxy *index) override
USDIMAGING_API GfMatrix4d GetRelativeInstancerTransform(SdfPath const &parentInstancerPath, SdfPath const &instancerPath, UsdTimeCode time) const override
#define PXR_NAMESPACE_CLOSE_SCOPE
std::shared_ptr< UsdImagingPrimAdapter > UsdImagingPrimAdapterSharedPtr
USDIMAGING_API VtValue GetTopology(UsdPrim const &prim, SdfPath const &cachePath, 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 VtValue GetMaterialResource(const UsdPrim &prim, const SdfPath &cachePath, UsdTimeCode time) const override
The root transform provided by the delegate.
USDIMAGING_API HdExtComputationOutputDescriptorVector GetExtComputationOutputs(UsdPrim const &prim, SdfPath const &cachePath, const UsdImagingInstancerContext *instancerContext) const override
USDIMAGING_API SdfPath GetDataSharingId(SdfPath const &cachePath) const override
bool operator<(const PrimvarInfo &rhs) const
USDIMAGING_API SdfPath GetInstancerId(UsdPrim const &usdPrim, SdfPath const &cachePath) const override
Return the instancerId for this prim.
std::shared_ptr< class HdSelection > HdSelectionSharedPtr
USDIMAGING_API bool IsInstancerAdapter() const override
USDIMAGING_API HdVolumeFieldDescriptorVector GetVolumeFieldDescriptors(UsdPrim const &usdPrim, SdfPath const &id, UsdTimeCode time) const override
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
std::vector< HdExtComputationPrimvarDescriptor > HdExtComputationPrimvarDescriptorVector