LINUX.ORG.RU
ФорумTalks

А нет ли у нас проблем с рендерингом SVG?

 ,


0

1

Попробовал я тут повозиться с рендерингом SVG на Qt. Разумеется с полпинка всё криво и косо, но это мелочи. Не мелочи то, что 2MiB SVG на не древней машине реально тормозит.
Ок, новая для меня либа; я скорее всего делаю что-то неправильно. Но GTKшный просмотрщик из MATE тоже тормозит. Реально неудовлетворительно.
А масштабирование в моей программе будет чуть ли не самой часто ипользуемой фичей.
Неужели с SVG всё действительно так плохо? Может это гиблая идея? А может просто нужно подрезать детализацию и всё будет хорошо?

Deleted

Ответ на: комментарий от next_time

И что? Каких-то 2MiB векторов. Ну вот совсем-совсем не выглядит сложным. Да и рендерю я далеко не на 486.

Deleted
()
Ответ на: комментарий от Deleted

Каких-то 2MiB векторов.

Это вообще-то сложная задача, если нет аппаратного кодера.

DoctorSinus ★★★★★
()
Ответ на: комментарий от Deleted

Это ведь не растр, два метра кода это тебе не это. Ну и надо смотреть что за SVG, думаю при желании можно и в десяток килобайт запихать нечто делающее топовый проц задумчивым надолго

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

Ну и ладно. Там всё равно изображение избыточно детализированное: уверен, что его можно упростить раз в 10 без качественного ухудшения при использовании в моих целях.

Deleted
()
Ответ на: комментарий от deep-purple

Что значит «будет»? Она уже есть. Но она не заточена под динамическую отрисовку. Нужна отдельная реализация, и желательно на gpu.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Возможно не страшно. Я релиз пропустил, потому вопросы такие:

1) Где посмотреть как оно рендерит?

2) Тесты на больших данных есть? Интересует в сравнении с другими либами (да, я слышал что они не всё умеют, значит в сравнении с тем, что умеют другие).

3) В чём сложность отдать рендер на опенгл? Вот это я бы даже поглубже обсудил.

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

1. Есть демо на гихабе. Есть сравнитильная таблица в ридми.

2. Есть.

3. Я не знаю opengl. При этом есть проект azul, который использует resvg со своим opengl бекендом.

Без ссылок ибо с телефона.

RazrFalcon ★★★★★
()
Ответ на: комментарий от Deleted

2MiB пикселей это одно, а 2 MiB векторов над которыми надо сделать некоторые операции на процессоре, чтобы получить пиксели это совершенно другое.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

Нет, не странно. Метр в 100 раз длиннее сантиметра, но вряд ли кто скажет что метр это далеко (как же я устал придумывать примитивные аналогии чтобы даже до ЛОРовца дошло).

Deleted
()
Ответ на: комментарий от Unicode4all

Ну может на лопате есть какое ускорение для этого дела. В браузере на компе открывается тоже не катастрофически плохо. А вот обычными просмотрщиками и средствами Qt всё из рук вон плохо.

Deleted
()
Ответ на: комментарий от Deleted

Да, 2MiB пикселей это одно, а 2MiB векторов это другое. И что?

2MiB векторов понятие растяжимое.

Вот например

  1. <rect height="99.999999999999999999999999999999999999999999999999999999" width="55.5555555555555555555555555555555555555555555555555555555" y="-33.33333333333333333333333333333333333333333333333" x="0.0000000000000000000000000000000000000000000000001" id="XMLID_3_"/>
  2. <polygon id="polygon1" points="0,-4 4,-4 4,0 0,0     " fill="none"/>
    <polygon id="polygon2" points="0,-5 5,-5 5,0 0,0     " fill="none"/>

Первый «svg» будет намного больше второго по размеру файла.

Но отрисовывать проще первый потому как там всего лишь один прямоугольник, в то время как во втором «svg» целих два полигона.

А теперь интерполируй этот пример на SVG-файл со множеством объектов.

В случае с векторными рисунками важен не размер файла, а количество, тип и свойства объектов внутри SVG-файла.

atsym ★★★★★
()
Последнее исправление: atsym (всего исправлений: 3)
Ответ на: комментарий от Deleted

У чипов Adreno ещё с 205 есть таки аппаратное ускорение SVG. Да и вроде у современных десктопных карточек есть, но это я мельком так глядел, у Хуанга есть.

Unicode4all ★★★★★
()
Ответ на: комментарий от atsym

Это понятно и очевидно.
Но в итоге мы имеем тормоза при рендеринге карты мира средне-паршивой детализации.

Deleted
()
Ответ на: комментарий от Deleted

Да, странно. Ты сравниваешь сантиметр с килограммом. Отрисовка векторной графики в разы, если не на порядки, дольше.

Deleted
()
Ответ на: комментарий от Deleted

А что кешировать-то? Растр? Это жесть получится: масштабирование будет происходить в очень широком диапазоне. Никаких гигабайтов не хватит...

Deleted
()
Ответ на: комментарий от Deleted

А как иначе? Вот есть у вас фильтр размытия, его нужно каждый раз пересчитывать. Вот и прощай производительность.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Я пока посмотрю что можно сделать с самой SVGшкой. Там, как мне кажется, есть задел для оптимизации. Детализация мне не принципиальна и я могу ей пожертвовать.
Но уж в 21 веке-то идти на такие жалкие компромисы...

Deleted
()
Ответ на: комментарий от RazrFalcon

1. Демки тут

Жаль что в демке нет масштаба. Но мой 2MiB файлик открыла шустро, хотелось бы посмотреть на ресайз...

Deleted
()
Ответ на: комментарий от Deleted

Я его убрал, ибо тормозит. Можно просто окно растягивать. Но нужно учесть, что отрисовка идёт в отдельном потоке, чтобы GUI не подвисал.

RazrFalcon ★★★★★
()
Ответ на: комментарий от Deleted

У вас в файле 29469 кривых и больше ничего. То есть всё упирается в проц и конкретную реализацию отрисовки кривых.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Ну да, логично. И мы на современном уровне развития не можем просчитать 30 тысяч кривых за приемлемое время. Это плохо. Это вообще задница.

Deleted
()
Ответ на: комментарий от Deleted

Кривые Безье не такая уж и простая математическая задача. Нужно много вычислений.

RazrFalcon ★★★★★
()
Последнее исправление: RazrFalcon (всего исправлений: 1)
Ответ на: комментарий от Deleted

У гуглокарт же получается рисоваться, а они едва жрут оперативку. (Да, там везде растр, но операция получения очередного уровня детализации сопоставима с получением более детального рендера SVG-шки).

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.