Po trzech miesiącach intensywnej pracy, wydana została wersja 0.15 biblioteki wektorowej ThorVG, napisanej w języku C++ (standard C++14) i dystrybuowanej na licencji MIT. Biblioteka jest wykorzystywana do renderowania grafiki wektorowej w takich projektach jak Tizen OS, Godot Engine, LVGL i odtwarzacze dotLottie.
Grafika Wektorowa Thor (ThorVG) – to lekka i przenośna biblioteka z otwartym kodem źródłowym, przeznaczona do wizualizacji scen wektorowych i animacji, w tym formatów SVG Tiny 1.2, Lottie oraz własny format TVG (SVG skompresowany algorytmem LZW).
Biblioteka oferuje przyjazne API do importowania, tworzenia i wyświetlania grafiki wektorowej, a także do jej eksportu do różnych formatów graficznych, co czyni ją uniwersalną do stosowania w różnych platformach programowych i aplikacjach wizualizujących zawartość graficzną:
#include "Example.h" using namespace std; void exportGif() { auto animation = tvg::Animation::gen(); auto picture = animation->picture(); if (!tvgexam::verify(picture->load(EXAMPLE_DIR"/lottie/walker.json"))) return; picture->size(800, 800); auto saver = tvg::Saver::gen(); if (!tvgexam::verify(saver->save(std::move(animation), "./test.gif"))) return; saver->sync(); cout << "Successfully exported to test.gif." << endl; } int main(int argc, char **argv) { if (tvgexam::verify(tvg::Initializer::init(0))) { exportGif(); tvg::Initializer::term(); } return 0; }
Biblioteka zawiera również narzędzia lottie2gif, svg2png i svg2tvg.
Nowa wersja zawiera szereg istotnych usprawnień:
- znacznie poprawiono wydajność, funkcjonalność i stabilność silnika WebGPU;
- około trzykrotny wzrost wydajności renderowania konturów;
- zwiększona wydajność maskowania i różnych metod nakładania;
- znacząco zmniejszona obciążenie pamięci GPU;
- dodano wsparcie dla przycinania konturu i zarządzania widocznymi obszarami ekranu;
- znacznie poprawiono realizację animacji Lottie;
- największym dodatkiem w ThorVG jest wsparcie dla warstw w animacjach Lottie;
- dodano interaktywne możliwości w animacjach Lottie;
- ulepszono animację tekstu;
- poprawiono algorytm obliczania punktów kontrolnych krzywych Béziera z przesunięciem;
- dodano możliwość stosowania różnych efektów post-processingu do sceny;
- dodano wsparcie dla złożonych glifów tekstu;
- w silniku OpenGL poprawiono wydajność kompozycji;
- dodano nowe stabilne i eksperymentalne API;
- naprawiono wiele błędów.
Źródło: linux.org.ru
