tsp:
Holy sh**
, somehow I had totally forgotten about your filter!
Sorry, and thanks for reminding.
Okay, just a quick test about precision, artefacts and speed:
As can be seen clearly, chaining blur()'s is practically unusable. Not only the color degrades, but note the banding artefacts on the wall, and the overall degradation for radii 24 and 64.
YV12convolution and VariableBlur seem very precise both.
FastGaussBlur is less precise, but IMHO sufficient for most "normal" requirements of blurring.
And the speed:
For each filter method, I let compute 10 chained instances of Gaussian Blurring with radius=16. In case of yv12convolution, I cheated a little: since I was too lazy
to create Pascal's Triangle up to the 34th line, I made radius=16 by applying 4 times radius=4
("1 8 28 56 70 56 28 8 1"). Dunno whether or not this put any penalty on yv12convolution, but still ... look below:
Results:
Code:
FastGaussBlur: 11.2 fps
VariableBlur: 6.9 fps
chained blur(): 1.8 fps
yv12convolution: 1.0 fps
Objections, anyone?