22 #ifndef XUSD_HydraInstancer_h
23 #define XUSD_HydraInstancer_h
49 SdfPath const &parentInstancerId);
64 int syncPrimvars(
bool recurse,
int nsegs=1);
69 return SYSmax(xsegments(), psegments());
74 VtMatrix4dArray computeTransforms(
const SdfPath &protoId,
77 float shutter_time=0);
82 VtMatrix4dArray computeTransformsAndIDs(
const SdfPath &protoId,
96 void resolveInstancePrims();
100 int instance_level = 0);
107 void addInstanceRef(
int id);
108 void removeInstanceRef(
int id);
109 bool invalidateInstanceRefs();
111 void clearInstanceRefs();
117 int id()
const {
return myID; }
122 {
return myPrototypes; }
124 {
return myPrototypeID; }
129 { myIsPointInstancer = is_pi; }
131 {
return myIsPointInstancer; }
152 : myBuffers(std::move(
src.myBuffers))
153 , myValues(std::move(
src.myValues))
160 myBuffers = std::move(
src.myBuffers);
161 myValues = std::move(
src.myValues);
176 return myBuffers[i].get();
189 myValues[idx] =
value;
190 myBuffers[idx] = std::move(b);
204 void getSegment(
float time,
int &seg0,
int &seg1,
float &
lerp,
205 bool for_transform)
const;
207 const float *
xtimes()
const {
return myXTimes.data(); }
209 const float *
ptimes()
const {
return myPTimes.data(); }
225 VtMatrix4dArray privComputeTransforms(
const SdfPath &prototypeId,
233 int hou_proto_id = -1);
242 bool myIsPointInstancer;
GLuint const GLchar * name
const float * xtimes() const
const float * ptimes() const
UT_SmallArray< float > myPTimes
GT_API const UT_StringHolder time
Scene information for the native viewport renderer.
virtual bool lerp(GA_AttributeOperand &d, GA_AttributeOperand &a, GA_AttributeOperand &b, GA_AttributeOperand &t) const
d = SYSlerp(a, b, t);
UT_SmallArray< GfMatrix4d > myXforms
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
const UT_Map< int, UT_StringHolder > & prototypeIDs() const
UT_SmallArray< float > myXTimes
const VtValue & value(exint i) const
UT_Map< TfToken, PrimvarMapItem, TfToken::HashFunctor > myPrimvarMap
GLuint GLuint GLsizei GLenum const void * indices
const UT_StringMap< UT_Map< int, int > > & prototypes() const
std::enable_if< !std::is_array< T >::value, UT_UniquePtr< T >>::type UTmakeUnique(REST &&...args)
bool isPointInstancer() const
GLdouble GLdouble GLdouble b
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
PrimvarMapItem(exint size)
int motionSegments() const
#define PXR_NAMESPACE_CLOSE_SCOPE
PrimvarMapItem & operator=(PrimvarMapItem &&src)
const HdVtBufferSource * buffer(exint i) const
const HdVtBufferSource * operator[](exint i) const
PrimvarMapItem(PrimvarMapItem &&src)
GLsizei const GLfloat * value
void setIsPointInstancer(bool is_pi)
void setValueAndBuffer(exint idx, const VtValue &value, BufferPtr b)