Fix cycles crash when voxel attributes changed
This could happen e.g. when changing smoke type from flow to domain or connecting a volume shader with to a domain without an actual flow type around. Fixes T58569, T68359 Reviewers: brecht Maniphest Tasks: T58569, T68359 Differential Revision: https://developer.blender.org/D5478
This commit is contained in:
@@ -1002,6 +1002,9 @@ Mesh *BlenderSync::sync_mesh(BL::Depsgraph &b_depsgraph,
|
||||
oldcurve_keys.steal_data(mesh->curve_keys);
|
||||
oldcurve_radius.steal_data(mesh->curve_radius);
|
||||
|
||||
/* ensure bvh rebuild (instead of refit) if has_voxel_attributes() changed */
|
||||
bool oldhas_voxel_attributes = mesh->has_voxel_attributes();
|
||||
|
||||
mesh->clear();
|
||||
mesh->used_shaders = used_shaders;
|
||||
mesh->name = ustring(b_ob_data.name().c_str());
|
||||
@@ -1050,7 +1053,8 @@ Mesh *BlenderSync::sync_mesh(BL::Depsgraph &b_depsgraph,
|
||||
/* tag update */
|
||||
bool rebuild = (oldtriangles != mesh->triangles) || (oldsubd_faces != mesh->subd_faces) ||
|
||||
(oldsubd_face_corners != mesh->subd_face_corners) ||
|
||||
(oldcurve_keys != mesh->curve_keys) || (oldcurve_radius != mesh->curve_radius);
|
||||
(oldcurve_keys != mesh->curve_keys) || (oldcurve_radius != mesh->curve_radius) ||
|
||||
(oldhas_voxel_attributes != mesh->has_voxel_attributes());
|
||||
|
||||
mesh->tag_update(scene, rebuild);
|
||||
|
||||
|
Reference in New Issue
Block a user