29 if (step == numsteps) {
39 offset +=
step * numverts;
48 KernelGlobals kg,
int object,
float time,
int k0,
int k1, float4 keys[2])
55 const int maxstep = numsteps * 2;
56 const int step =
min((
int)(time * maxstep), maxstep - 1);
57 const float t = time * maxstep -
step;
66 motion_curve_keys_for_step_linear(kg, offset, numverts, numsteps, step, k0, k1, keys);
67 motion_curve_keys_for_step_linear(kg, offset, numverts, numsteps, step + 1, k0, k1, next_keys);
70 keys[0] = (1.0f - t) * keys[0] + t * next_keys[0];
71 keys[1] = (1.0f - t) * keys[1] + t * next_keys[1];
85 if (step == numsteps) {
97 offset +=
step * numverts;
108 KernelGlobals kg,
int object,
float time,
int k0,
int k1,
int k2,
int k3, float4 keys[4])
115 const int maxstep = numsteps * 2;
116 const int step =
min((
int)(time * maxstep), maxstep - 1);
117 const float t = time * maxstep -
step;
126 motion_curve_keys_for_step(kg, offset, numverts, numsteps, step, k0, k1, k2, k3, keys);
127 motion_curve_keys_for_step(kg, offset, numverts, numsteps, step + 1, k0, k1, k2, k3, next_keys);
130 keys[0] = (1.0f - t) * keys[0] + t * next_keys[0];
131 keys[1] = (1.0f - t) * keys[1] + t * next_keys[1];
132 keys[2] = (1.0f - t) * keys[2] + t * next_keys[2];
133 keys[3] = (1.0f - t) * keys[3] + t * next_keys[3];
ccl_device_inline int intersection_find_attribute(KernelGlobals kg, const int object, const uint id)
#define kernel_assert(cond)
const KernelGlobalsCPU *ccl_restrict KernelGlobals
#define kernel_data_fetch(name, index)
#define ccl_device_inline
#define CCL_NAMESPACE_END
@ ATTR_STD_MOTION_VERTEX_POSITION
T step(const T &edge, const T &value)
VecBase< float, 4 > float4