Inkscape набирает скорость

При всех своих преимуществах редактор векторной графики Inkscape несколько нетороплив, особенно если дело доходит до большого количества объектов с фильтрами SVG. К счастью, в основном дереве разработки наконец-то появились изменения, заметно улучшающие положение вещей.

Речь идёт о проекте Google Summer of Code 2010, в рамках которого Кшиштоф Косиньский решил сразу несколько задач, а именно — переписывание отрисовки на Cairo и распараллеливание отрисовки фильтров SVG с помощью OpenMP.

Переписывание отрисовки на Cairo дало почти двухкратный прирост скорости рендеринга объектов со сплошной и градиентной заливкой, а также позволило исправить некоторые ограничения и ошибки. В частности, исправлены ошибки в отрисовке обводок, улучшена отрисовка больших линейных градиентов, а также исправлен рендеринг градиентов при определённом масштабе (для объекта размером в страницу A4 это от 400%). Исправления, касающиеся градиентов, требуют Cairo 1.11.2 и новее.

Для распараллеливания отрисовки объектов с применёнными фильтрами SVG была задействована технология OpenMP. Так что если у вашего компьютера многоядерный процессор, при рендеринге того же популярного гауссова размывания разница в скорости будет заметна невооружённым взглядом. Многопоточность поддерживается для всех фильтров SVG.

Напомним, что эта часть изменений уже находится в основном дереве разработки, а пользователям Ubuntu 11.04 и альфа-версий 11.10 доступна в PPA с ночными сборками. Но это не всё.

В репозитории с исходным кодом Inkscape появилась ещё одна ветка, gsoc-caching, в которой Кшиштоф публикует код своего текущего проекта Google Summer of Code, снова посвящённого ускорению отрисовки. На сей раз разработчик занялся кэшированием вывода.

Теперь иллюстрация рисуется на своей поверхности (surface) Cairo, а вспомогательная графика, такая как узлы и подсветка контуров — на своей. Благодаря этому программе больше не нужно перерисовывать на экране всю видимую часть документа с рамкой выделения или, скажем, подсвеченным контуром.

Больше того, если вы отключите автоматическое обновление контуров при редактировании, видимое на глаз ускорение будет наблюдаться даже при редактировании контуров с применёнными к ним фильтрами SVG.

Между делом Кшиштофу пришлось найти обходной путь для некоторых странностей Cairo в работе с обтравочными контурами. Приятным побочным эффектом этого стали исправления в работе с вложенными обтравочными контурами и возможность использовать текст в качестве обтравочного контура.

Вытащить эту ветку из Bazaar вы можете командой

$ bzr branch lp:~tweenk/inkscape/gsoc-caching

Результат обоих проектов будет доступен в версии 0.49. Точных календарных планов по её выпуску пока нет, но ориентировочно это будет зима 2011-2012. В ближайшее же время будет анонсирована версия 0.48.2, исправляющая ошибки текущей стабильной версии.

1 Trackback / Pingback

  1. GSoC2011: итоги для Inkscape | Мультимедиа в Linux

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*


Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.