From 88bb29dea668df8cc46aa7f55895f229748bdbb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dietrich?= Date: Thu, 12 Nov 2020 08:55:18 +0100 Subject: [PATCH] Fix T82617: artifacts in Cycles viewport when changing subdivision attributes The old attributes were not cleared when synchronizing the geometries, this could also lead to crashes in other cases. Ref T82608. --- intern/cycles/blender/blender_curves.cpp | 1 + intern/cycles/blender/blender_mesh.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/intern/cycles/blender/blender_curves.cpp b/intern/cycles/blender/blender_curves.cpp index 8344684ac64..964241e9904 100644 --- a/intern/cycles/blender/blender_curves.cpp +++ b/intern/cycles/blender/blender_curves.cpp @@ -855,6 +855,7 @@ void BlenderSync::sync_hair(BL::Depsgraph b_depsgraph, BL::Object b_ob, Hair *ha hair->set_value(socket, new_hair, socket); } + hair->attributes.clear(); foreach (Attribute &attr, new_hair.attributes.attributes) { hair->attributes.attributes.push_back(std::move(attr)); } diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp index 4bd4baec2e4..e85b4ee1fc6 100644 --- a/intern/cycles/blender/blender_mesh.cpp +++ b/intern/cycles/blender/blender_mesh.cpp @@ -1073,10 +1073,12 @@ void BlenderSync::sync_mesh(BL::Depsgraph b_depsgraph, BL::Object b_ob, Mesh *me mesh->set_value(socket, new_mesh, socket); } + mesh->attributes.clear(); foreach (Attribute &attr, new_mesh.attributes.attributes) { mesh->attributes.attributes.push_back(std::move(attr)); } + mesh->subd_attributes.clear(); foreach (Attribute &attr, new_mesh.subd_attributes.attributes) { mesh->subd_attributes.attributes.push_back(std::move(attr)); }