30 const float *curve_radius,
37 const float *curve_radius,
42 const float *curve_radius,
43 const float4 *key_steps,
44 size_t num_curve_keys,
49 float4 r_keys[2])
const;
51 const float *curve_radius,
52 const float4 *key_steps,
53 size_t num_curve_keys,
60 float4 r_keys[4])
const;
63 const float *curve_radius,
64 const float4 *key_steps,
65 size_t num_curve_keys,
70 float4 r_keys[2])
const;
72 const float *curve_radius,
73 const float4 *key_steps,
74 size_t num_curve_keys,
81 float4 r_keys[4])
const;
104 void add_curve(
int first_key,
int shader);
114 int first = curve_first_key[i];
115 int next_first = (i + 1 < curve_first_key.size()) ? curve_first_key[i + 1] : curve_keys.size();
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();
141 float4 *curve_key_co,
int motion_step(float time) const
void resize_curves(int numcurves, int numkeys)
void add_curve(int first_key, int shader)
Curve get_curve(size_t i) const
bool need_shadow_transparency()
void compute_bounds() override
void reserve_curves(int numcurves, int numkeys)
size_t curve_segment_offset
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 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 add_curve_key(float3 loc, float radius)
#define CCL_NAMESPACE_END
#define NODE_SOCKET_API_ARRAY(type_, name)
ccl_gpu_kernel_postfix ccl_global KernelWorkTile * tiles
void cardinal_motion_keys(const float3 *curve_keys, const float *curve_radius, const float4 *key_steps, size_t num_curve_keys, size_t num_steps, float time, size_t k0, size_t k1, size_t k2, size_t k3, float4 r_keys[4]) const
void bounds_grow(const int k, const float3 *curve_keys, const float *curve_radius, BoundBox &bounds) const
void cardinal_keys_for_step(const float3 *curve_keys, const float *curve_radius, const float4 *key_steps, size_t num_curve_keys, size_t num_steps, size_t step, size_t k0, size_t k1, size_t k2, size_t k3, float4 r_keys[4]) const
void bounds_grow(float3 keys[4], BoundBox &bounds) const
void motion_keys(const float3 *curve_keys, const float *curve_radius, const float4 *key_steps, size_t num_curve_keys, size_t num_steps, 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, size_t num_curve_keys, size_t num_steps, size_t step, size_t k0, size_t k1, float4 r_keys[2]) const