14 #ifndef __GEO_ImplicitBasicSurface_h__
15 #define __GEO_ImplicitBasicSurface_h__
58 template <VEX_Precision PREC>
97 template <
bool WantGrad,
bool WantParmGrad>
118 return eval(P, grad);
123 return eval(P, grad, parms_grad);
174 #endif // __GEO_ImplicitBasicSurface_h__
UT_IntervalT< VEXfloat< PREC > > evalInterval(const UT_BoundingBoxT< VEXfloat< PREC >> &P) const
Evaluate SDF bounds for interval box (world space)
typedef int(APIENTRYP RE_PFNGLXSWAPINTERVALSGIPROC)(int)
VEXfloat< PREC > operator()(const VEXvec3< PREC > &P, VEXvec3< PREC > &grad, UT_Vector4T< VEXfloat< PREC >> &parms_grad) const
Axis-aligned bounding box (AABB).
UT_Vector4T< VEXfloat< PREC > > myParms
Parameters describing the shape.
VEXvec3< PREC > localToWorldVec(const VEXvec3< PREC > &vec) const
Transform local gradient to world space.
VEXvec3< PREC > worldToLocalVec(const VEXvec3< PREC > &vec) const
Transform local gradient to world space.
UT_BoundingBoxT< VEXfloat< PREC > > worldToLocalInterval(const UT_BoundingBoxT< VEXfloat< PREC >> &P) const
Transform world interval box to local reference frame.
typename VEX_PrecisionResolver< P >::vec3_type VEXvec3
void scale(VEXfloat< PREC > s)
Scale all distance-valued parameters by uniform factor.
VEXfloat< PREC > operator()(const VEXvec3< PREC > &P) const
Operator() overloads.
static GEO_ImplicitShapeID shapeNameToID(const char *name)
Convert shape name string to ID.
VEXfloat< PREC > operator()(const VEXvec3< PREC > &P, VEXvec3< PREC > &grad) const
GEO_ImplicitShapeID
Shape ID enumeration matching VEX implicit_shapes_shape.h.
typename VEX_PrecisionResolver< P >::float_type VEXfloat
VEXmat3< PREC > myTransform
GLuint const GLchar * name
constexpr float GEO_SDF_MAX
Maximum SDF value for empty/invalid shapes.
GA_API const UT_StringHolder transform
VEXvec3< PREC > myPos
Position of the shape in world space.
GEO_ImplicitBasicSurface()=default
void evalBatched(int npts, const VEXvec3< PREC > *P, VEXfloat< PREC > *sdf, VEXvec3< PREC > *grad, UT_Vector4T< VEXfloat< PREC >> *parms_grad) const
Batched evaluation helper with compile-time output control.
UT_IntervalT< VEXfloat< PREC > > operator()(const UT_BoundingBoxT< VEXfloat< PREC >> &P) const
VEXvec3< PREC > localToWorld(const VEXvec3< PREC > &P) const
Transform point from reference frame to world space.
typename VEX_PrecisionResolver< P >::vec4_type VEXvec4
static const char * shapeIDToName(GEO_ImplicitShapeID id)
Convert shape ID to name string.
UT_IntervalT< VEXfloat< PREC > > operator()(const VEXvec3< PREC > ¢er, VEXfloat< PREC > radius) const
VEXfloat< PREC > eval(const VEXvec3< PREC > &P) const
Evaluate SDF at point P (world space)
VEXvec3< PREC > worldToLocal(const VEXvec3< PREC > &P) const
Transform world point to local reference frame.
typename VEX_PrecisionResolver< P >::mat3_type VEXmat3