crypt of decay [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

must... write... code... cannot... stop... [Mar. 5th, 2018|07:08 am]
[Tags|]

запилил таки в нановегу клипинг (и он даже не шибко тормозит), кобминаторы для клипмасок, и заодно впилил linear gradient with «middle» stop point (то есть, трехцветный). последний удобен для создания всяких хипсторских кнопок одним вызовом закрашивалки, а не двумя. и ещё выправил растеризатор безьерок, чтобы он не уходил в долгую рекурсию на «вырожденых в линию» курвах.

всё, на этом надо прекращать. там, конечно, ещё не хватает dashed strokes, но мне откровенно лень их делать. потому что это надо перепиливать тесселятор строков, и ну его нафиг. диды без этого жили — и мы проживём.
Link2 meows|meow!

ну бля... [Feb. 24th, 2018|02:25 pm]
[Tags|]

только-только всё, закончил, больше API не надо, пора уже и… и вот хуй. вспомнил, что хотелось иметь возможность «записать» кучку путей, и потом отрендерить их без повторной тесселяции. пришлось допиливать. выходит немного уродливо, но дело делает.

заодно вкинул pre-rendering affine transform, которое делается на GPU в vertex shader. нужно для того, чтобы двигать и крутить сохранённые пути (нет, менять размеры нельзя, а то antialiasing и stroking пойдёт по пизде, из-за поехавших границ и слетевших antialias fringe).
Link3 meows|meow!

вотбля [Feb. 24th, 2018|12:04 am]
[Tags|, ]

есть такой алгоритм для растеризации безьерок: «adaptive forward differencing». он нерекурсивный, но в среднем чуть-чуть медленней, чем обычный рекурсивный. за одним исключением: рекурсивный растеризатор атомно сосёт на «вырожденых» безьерках (которые представляют из себя линию). адаптивный же на них ОХУИТЕЛЬНО БЫСТРЫЙ. почти как просто линию нарисовать.

то есть, я зря переписывал NanoSVG. сейчас замерил: с AFD скорость растеризации ~46000 безьерок примерно такая же, как с рекурсивным ~7000 безьерок плюс остальное линиями (для интересующихся: без AFD — ~200 миллисекунд, с AFD — ~20 миллисекунд; да, оно того стоило). в итоге добавил простую проверку на приблизительную коллинеарность точек кривой, и если да — то вызываю AFD, иначе делаю рекурсию. в итоге старый выхлоп NanoSVG рендерится с такой же скоростью, что и новый.

ну хуй с ним, тащемта: всё равно получать нормальный путь из NanoSVG прельстиво.
Linkmeow!

ну и пуркуа бы и да [Feb. 22nd, 2018|05:59 pm]
[Tags|]

раз уж NanoVega умеет в even-odd fill rule, то добавил API для выдёргивания аутлайнов из ttf. можно сразу к текущему nvg path добавлять, а можно получить отдельно и развлекаться способами посложнее.
Linkmeow!

navigation
[ viewing | most recent entries ]