Më 31 janar, pas një më shumë se një vit e gjysmë zhvillimi të pandërprerë, u lëshua versione 1.0 e një biblioteke të lehtë dhe portative për grafikën vektoriale në të gjitha platformat. ThorVG, e cila është e destinuar për vizualizimin e skenave dhe animacioneve vektoriale. Ajo mbështet ngarkimin e skedarëve në formate Lottie dhe SVG Tiny 1.2 (lista e mundësive të realizuara SVG Tiny në Wiki të projektit).
Biblioteka ofron API të lehta për përdorim për importimin, krijimin dhe shfaqjen e grafikës vektoriale, si dhe për eksportimin e saj në formate të ndryshme grafike, duke e bërë atë universale për përdorim në platformat dhe aplikacionet e ndryshme për vizualizimin e përmbajtjes grafike. Po ashtu, ofrohen utilitetet e konsolës lottie2gif dhe svg2png.
ThorVG përdoret për renderimin e grafikës vektoriale në projekte të tilla si Tizen OS, Godot Engine, LVGL dhe lojtarë dotLottie.
Projekti është shkruar në gjuhën C++ (standard C++14) dhe shpërndahet nën licencën MIT.
Ky Ă«shtĂ« jo vetĂ«m njĂ« pĂ«rditĂ«sim â Ă«shtĂ« njĂ« bazĂ« e riparuar pĂ«r grafikĂ«n vektoriale 2D me performancĂ« tĂ« lartĂ«, tĂ« shkallĂ«zueshme dhe tĂ« pĂ«rshtatshme pĂ«r tĂ« gjitha platformat dhe pajisjet. GjatĂ« zhvillimit, ThorVG ka evoluar nĂ« njĂ« motor grafik tĂ« pjekur, gati pĂ«r prodhim, qĂ« ka treguar cilĂ«si dhe performancĂ« tĂ« provuar nĂ« aplikacione reale.
ThorVG fitoi shpejt popullaritet dhe nxiti një interes në rritje nga komuniteti, duke reflektuar evolucionin e tij nga një projekt në fazë të hershme në një motor grafik vektorial të njohur dhe praktik, i gatshëm për përdorim real ndërshtetëror.
Lista e ndryshimeve:
- Kapacitetet e avancuara të renderimit të tekstit, efekte vizuale të pasura dhe mbështetje e saktë për mbivendosje për një shprehje grafike të përmirësuar.
- Mbështetje për përputhjen horizontale dhe vertikale, e cila lejon kontrolle të sakta të vendosjes së tekstit në kontekste të ndryshme të ndërfaqes së përdoruesit.
- Automatizimi i ndarjes së rreshtave me mundësinë për të zgjedhur modalitetin: sipas simboleve, sipas fjalëve, ndarje inteligjente dhe shkurtesa me pika për të trajtuar mbingarkesat.
- Mbështetje për ndarjen manuale të rreshtave, duke lejuar zhvilluesit të kontrollojnë qartazi ndarjet e rreshtave me simbolet e reja të rreshtit, si \n. Kjo lejon formatizimin e saktë të blloqeve të shumtë të tekstit, veçanërisht në dizajne dinamike ose animacione teksti.
- Mbështetje për distancë të personalizuar midis simboleve, e cila lejon rregullimin e saktë për të përmirësuar lexueshmërinë ose për të arritur stile specifike tipografike.
- Mbështetje për rrethimin e tekstit, duke lejuar krijimin e efekteve stilistike dhe përmirësimin e kontrastit mbi fonde të ndryshme (skrinshot 1).
- ĂshtĂ« prezantuar njĂ« sistem mĂ« kompleks dhe tĂ« harmonizuar tĂ« modove tĂ« pĂ«rzierjes, qĂ« pĂ«rmirĂ«son ndjeshĂ«m sjelljen e modove tĂ« pĂ«rzierjes dhe sjell formula dhe logjikĂ«n e kompozimit nĂ« pĂ«rputhje me standardet e industrisĂ«, si Lottie, SVG dhe specifikimin W3C "Compositing and Blending". KĂ«to pĂ«rmirĂ«sime ofrojnĂ« njĂ« koherencĂ« vizuale mĂ« tĂ« madhe dhe kompatibilitet ndĂ«rplatformor, veçanĂ«risht nĂ« proceset e punĂ«s nĂ« web dhe animacion.
- Janë implementuar dhe mbështetur mode të ndryshme përzierjeje: "Nuanca", "Shtimi", "Ngjyra" dhe "Ndritshmëria" me përdorimin e kompozitës së hapësirës së ngjyrave HSL. Këto mode përmirësojnë kompatibilitetin me efektet e shtresave Lottie dhe mbështetje të ardhshme për përzierjen SVG (screenshot 2).
- Përmirësime dhe zgjerime të rëndësishme në efektet vizuale në nivelin e skenës, duke e bërë grafiken vektoriale më të shprehshme dhe vizualisht më të pasur:
- Efekti i hijes me filtrin e zbehjes Gaussiane (video-demonstrim).
- Metodat e zëvendësimit të ngjyrave, të cilat ndryshojnë pamjen e grafikës duke e ripërcaktuar mënyrën e aplikimit, përzierjes ose përshtatjes së ngjyrave në bazë të nuancës (video-demonstrim).
- Funksione të reja ndihmëse janë shtuar për të zgjeruar mundësitë interaktive. Këto përfshijnë mbështetje për kërkesa për informacion hapësinor (demonstrim) dhe zbulimin e goditjeve në objektet e paraqitura (video-demonstrim).
- Mundësi të zgjeruara të animacionit Lottie për riprodhim në shumë platforma, duke përfshirë presetet modulare të Web Player, të optimizuara për madhësi, performancë dhe modin e renderimit (CPU/GPU)
- Përmirësime të dukshme në mbështetje të animacionit Lottie, me përmirësimin e pajtueshmërisë, fleksibilitetit dhe ndërveprimit në të gjitha platformat. Jo vetëm që është zgjeruar spektri i funksioneve dhe shprehjeve të mbështetura Lottie, por janë ofruar dhe mjete për zhvilluesit që lejojnë kontrollin dinamik të sjelljes së animacionit gjatë ekzekutimit, duke e bërë ThorVG një nga bibliotekat më të fuqishme për riprodhimin e Lottie që janë në treg. Lista e mundësive të realizuara në Wiki të projektit.
- Derikëto, pragu i skedarit .lot është një standard i ri zyrtar IANA për skedarët Lottie. ThorVG tani mbështet zyrtarisht .lot si formatin standard të skedarëve Lottie, përveç shtrirjes tradicionale .json.
- Twining
- Shto është e re? Shtuar mbështetje për ndërlidhjen ndërmjet çelësave kryesorë jolinjare, duke siguruar kalime më të lëmuara dhe menaxhim më të saktë të kohës. Kjo përmirësim është veçanërisht efektiv kur përdoret me luajtjen e animacionit të bazuar në gjendje (e njohur gjithashtu si luajtje e bazuar në shënjues) në Lottie. Në shumë raste, animacionet janë të destinuara për të kaluar ndërmjet gjendjeve në mënyra komplekse dhe jolinjare. Lottie tradicionale me strukturën e saj rigoroze të kohës ka vështirësi të përballojë këto skenare, gjë që shpesh rezulton në përplasje të papritura ose të çuditshme gjatë kalimeve ndërmjet çelësave kryesorë të papërputhshëm: video-demonstrim 1, video-demonstrim 2.
- Me ndihmën e twining, zhvilluesit tani mund të bëjnë interpolimin drejtpërdrejt ndërmjet dy çelësave kryesorë të veçantë, edhe pse ata nuk janë jolinjare në vijën time. Kjo lejon arritjen e efekteve vizuale më natyrale dhe më të lëmuara gjatë kalimeve ndërmjet gjendjeve, çka rrit ndjeshëm fleksibilitetin dhe realitetin e animacioneve interaktive: video-demonstrim 1, video-demonstrim 2.
- Tani (si një funksion eksperimental) tani mbështet ri-shkruarjen e vlerave të variablave të shprehjeve gjatë ekzekutimit, duke lejuar që logjika e skriptit të ekzekutohet dinamikisht në bazë të inputit të përdoruesit. Kjo e bën atë një mjet shumë të fuqishëm për krijimin e animacioneve interaktive duke përdorur burimet Lottie, duke lejuar krijimin e variacioneve të personalizuara që tejkalojnë dizajnin origjinalvideo-demonstrim).
- Shtuar një mekanizëm të personalizueshëm të Asset Resolver, që ofron fleksibilitet më të madh gjatë ngarkimit të burimeve të jashtme (p.sh., imazheve) të cilat referohen në animacionet Lottie.
- Mbështetje e zgjeruar për funksionin Lottie LayerEffect, që mundëson përmirësime të pasura vizuale direkt në nivelet e animacionit me efektet e përshkruara më lart.
- Duke disa efekte mund të kërkojnë burime, është propozuar një opsion për të rregulluar cilësinë dhe performancën për rendering-un e efekteve, që është ideale për optimizimin në platforma me burime CPU të kufizuara. Kjo u jep zhvilluesve kontroll mbi saktësinë e rendering-ut dhe optimizimin e performancës në varësi të platformës që synohet.
- Mbështetje për shprehjet është zgjeruar me shtimin e funksioneve dhe pronave kyçe si më poshtë:
- wiggle, temporalWiggle: aplikim i lëvizjes së rastësishme, që varet nga koha.
- pointOnPath: llogaritja e pozicionit përgjatë një rruge.
- propertyIndex, groupIndex: referencë në indeksin e pronës ose grupit.
- value, property, effect: qasje në vlerat e pronave dhe efekteve të jashtme.
- Përputhje më e saktë me spesifikimet:
- TextFollowPath â njĂ« specifikim i ri qĂ« lejon tekstin tĂ« ndjekĂ« rrugĂ« vektoriale tĂ« rastĂ«sishme (video-demonstrim).
- Parametrat e justifikimit tĂ« tekstit â njĂ« shfaqje mĂ« e saktĂ« e shtresave tĂ« tekstit nĂ« pĂ«rputhje me konfigurimet e justifikimit horizontal dhe vertikal (video-demonstrim).
- Zgjerimi i maskĂ«s â njĂ« funksion i ri qĂ« lejon kontroll mĂ« tĂ« saktĂ« mbi ndikimin e formĂ«s sĂ« maskĂ«s nĂ« kompozitĂ«n vizuale (video-demonstrim).
- SVG
- ThorVG tani lejon qasje në elemente të veçanta SVG dhe t'i ndryshojë ato përmes atributave unikë id, të përcaktuara në skedarin burimor SVG. Kjo funksion lejon zhvilluesit të zgjedhin dhe manipulojnë drejtpërdrejt figura specifike vektoriale në skenën SVG të importuar, e cila është ideale për skenarë interaktivë ose dinamikë (p.sh., dizajni tematik, theksimi).
- Mbështetje efekti i mjegullësisë Gaussian.
- Renderimi inteligjent
- Engine-i ThorVG tani mbështet renderimin inteligjent të pjesshëm, i cili siguron flukse më efikase të renderimit duke përditësuar vetëm ato pjesë të skenës vektoriale që kanë ndryshuar. Falë ndjekjes së brendshme të zonave të ndryshuara, minimizon rifutat e panevojshme dhe optimizon performancën e përgjithshme. Kjo veçori ofron përfitime të konsiderueshme në skenarë të tillë si renderimi i ndërfaqeve të përdoruesit, mjetet e dizajnit ose aplikacionet ku një pjesë e madhe e skenës mbetet statike, ndërsa midis kadrove azhurnohet vetëm elementi i vogël. Në këto raste, heqja e renderimit të plotë të skenës mund të zvogëlojë ndjeshëm ngarkesën llogaritëse dhe të rrisë efikasitetin energjetik, e cila është veçanërisht e çmuar për sistemet mobile dhe të integruara.
- Për të arritur këtë qëllim, ThorVG 1.0 aplikon një kombinim metodash algoritmike, të zhvilluara posaçërisht për renderimin e pjesshëm. Më poshtë janë strategjitë kryesore që qëndrojnë në themel të këtij sistemi:
- Algoritmi i kalimit linear: figurat renditen sipas koordinatave x, dhe aplikohet një strategji kalimi linear për të reduktuar verifikimet e panevojshme të "zona të pisë". Kjo e ul kompleksitetin nga O(N à M) në O(N + M + K + N log N), ku N është numri i figurave, M është numri i zonave "të pisë", dhe K është numri i mbivendosjeve reale.
- Ndërprerja dhe bashkimi kusht: ndarja e imët e subzonave është e balancuar me një bashkim inteligjent për të shmangur fragmentimin. Në këtë rast, prioriteti jepet bashkimit horizontal për një përdorim më efikas të caches së memories.
- Ndarja hapĂ«sinore (default 4Ă4 grid): sipĂ«rfaqja e renderimit ndahet nĂ« 16 zona, duke lejuar qĂ« tĂ« kontrollohen vetĂ«m zonat "e pisĂ«" pĂ«rkatĂ«se tĂ« figurave, duke reduktuar ndjeshĂ«m shpenzimet gjatĂ« pĂ«rditĂ«simeve komplekse tĂ« ndĂ«rfaqes sĂ« pĂ«rdoruesit.
- Duke punuar së bashku, këto teknika sigurojnë një renderim më të qetë dhe më të shpejtë, veçanërisht në sisteme të integruara ose sistema në kohë reale, ku shpesh ndodhin përditësime të pjesshme. Informacione më të detajuara do të publikohen në një postim të veçantë. blogu.
- Kujdesi, që në rastin e përmbajtjeve me dinamikë të lartë, si lojërat dinamike ose animacione me ekran të plotë, ku pothuajse të gjitha objektet ndryshojnë në çdo kadër, renderimi i pjesshëm ofron pak ose asnjë përparësi në performancë dhe madje mund të shkaktojë disa kosto shtesë. Në këto raste, zakonisht është më e mira të zgjidhni renderimin e plotë të skenës. Për këtë arsye, ThorVG mbështet si konfigurimin e pjesshëm ashtu edhe atë të plotë të renderimit, duke ju dhënë mundësinë të zgjidhni qasjen optimale për rastin tuaj të përdorimit. Ju mund të analizoni performancën e produktit tuaj dhe të merrni një vendim të informuar, duke përdorur opsionin Meson -Dpartial=[true/false] dhe opsionin EngineOption::Smart të klasës SwCanvas:
auto canvas = SwCanvas::gen(EngineOption::Smart);
- Epokë e re e integrimit të teknologjive web me WebGL, WebGPU dhe WebCanvas të lehtë për një renderim pa shqetësime në shfletues.
- Backend-ët WebGL dhe WebGPU tani janë zyrtarisht gati për përdorim në prodhim. Këta renderues të bazuar në GPU tani ofrojnë përputhshmëri të plotë funksionale me backend-in tradicional CPU, duke mbështetur të gjitha mundësitë e ThorVG Canvas me të njëjtin cilësi dhe stabilitet të imazhit. Krahasuar me versionin 0.15, performanca e renderimit GPU u rrit me më shumë se 150%, që siguron një përmirësim të rëndësishëm në renderimin e grafikës vektoriale web në kohë reale.
- Përmirësim i dukshëm i performancës në mjedise me kufizime të energjisë CPU/GPU dhe mjedise të integruara
- ThorVG 1.0 ofron një performancë të përmirësuar krahasuar me versionin 0.15, me një rritje të dukshme si në CPU ashtu edhe në GPU.
- Optimalizimet kryesore:
- Efiçencë e përmirësuar e konvejerit të renderimit.
- Kostot e reduktuara të alokimit të tamponit të kuadrit.
- Analiza e optimizuar e kompozitave Lottie.
- Renderimi dhe ruajtja me grumbullim të përmirësuar GPU.
- ThorVG është optimizuar për rasterizimin bazuar në CPU, me fokus në vizualizimin vektorial në mjedise ku burimet GPU janë të kufizuara, të paqena ose qëllimisht të papërdorura. Në testet tipike të CPU, ThorVG tregon një performancë mesatare 1.8 herë më të lartë në krahasim me motorin e njohur të grafikut vektorial Skia gjatë kryerjes së detyrave tipike të vizualizimit vektorial. Avantazhi është veçanërisht i dukshëm në skenarët me përdorim intensiv të gjeometrisë, siç janë vizualizimi i katrorëve, vijave të zgjedhura, rrotullimeve dhe rrethave (screenshot 3).
- ThorVG Janitor
- NjĂ« demonstrim real i performancĂ«s sĂ« renderimit tĂ« ThorVG mund tĂ« shihet nĂ« projektin ThorVG Janitor â njĂ« lojĂ« interaktive, e zhvilluar pĂ«r tĂ« demonstruar performancĂ«n e procesorit nĂ« ngarkesĂ« tĂ« lartĂ« grafike. Scenari pĂ«rfshin qindra armiq tĂ« krijuar me grafikĂ« tĂ« bazuar nĂ« grimca, sfond shumĂ«planĂ«sh tĂ« qiellit tĂ« yjeve me imazhe raster tĂ« plota, efekte vizuale nĂ« kohĂ« reale, si DropShadow dhe Blur, si dhe deri nĂ« 25000 objekte qĂ« renderohen njĂ«kohĂ«sisht. Edhe nĂ« ngarkesĂ« maksimale me zgjidhje 2K (2048Ă1152), projekti tregon performancĂ« tĂ« qĂ«ndrueshme mbi 120 FPS, duke theksuar efikasitetin dhe pĂ«rshtatshmĂ«rinĂ« e ThorVG pĂ«r mjedise komplekse me shumĂ« efekte (video-demonstrim, screenshot).
- Ndryshime të tjera të rëndësishme
- Shembulli i integrimit të ThorVG në Godot. Në këtë video-demostrim ThorVG është i integruar me Godot në një mjedis web për renderimin e qindra objekteve të animacionit Lottie me më shumë se 120 kadra për sekondë. Kjo demostrim tregon potencialin e ThorVG në mjedisin web për animacione të lira dhe me cilësi të lartë gjatë ekzekutimit.
- Shtuar shembulli mësimor përdorimit të ThorVG WebCanvas.
- Shtohet një interaktiv ThorVG Playground.
- Shtohet një wrapper ThorVG për gjuhën Swift: https://github.com/thorvg/thorvg.swift.
- Shembujt e përdorimit të ThorVG janë zhvendosur në një depo të veçantë https://github.com/thorvg/thorvg.example.
- ĂshtĂ« publikuar njĂ« shtesĂ« thorvg.vscode pĂ«r VSCode pĂ«r krijimin, redaktimin dhe parapamjen e burimeve ThorVG direkt nĂ« ambientin e Visual Studio Code.
- Në versionin 1.0 është bërë një ristrukturim e konsiderueshme e API-së, e cila ka për qëllim përmirësimin e performancës, lehtësisë së përdorimit, qëndrueshmërisë dhe përputhshmërisë me C.
- Mbështetja për formatin TVG Picture (TVG) është hequr. Kjo vendim u mor për të përgatitur formatin e ri ThorVG Picture, i projektuar me fokus në animacionin si koncept kryesor.
- Numër të madh korrigjimesh të gabimeve dhe përmirësim të stabilitetit për përdorim në prodhim.
Burimi: linux.org.ru
