Blender Git Loki

Git Commits -> Revision a4a968f

Revision a4a968f by Bastien Montagne (master)
May 19, 2016, 12:44 (GMT)
Dynapaint: parallelize drip effect.

Was not so far, because this effect is not modifying its 'own' PaintPoint, which means
it's not threadsafe. Since a global lock (mutex or spinlock) would not be much efficient
(we need to lock a given point pretty much all the computaion cycle), and since locking
a same PaintPOint from different threads at the same time is *very* unlikely,
solution here is to use an 'array of locks', one for each PaintPoint (same thing as BLI_bitmap,
using atomic ops to set/clear bits).

Here in own test (complex dynapaint over a huge sphere combining all dynapaint types), it gives
20% speedup of the whole dynapaint simulation!

Note: maybe we'd want to move that kind of bitlock into BLI lib some day - not totally sure how,
so let's keep it local for now...

Commit Details:

Full Hash: a4a968fd99c0bf473f022a00b6cc756ee9d429cb
Parent Commit: 4b81012
Lines Changed: +128, -66

1 Modified Path:

/source/blender/blenkernel/intern/dynamicpaint.c (+128, -66) (Diff)
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021