39 return std::get<CE_Array<T>>(myBuffer).init(size);
45 return std::get<CE_Array<T>>(myBuffer).
buffer();
47 return std::get<cl::Buffer>(myBuffer);
62 return std::holds_alternative<cl::Buffer>(myBuffer);
65 std::variant<CE_Array<T>,
cl::Buffer> myBuffer;
141 if (curveptindex > 0)
144 if (curveptindex < ncurvepts-1)
148 if (curveptindex < ncurvepts-2)
float myAccelerationRatio
constexpr SYS_FORCE_INLINE T length2() const noexcept
GU_API void GUcosseratInit(CE_Context &context, int n, GU_Cosserat::SimSettings &sim_settings, GU_Cosserat::CachedItems &cached_items, bool recompile)
typedef int(APIENTRYP RE_PFNGLXSWAPINTERVALSGIPROC)(int)
A simple OpenCL-based array class.
GU_API Buffers & getBuffers()
cl::KernelFunctor myInitRestLength
Buffer< float > myClumpDists
GU_API Kernels & getKernels()
void setExternal(cl::Buffer buffer)
Buffer< float > myInvMass
void initIfInternal(exint size)
struct GU_Cosserat::CachedItems::Kernels myKernels
Buffer< float > myRestLength
class GU_Cosserat::CachedItems::Buffers myBuffers
GU_API void GUcosseratIter(CE_Context &context, int n, GU_Cosserat::SimSettings &sim_settings, GU_Cosserat::CachedItems &cached_items)
static UT_Matrix3T< T > dihedral(UT_Vector3T< S > &a, UT_Vector3T< S > &b, UT_Vector3T< S > &c, int norm=1)
GU_API void GUcosseratSymmetrizeClumpConstraints(UT_Array< int > &clumppts, UT_Array< int > &clumpptsindex, UT_Array< float > &clumpdists, exint npts)
Buffer< float > myRestOrient
GU_API void loadKernels(CE_Context &context, int n, bool recompile)
GU_API void GUcosseratUpdateOrient(CE_Context &context, int n, GU_Cosserat::SimSettings &sim_settings, GU_Cosserat::CachedItems &cached_items)
GU_API void GUcosseratFinalize(CE_Context &context, int n, GU_Cosserat::CachedItems &cached_items)
cl::KernelFunctor myUpdateOrient
UT_Quaternion computeMinimalTwistOrient(const UT_Vector3 &lastpos, const UT_Vector3 &pos, const UT_Quaternion &lastorient)
cl::KernelFunctor myInitBuffer
cl::KernelFunctor myInitInvMass
Kernel functor interface.
Kernel interface that implements cl_kernel.
Buffer< float > myOrientIn
int computeInitFlags(int curveptindex, int ncurvepts)
GU_API void GUcosseratInitRefPos(CE_Context &context, int n, GU_Cosserat::CachedItems &cached_items)
Buffer< int > myClumpPtsIndex
void updateFromRotationMatrix(const UT_Matrix3 &)
cl::KernelFunctor myCopyBuffer