[Bf-blender-cvs] [7193e5aa10a] blender-v3.4-release: Sculpt: Fix T102567: multires crash with high subdivision levels

Joseph Eagar noreply at git.blender.org
Sun Nov 20 16:32:04 CET 2022


Commit: 7193e5aa10a7fb4148eb00252944ee0bcfe74773
Author: Joseph Eagar
Date:   Sun Nov 20 07:30:14 2022 -0800
Branches: blender-v3.4-release
https://developer.blender.org/rB7193e5aa10a7fb4148eb00252944ee0bcfe74773

Sculpt: Fix T102567: multires crash with high subdivision levels

Previous fix did not work for ngons.
The pbvh leaf limit minimum is now set
to the maximum ngon's vertex count.

===================================================================

M	source/blender/blenkernel/intern/pbvh.c

===================================================================

diff --git a/source/blender/blenkernel/intern/pbvh.c b/source/blender/blenkernel/intern/pbvh.c
index 24ea2de98f6..2999d5db21f 100644
--- a/source/blender/blenkernel/intern/pbvh.c
+++ b/source/blender/blenkernel/intern/pbvh.c
@@ -834,11 +834,19 @@ void BKE_pbvh_build_grids(PBVH *pbvh,
   pbvh->grid_hidden = grid_hidden;
   pbvh->subdiv_ccg = subdiv_ccg;
 
+  /* Find maximum number of grids per face. */
+  int max_grids = 1;
+  MPoly *mpoly = BKE_mesh_polys(me);
+
+  for (int i = 0; i < me->totpoly; i++) {
+    max_grids = max_ii(max_grids, mpoly[i].totloop);
+  }
+  
   /* Ensure leaf limit is at least 4 so there's room
    * to split at original face boundaries.
    * Fixes T102209.
    */
-  pbvh->leaf_limit = max_ii(LEAF_LIMIT / (gridsize * gridsize), 4);
+  pbvh->leaf_limit = max_ii(LEAF_LIMIT / (gridsize * gridsize), max_grids);
 
   /* We need the base mesh attribute layout for PBVH draw. */
   pbvh->vdata = &me->vdata;



More information about the Bf-blender-cvs mailing list