27 const uint3 tri_vindex,
34 if (
step == numsteps) {
42 if (
step > numsteps) {
46 offset +=
step * numverts;
55 const uint3 tri_vindex,
62 if (
step == numsteps) {
70 if (
step > numsteps) {
74 offset +=
step * numverts;
95 const int maxstep = *numsteps * 2;
96 *
step =
min((
int)(time * maxstep), maxstep - 1);
97 *t = time * maxstep - *
step;
105 const uint3 tri_vindex,
122 verts[0] = (1.0f - t) *
verts[0] + t * next_verts[0];
123 verts[1] = (1.0f - t) *
verts[1] + t * next_verts[1];
124 verts[2] = (1.0f - t) *
verts[2] + t * next_verts[2];
142 const uint3 tri_vindex,
157 kg, tri_vindex, offset, numverts, numsteps,
step + 1, next_normals);
186 const uint3 tri_vindex,
198 const float w = 1.0f - u -
v;
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
ccl_device_inline int intersection_find_attribute(KernelGlobals kg, const int object, const uint id)
#define kernel_assert(cond)
#define kernel_data_fetch(name, index)
const ThreadKernelGlobalsCPU * KernelGlobals
#define ccl_device_inline
#define CCL_NAMESPACE_END
CCL_NAMESPACE_BEGIN ccl_device_inline T triangle_interpolate(const float u, const float v, const T f0, const T f1, const T f2)
static float normals[][3]
VecBase< float, D > normalize(VecOp< float, D >) RET
VecBase< float, D > step(VecOp< float, D >, VecOp< float, D >) RET
@ ATTR_STD_MOTION_VERTEX_NORMAL
@ ATTR_STD_MOTION_VERTEX_POSITION
ccl_device_inline bool is_zero(const float2 a)
ccl_device_inline float2 safe_normalize(const float2 a)
ccl_device_inline void motion_triangle_vertices(KernelGlobals kg, const int object, const uint3 tri_vindex, const int numsteps, const int numverts, const int step, const float t, float3 verts[3])
ccl_device_inline void motion_triangle_normals_for_step(KernelGlobals kg, const uint3 tri_vindex, int offset, const int numverts, const int numsteps, int step, float3 normals[3])
ccl_device_inline void motion_triangle_compute_info(KernelGlobals kg, const int object, const float time, const int prim, ccl_private uint3 *tri_vindex, ccl_private int *numsteps, ccl_private int *step, ccl_private float *t)
CCL_NAMESPACE_BEGIN ccl_device_inline void motion_triangle_verts_for_step(KernelGlobals kg, const uint3 tri_vindex, int offset, const int numverts, const int numsteps, int step, float3 verts[3])
ccl_device_inline void motion_triangle_vertices_and_normals(KernelGlobals kg, const int object, const int prim, const float time, float3 verts[3], float3 normals[3])
ccl_device_inline void motion_triangle_normals(KernelGlobals kg, const int object, const uint3 tri_vindex, const int numsteps, const int numverts, const int step, const float t, float3 normals[3])
ccl_device_inline float3 motion_triangle_smooth_normal(KernelGlobals kg, const float3 Ng, const int object, const uint3 tri_vindex, const int numsteps, const int step, const float t, const float u, const float v)