Full SVG filter primitive support.
Open, WishlistPublic


From comparing the filter tool and the svg spec...

Light filter primitives:

These guys aren’t filters by themselves, but more a component. Krita supports none of them.
Only has azimuth and elevation, much like the ones used by the phongbumpmap filter.
Uses an XYZ coordinate that can be used to derive a per-pixel lightvector.
Has an XYZ coordinate, but also XYZ coordinates defining the shape, a specular exponent and a limiting cone angle...

Actual filter primitives:

feBlend [Supported]
Compose two image together with a limited list of blending modes.
feColorMatrix [Supported]
Apply a color matrix to the input’s color(RGBA pixel only). Supports all modes(matrix, saturate, huerotate, luminanceToAlpha)
feComponentTransfer [Supported]
Transfer manipulate a single component of the image pixels. RGBA only. This is the basis of color adjustment filters like contrast/brightness/etc.
feComposite [Supported]
Performs porter-duff compositing operation on two inputs. All composite are supported.
feConvolve [Supported]
This gives a convolve filter effect, which are used in sobel filters, blur filters and sharpen filters. Don’t know enough about these to test it properly.
“This filter primitive lights an image using the alpha channel as a bump map. The resulting RGBA opaque image based on the light color with alpha 1.0 everywhere” So basically our phongbumpmap filter with channel set to ‘alpha’. “The lightsource is defined by the child elements feDistantLight, fePointLight and feSpotLight”
“This filter uses pixels from in2 to spatially displace in1”. This uses displacement XY coordinates, or, direction maps.
feFlood [Supported]
Fills the filter rectangle with a color.
feGaussianBlur [Supported]
Named ‘blur’ here. Does basic gaussian blur.
feImage [Supported]
Uses an image in the filter stack. Note: you can only select the source image but not change ‘preserveAspectRatio’ on it.
feMerge [Supported]
Merges inputs with over op.
feMorphology [Supported]
Performs erotion and dilation filters, giving fattening/thinning effects.
feOffset [Supported]
Adds an offset to the input.
See ‘diffuse lighting’ except that here it’s akin to the phongbumpmapfilter’s ‘specular’ component.
returns image tiled with the input image.
Generate a perlin noise pattern, on the basis of either fractals or noise.

will add more notes as I investigate further. It seems that diffuse lighting, displacement map, specular lighting, tile and tubulence are the last ones not supported. diffuse lighting and specular lighting have a cousin in the phongbumpmap filter, but that only uses something akin to the 'distant' lightsource.

From my own experiments, and looking around, it seems the best way to visualise SVG filters is via a node graph: http://electricbeach.org/?p=950
The current implementation is sorta going that way, but still insists on stacking everything vertically. It might need some thinking for the future...