- From: Rick <graham.rick@gmail.com>
- Date: Fri, 29 May 2015 21:22:26 -0400
- To: Tavmjong Bah <tav.w3c@gmail.com>
- Cc: Amelia Bellamy-Royds <amelia.bellamy.royds@gmail.com>, "Smailus, Thomas O" <Thomas.O.Smailus@boeing.com>, "www-svg@w3.org" <www-svg@w3.org>
- Message-ID: <CAGDjS3deWczLi5GLnDnZ_wpjBmJDFPYDK7Z_e=ocqRa8wFv7qg@mail.gmail.com>
Do you have more information on that? On Fri, May 29, 2015 at 2:59 AM, Tavmjong Bah <tav.w3c@gmail.com> wrote: > On Thu, 2015-05-28 at 17:01 -0600, Amelia Bellamy-Royds wrote: > > What you're seeing is the result of the browsers' anti-aliasing > > approach (and applies in all browsers, as far as I know -- Chrome, at > > least, uses the same approach as Firefox and IE). > > > > > > Each individual shape is anti-aliased before compositing the shapes > > together, creating a shape (or line in this case) with partially > > transparent fringes 1 pixel wide. These partially transparent fringes > > blend together, even if the shapes themselves are opaque and the > > official geometric bounds of one shape completely overlaps the others. > > > > > > For this particular example (with strict horizontal/vertical lines), > > you can get an acceptable result by applying `shape-rendering: > > crispEdges`, which tells the browsers to round each individual shape > > to exact pixel borders instead of applying anti-aliasing. However, > > the same approach is less satisfactory when using curves or diagonal > > lines, as you lose the smoothing effect of the anti-aliasing. > > > > > > http://jsfiddle.net/thomassmailus/aLm6zpe6/7/ > > > > > > As to whether this is a spec problem or a browser problem: > > > > > > With the exception of the `shape-rendering: crispEdges` option, I > > don't think there is anything in the SVG specs that discusses how > > anti-aliasing should be applied. So it is a bit of an undefined > > behavior on the spec side. That said, the section on clipping paths > > does acknowledge that clipping paths can have aliased edges, which > > could create similar counter-intuitive results. For example, if you > > drew a shape and then applied a clipping path that exactly excluded > > the same shape, you could still have a visible fringe because of the > > anti-aliasing. > > > > > > Geometrically-precise clipping and compositing could have significant > > impacts on performance. Browsers would need to use vector operations > > for compositing in order to keep track of the exact geometry, before > > rasterizing (and anti-aliasing) the final result. This would limit > > the options for optimizing painting, and would preclude many types of > > hardware optimization. > > > > > > In other words, I don't think you will find support for making > > geometrically-precise compositing a requirement. However, it may be > > worth considering a new rendering hint property, whereby authors could > > request this behavior -- and accept the performance impacts! > > A rendering hint might be a good idea... Nvidia has demonstrated > rendering SVG on the GPU which is both very fast and gets rid of > aliasing problems (they render at a higher resolution and then scale > down). It might not be so far off in the future (in the life-time of the > SVG 2 spec) that GPU rendering of SVG becomes more common. > > Tav > > > > > > -- “I’ve always said, religion has given people great comfort in a world torn apart by religion,” - Jon Stewart
Received on Saturday, 30 May 2015 01:22:54 UTC