[Soc-2011-dev] Weekly progress report #9 - Dynamic Paint
Miika Hämäläinen
miika.hamalainen at kolumbus.fi
Fri Jul 22 23:50:52 CEST 2011
> 1) what you did this week
I finished last weeks optimization experiments. While doing stress
testing on large scenes I also tracked down some old bugs.
Instead of octree I decided to use a regular grid as a space
partitioning structure. Generating it is fast enough to not outweight
resulting speedup on moving surfaces, when grid has to be recalculated
every frame. Using this method I achieved up to 10x speedup on a
non-moving 2048x2048 image sequence surface using 5 substeps. For vertex
surfaces the speedup is usually insignificant because Blender's viewport
performance drops earlier.
I also managed to greatly improve particle brush performance when using
random sized particles. In that case it's not possible to just check
closest particle but all particles within randomized range have to be
considered. Previously speed dropped exponentially as particle count and
radius increased. With new optimizations I tested 6x speedup when using
20.000 particles and increase should be much higher with even more
particles.
Here is a full commit log:
* Surface bake data is no longer recalculated every frame, but only when
surface mesh has moved/transformed. Results in multiple times better
performance on high resolution surfaces when using sub-steps or surface
is still.
* Heavily optimized particle brushes when random particle size enabled.
Up to 10x speedup with large radius particles.
* Added an additional "grid" space partitioning structure for surfaces.
* Added bounding box checks for brushes.
* Smaller overall optimization.
* Further OpenMP parallelization.
* Added physics tab link to modifier panel.
* Fix: "Point Density" texture cache wasn't properly updated. Brushes
can now use Point Density textures as well.
* Fix: Paint dissolve resulted in black color.
* Fix: KD-tree checkups weren't completely thread safe. Fixes possible
crash with OpenMP enabled particle brushes.
* Fix: When brush was set to use a specific material, it was saved
incorrectly and resulted in potential crashes on next load.
> 2) what you will do next week
Next week I'm going to do smaller improvements and tweaking based to-dos
I gathered during previous weeks.
More information about the Soc-2011-dev
mailing list