18 float3 d0 = cp[0] + t * (cp[1] - cp[0]);
19 float3 d1 = cp[1] + t * (cp[2] - cp[1]);
20 const float3 d2 = cp[2] + t * (cp[3] - cp[2]);
25 *
P = d0 + t * (d1 - d0);
60 if (
N || (dPdu && dPdv)) {
79 for (
int i = 0;
i < 4;
i++) {
112 for (
int i = 0;
i < 16;
i++) {
ATTR_WARN_UNUSED_RESULT const BMVert * v
void eval(float3 *P, float3 *dPdu, float3 *dPdv, float3 *N, const float u, float v) const override
void eval(float3 *P, float3 *dPdu, float3 *dPdv, float3 *N, const float u, float v) const override
#define CCL_NAMESPACE_END
VecBase< float, D > normalize(VecOp< float, D >) RET
VecBase< float, 3 > cross(VecOp< float, 3 >, VecOp< float, 3 >) RET
ccl_device_inline float interp(const float a, const float b, const float t)
static void decasteljau_bicubic(float3 *P, float3 *du, float3 *dv, const float3 cp[16], float u, const float v)
static CCL_NAMESPACE_BEGIN void decasteljau_cubic(float3 *P, float3 *dt, const float t, const float3 cp[4])
__forceinline void grow(const float3 &pt)