11 #ifndef __GT_Primitive__
12 #define __GT_Primitive__
51 virtual const char *className()
const = 0;
58 static int createPrimitiveTypeId();
62 virtual int getPrimitiveType()
const;
66 virtual bool getUniqueID(
int64 &
id)
const;
71 int nsegments)
const = 0;
88 virtual void getVelocityRange(
103 virtual int getMotionSegments()
const = 0;
107 virtual int64 getMemoryUsage()
const = 0;
112 {
return myTransform; }
120 {
return doSoftCopy(); }
139 GT_Size *tuple_size = NULL)
const;
147 { myStaticGeoState=static_geo ? 1 : 0; }
150 {
return myStaticGeoState>=0; }
156 bool getDataIdHash(
int64 &hash,
int segment=0,
157 bool cache_data_id =
false)
const;
172 void dumpAttributeLists(
const char *
label,
bool data_too)
const;
176 void dumpPrimitive()
const;
235 {
return doHarden(); }
242 bool force =
false)
const;
260 return doAttributeMerge(src, vertex_pattern, point_pattern,
261 uniform_pattern, detail_pattern);
267 static void *
operator new(
size_t size);
268 static void *
operator new(
size_t size,
void *p);
269 static void operator delete(
void *p,
size_t size);
276 virtual fpreal computePerimeter(
int seg=0)
const;
277 virtual fpreal computeSurfaceArea(
int seg=0)
const;
302 mergeAttributeLists(
bool &changed,
323 fpreal defwidth=-1)
const;
343 mutable int myCachedDataIdHashSegment : 30,
344 myStaticGeoState : 2;
346 mutable int64 myCachedDataIdHash;
SIM_API const UT_StringHolder vertex
GT_PrimitiveHandle harden() const
UT_JSONWriter & operator*()
GT_PrimitiveHandle clone() const
GLuint GLsizei const GLchar * label
getFileOption("OpenEXR:storage") storage
GR_API RE_CacheVersion getTopologyVersion(const GT_Primitive *prim, RE_CacheVersion geo_version)
Return the cache version for the topology of primitive 'prim'.
ImageBuf OIIO_API min(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
Class which writes ASCII or binary JSON streams.
GA_API const UT_StringHolder P
A reference counter base class for use with UT_IntrusivePtr.
GA_API const UT_StringHolder v
void setStaticGeometry(bool static_geo)
Return true if the primitive represents geometry at frame 'fr'.
GT_PrimitiveHandle attributeMerge(const GT_Primitive &src, const UT_StringMMPattern *vertex_pattern, const UT_StringMMPattern *point_pattern, const UT_StringMMPattern *uniform_pattern, const UT_StringMMPattern *detail_pattern) const
bool isFrameInfoAvailable() const
const GT_TransformHandle & getPrimitiveTransform() const
GLuint const GLchar * name
The base class for all GT primitive types.
GT_API const UT_StringHolder version
Processes primitives generated by refinement process.
void setPrimitiveTransform(const GT_TransformHandle &x)
Set the transform for a the primitive.
SIM_API const UT_StringHolder force
bool isStaticGeometry() const
ImageBuf OIIO_API max(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
GLubyte GLubyte GLubyte GLubyte w
constexpr T normalize(UT_FixedVector< T, D > &a) noexcept