[Bf-blender-cvs] [b35a96e195b] master: Fix T90346: particle force field self effect amount off by one

Philipp Oeser noreply at git.blender.org
Tue Aug 3 13:16:27 CEST 2021


Commit: b35a96e195b100dbad68721065f431b168b7945b
Author: Philipp Oeser
Date:   Tue Aug 3 12:36:59 2021 +0200
Branches: master
https://developer.blender.org/rBb35a96e195b100dbad68721065f431b168b7945b

Fix T90346: particle force field self effect amount off by one

When calculating the particle step in `get_effector_tot`, we have to
round up (otherwise we might get an extra round in the for-loop in
`BKE_effectors_apply` for certain cases).

Example from the report:
- 10.000 particles, Effector Amount 3
- was rounding the step down to 3333
- going into the for-loop for 0, 3333, 6666 and 9999 (4 times)
- now rounding the step up to 3334
- going into the for-loop for 0, 3334 and 6668 (3 times as desired)

Maniphest Tasks: T90346

Differential Revision: https://developer.blender.org/D12113

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

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

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

diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c
index fc1721eaf3a..334118ddf3f 100644
--- a/source/blender/blenkernel/intern/effect.c
+++ b/source/blender/blenkernel/intern/effect.c
@@ -861,7 +861,7 @@ static void get_effector_tot(
       int totpart = eff->psys->totpart;
       int amount = eff->psys->part->effector_amount;
 
-      *step = (totpart > amount) ? totpart / amount : 1;
+      *step = (totpart > amount) ? (int)ceil((float)totpart / (float)amount) : 1;
     }
   }
   else {



More information about the Bf-blender-cvs mailing list