29 const float *curve_radius,
36 const float *curve_radius,
41 const float *curve_radius,
43 const size_t num_curve_keys,
44 const size_t num_steps,
50 const float *curve_radius,
52 const size_t num_curve_keys,
53 const size_t num_steps,
62 const float *curve_radius,
64 const size_t num_curve_keys,
65 const size_t num_steps,
71 const float *curve_radius,
73 const size_t num_curve_keys,
74 const size_t num_steps,
103 void add_curve(const
int first_key, const
int shader);
113 const int first = curve_first_key[
i];
114 const int next_first = (
i + 1 < curve_first_key.size()) ? curve_first_key[
i + 1] :
117 Curve curve = {first, next_first - first};
123 return curve_keys.size();
128 return curve_first_key.size();
133 return curve_keys.size() - curve_first_key.size();
int motion_step(const float time) const
Geometry(const NodeType *node_type, const Type type)
bool is_traceable() const
void add_curve_key(const float3 co, const float radius)
bool need_shadow_transparency()
Curve get_curve(const size_t i) const
void compute_bounds() override
size_t curve_segment_offset
void add_curve(const int first_key, const int shader)
size_t num_curves() const
bool update_shadow_transparency(Device *device, Scene *scene, Progress &progress)
void get_uv_tiles(ustring map, unordered_set< int > &tiles) override
void copy_center_to_motion_step(const int motion_step)
void resize_curves(const int numcurves, const int numkeys)
void pack_curves(Scene *scene, float4 *curve_key_co, KernelCurve *curve, KernelCurveSegment *curve_segments)
size_t num_segments() const
CurveShapeType curve_shape
void clear(bool preserve_shaders=false) override
void apply_transform(const Transform &tfm, const bool apply_to_motion) override
PrimitiveType primitive_type() const override
void reserve_curves(const int numcurves, const int numkeys)
#define CCL_NAMESPACE_END
VecBase< float, D > step(VecOp< float, D >, VecOp< float, D >) RET
#define NODE_SOCKET_API_ARRAY(type_, name)
ccl_gpu_kernel_postfix ccl_global KernelWorkTile * tiles
void bounds_grow(const int k, const float3 *curve_keys, const float *curve_radius, BoundBox &bounds) const
void cardinal_motion_keys(const float3 *curve_keys, const float *curve_radius, const float4 *key_steps, const size_t num_curve_keys, const size_t num_steps, const float time, size_t k0, size_t k1, size_t k2, size_t k3, float4 r_keys[4]) const
void bounds_grow(const float3 keys[4], BoundBox &bounds) const
void cardinal_keys_for_step(const float3 *curve_keys, const float *curve_radius, const float4 *key_steps, const size_t num_curve_keys, const size_t num_steps, const size_t step, size_t k0, size_t k1, size_t k2, size_t k3, float4 r_keys[4]) const
void motion_keys(const float3 *curve_keys, const float *curve_radius, const float4 *key_steps, const size_t num_curve_keys, const size_t num_steps, const float time, size_t k0, size_t k1, float4 r_keys[2]) const
void keys_for_step(const float3 *curve_keys, const float *curve_radius, const float4 *key_steps, const size_t num_curve_keys, const size_t num_steps, const size_t step, size_t k0, size_t k1, float4 r_keys[2]) const