Consecutive Convolutions

Ed . schumifer at
Tue Dec 22 14:57:55 CET 2009


I am performing two consecutive convolution operations, one after each other in a filter (the Gaussian Blur filter in the review board). Of course, I need a temporary buffer to do this. Below is what I'm doing.

  KisPaintDeviceSP interm = new KisPaintDevice(*src);

  KisConvolutionPainter horizPainter(interm, dstInfo.selection());
  horizPainter.applyMatrix(kernelHoriz, src, srcTopLeft, srcTopLeft, size, BORDER_REPEAT);

  KisConvolutionPainter verticalPainter(dst, dstInfo.selection());
  verticalPainter.applyMatrix(kernelVertical, interm, srcTopLeft, dstTopLeft, size, BORDER_REPEAT);

The output I'm getting when I apply the rasterizing filter, is the result of the second convolution only. However, if I apply the filter as a filter layer, I get the combined result of both convolutions.

As boud suggested on IRC, I switched Krita to the old tile engine, and the results are correct in both cases. Therefore, the indication is that this is a problem with the new tile engine. Could anyone investigate further?
Windows Live: Friends get your Flickr, Yelp, and Digg updates when they e-mail you.
-------------- next part --------------
An HTML attachment was scrubbed...

More information about the kimageshop mailing list