35 size_t curve_key_size = 0;
36 size_t curve_size = 0;
37 size_t curve_segment_size = 0;
39 size_t point_size = 0;
43 Mesh *mesh =
static_cast<Mesh *
>(geom);
45 vert_size += mesh->verts.size();
49 Hair *hair =
static_cast<Hair *
>(geom);
51 curve_key_size += hair->get_curve_keys().size();
64 progress.
set_status(
"Updating Mesh",
"Computing normals");
77 Mesh *mesh =
static_cast<Mesh *
>(geom);
79 if (mesh->shader_is_modified() || mesh->smooth_is_modified() ||
80 mesh->triangles_is_modified() || copy_all_data)
85 if (mesh->verts_is_modified() || copy_all_data) {
89 if (mesh->verts_is_modified() || mesh->triangles_is_modified() || copy_all_data) {
100 progress.
set_status(
"Updating Mesh",
"Copying Mesh to device");
108 if (curve_segment_size != 0) {
109 progress.
set_status(
"Updating Mesh",
"Copying Curves to device");
121 Hair *hair =
static_cast<Hair *
>(geom);
123 const bool curve_keys_co_modified = hair->curve_radius_is_modified() ||
124 hair->curve_keys_is_modified();
125 const bool curve_data_modified = hair->curve_shader_is_modified() ||
126 hair->curve_first_key_is_modified();
128 if (!curve_keys_co_modified && !curve_data_modified && !copy_all_data) {
147 if (point_size != 0) {
148 progress.
set_status(
"Updating Mesh",
"Copying Point clouds to device");
device_vector< uint > points_shader
device_vector< float4 > points
device_vector< KernelCurveSegment > curve_segments
device_vector< KernelCurve > curves
device_vector< packed_uint3 > tri_vindex
device_vector< float4 > curve_keys
device_vector< packed_float3 > tri_vnormal
device_vector< uint > tri_shader
device_vector< packed_float3 > tri_verts
void device_update_mesh(Device *device, DeviceScene *dscene, Scene *scene, Progress &progress)
bool is_pointcloud() const
size_t curve_segment_offset
size_t num_curves() const
void pack_curves(Scene *scene, float4 *curve_key_co, KernelCurve *curve, KernelCurveSegment *curve_segments)
size_t num_segments() const
void set_status(const string &status_, const string &substatus_="")
void copy_to_device_if_modified()
T * alloc(const size_t width, const size_t height=0)
#define CCL_NAMESPACE_END
void pack_verts(packed_float3 *tri_verts, packed_uint3 *tri_vindex)
size_t num_triangles() const
void pack_normals(packed_float3 *vnormal)
void pack_shaders(Scene *scene, uint *shader)
void pack(Scene *scene, float4 *packed_points, uint *packed_shader)
size_t num_points() const
unique_ptr_vector< Geometry > geometry