Animation paintop, bad performance

LukasT.dev@gmail.com lukast.dev at gmail.com
Sun Oct 10 00:29:13 CEST 2010


Hello,

I'm working on my features for 2.4: "Finish animation-based paintop 
(experiment, fluid simulation)"

I wanted to finish the experiment paintop and I found that it might mimic one 
feature from Alchemy ( http://al.chemy.org/download/ ), that David Revoy is 
using on the painting DVD in the first phase  of the painting. He is usually 
using it with mirror feature , that is also on my TODO for 2.4.

The feature look like this [1]. In Alchemy it is much more faster :-/
But that is probably architecture reason. I'm trying to find some great 
solution for Krita.

So far I solve it like this:
I reuse proof-of-concept in the experimental paintop where every new dab is 
rendered like this : I use oldRawData from the layer to clean the previous dab 
and actual dab is rendered. I do it by copying the data using old iterators.

1. First optimization could be using the new iterators. Both for copying and 
for fillPainterPath
2. Then I thought that testing something like readbytes might be faster but 
there is no readbytes for oldRawData -- can we have one or it is complicated?
3. Cyrille suggested me when I was starting with experiment paintop long time 
ago to cancel last transaction. How can I do that?
4. Here goes your idea to make it super-duper fast: ...


Video, you can see that it is slow when I draw bigger area
[1] http://lukast.mediablog.sk/videos/krita-experiment-shapes.ogv

Patch
http://lukast.mediablog.sk/patches/new-alchemy-think-animation-paintop.patch

Callgrind log
http://lukast.mediablog.sk/patches/experiment-callgrind.tar.gz


More information about the kimageshop mailing list