feDisplacement causes anomalous cracking of image
Reported by
dphilipd...@gmail.com,
Aug 3 2016
|
|||
Issue descriptionUserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Example URL: http://cs.sru.edu/~ddailey/svg/facewarp64.svg Steps to reproduce the problem: 1. As the feturbulence achieves certain levels the image cracks 2. It remains continuous in Firefox (used to in Opera as well -- old Opera) 3. I think it may be in the feTurbulence though it's hard to see unless you use it to distort something else. What is the expected behavior? Similar discrepances may be see in examples at http://srufaculty.sru.edu/david.dailey/cs337/filters.html see examples 30 and higher. Compare those to behavior in Firefox (or old Opera) What went wrong? The bitmapped images to which the filter is applied crackle Does it occur on multiple sites: Yes Is it a problem with a plugin? No Did this work before? N/A Does this work in other browsers? Yes Chrome version: 52.0.2743.116 Channel: stable OS Version: 10.0 Flash Version: Shockwave Flash 22.0 r0
,
Aug 4 2016
Confirmed, this bug doesn't happen in Safari either. @Senorblanco, can you route this?
,
Aug 4 2016
An example which makes the problem more apparent can be seen here: http://cs.sru.edu/%7Eddailey/svg/distortGrid0.svg Compare both speed and image quality between Chrome and Firefox.
,
Aug 4 2016
I'm not sure if we're outside compatibility here. I'll need to read the specs to be sure. The speed difference is likely because Firefox on Windows uses Direct2D IIRC, and the filters are accelerated. This will be fixed when GPU Rasterization is launched on Windows. (You can preview it today by setting "GPU Rasterization" to "Enabled" in chrome://flags.)
,
Aug 4 2016
I assume the image fidelity issue is a matter of only taking on sample from the "color" input. If so, senorblanco is right that we're not "outside compatibility" here (i.e how the sampling is to be performed - number of samples et.c - is not specified. The spec says: "When applying this filter, the source pixel location will often lie between several source pixels. Note: Depending on the speed of the available interpolents, this choice may be affected by the image-rendering property setting." (https://drafts.fxtf.org/filters/#feDisplacementMapElement; That note was added after the filter part of the spec was broken out, IIRC.) Fun fact: The viewer used to render the "reference" for the (only) feDisplacementMap test in the testsuite [1] did use bilinear interpolation (presumably 4-tap). [1] https://www.w3.org/Graphics/SVG/Test/20110816/harness/htmlObjectApproved/filters-displace-01-f.html
,
Aug 8 2016
Since our implementation is within spec, I'm going to mark this as WontFix. Our result on the repro and on the spec test case looks the same as Firefox on Mac (which also seems to be doing 1-tap).
,
Aug 9 2016
Does it make sense to pass this on to the SVG WG? It seems like the lack of clarity of the image after deformation is unacceptable from an artistic/visual perspective. If I'm understanding it correctly, then the filters folks with the Working Group, perhaps should think again about how the interpolation should be done. Or when you write "This will be fixed when GPU Rasterization is launched on Windows. " does that mean the interpolation will automatically improve? Perhaps the Working Group wrote the spec correctly and are just giving everyone a chance to get up to speed? Thanks for all your research here (and the fun fact!).
,
Aug 9 2016
Sorry, the "this will be fixed w/GPU rasterization" comment was with respect to speed, not quality.
,
Aug 9 2016
Thanks again. In case anyone's interested, I raised the issue with SVG-WG: https://lists.w3.org/Archives/Public/www-svg/2016Aug/0011.html.
,
Aug 10 2016
Any feedback on this should go to the "FX Taskforce" since they are the "group" managing the filters spec now[1]. Hopefully someone redirects it there from www-svg though...) [1] https://drafts.fxtf.org/filters/ see "Feedback" in the header. |
|||
►
Sign in to add a comment |
|||
Comment 1 by tkent@chromium.org
, Aug 3 2016