[prev in list] [next in list] [prev in thread] [next in thread]
List: cairo
Subject: Re: [cairo] color matrix filter in cairo and pixman
From: "Henry (Yu) Song - SISA" <hsong () sisa ! samsung ! com>
Date: 2012-07-12 15:00:45
Message-ID: 3955FA337689574EB32F94B12A7E6E9E1635D3CF () sisaex01sj
[Download RAW message or body]
Hi, All
Continuing what is left off. I have prototyped GL backend for Gaussian, convolution \
and color matrix. It is working for msaa compositor - you need msaa-capable driver \
and set env CAIRO_GL_COMPOSITOR=msaa. Gaussian filter is using two-passes for now. \
This means we have to first paint into a temp surface for the first pass and then \
paint back to the target surface with second pass. It is OK for large image, \
however, for small image, this is inefficient - it is better to do it in one pass, \
because the overhead of switching FBO. I will do it later once fix GL spans/traps \
compositor.
Thanks
Henry
-----Original Message-----
From: Henry (Yu) Song - SISA
Sent: Friday, June 29, 2012 6:00 PM
To: cairo@cairographics.org
Subject: color matrix filter in cairo and pixman
Hi, All
Continuing previous of gaussian and convolution matrix, I also add color matrix \
filter in cairo and pixman. I thought pixman is the most efficient place to add such \
filtering
ColorMatrix filter should be fairly common in SVG, and right now canvas2D uses \
javascript for color filtering. With this function implemented in cairo/pixman, we \
can do a better job in canvas 2D In addition, implementing in pixman should be at \
least as fast as what is currently implemented in webkit. If has clip, cairo/pixman \
is faster because it skips those pixels that are clipped out. We will also implement \
such filters in GL backend.
You can download cairo from git clone https://code.google.com/p/cairogles/ and then \
"git checkout release-filter", also clone my pixman from git clone \
https://code.google.com/p/pixman-samsung/ and checkoiut "colormatrix" branch. \
Attached are sample test code, source image and test result images for your testing. \
Please review and comment.
Thanks in advance
Henry
________________________________________
From: Henry (Yu) Song - SISA
Sent: Tuesday, June 26, 2012 9:13 AM
To: cairo@cairographics.org
Subject: gaussian filter and custom convolution filter
There has been several threads on how to design cairo APIs for blur and other \
filtering effects in the past, but no prototype implementation of ideas.
Since filtering effects are increasing becoming important and common in 2D graphics, \
such as SVG, CSS and 2D Canvas, I took the opportunity to propose few new APIs for \
filtering and implemented a prototype for them. There are two new filterings in the \
proposal/prototype
1. Implemented CARO_FILTER_GAUSSIAN for image backend. In addition to set filter \
type to CAIRO_FILTER_GAUSSIAN, I added few cairo APIs to allow set/get gaussian \
radius and sigma
2. Add a new cairo filter type - CAIRO_FILTER_CONVOLUTION. This is intended to allow \
apps to specify their own convolution matrix. a new API \
(cairo_pattern_set_convolution_matrix()) is provided for this purpose. An \
implementation for such custom filtering is also implemented for image backend.
I am aware that people have proposed chain-like APIs such that filtering effects can \
be chained together. I thought to achieve such effect we can use multiple filter \
effects.
The actual implementation can be downloaded from git clone \
https://code.google.com/p/cairogles/ and then "git checkout release-filter". Sample \
code, image and result image are also attached for your testing. The underlying \
implementation for cairo gaussian filter and convolution filters uses pixman \
convolution filter. The pixman convolution implementation is not optimized for \
gaussian, - would like to see/work on optimization for it.
Please review, comments are extremely welcome.
Thanks a lot.
Henry
--
cairo mailing list
cairo@cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic