31. janvÄrÄ«, pÄc pusotra gada nepÄrtraukta izstrÄdes, tika izlaista 1.0 viegla un portatÄ«va daudzplatformu vektorgrafikas bibliotÄka ThorVG, kas paredzÄta vektoru skatu un animÄciju vizualizÄÅ”anai. Atbalsta failu ielÄdi formÄtu Lottie un SVG Tiny 1.2 (saraksts ar realizÄtajÄm iespÄjÄm SVG Tiny projektÄ Wiki).
BibliotÄka nodroÅ”ina Ärti API vektorgrafikas importÄÅ”anai, veidoÅ”anai un attÄloÅ”anai, kÄ arÄ« tÄs eksportÄÅ”anai dažÄdos grafikas formÄtos, padarot to universÄlu lietoÅ”anai dažÄdÄs programmatÅ«ras platformÄs un grafiskÄ satura vizualizÄcijas lietojumprogrammÄs. Tiek piegÄdÄtas arÄ« konsoles utilÄ«tas lottie2gif un svg2png.
ThorVG tiek izmantots vektorgrafikas attÄloÅ”anai tÄdos projektos kÄ Tizen OS, Godot Engine, LVGL un atskaÅotÄjos dotLottie.
Projekts ir uzrakstÄ«ts C++ valodÄ (C++14 standarts) un tiek izplatÄ«ts saskaÅÄ ar MIT licenci.
Tas nav tikai atjauninÄjums ā tas ir pÄrbÅ«vÄts pamats augstas veiktspÄjas, mÄrogojamas un pÄrnÄsÄjamas divdimensionÄlas vektorgrafikas visÄs platformÄs un ierÄ«cÄs. ThorVG izstrÄdes laikÄ ir kļuvis par ievÄrojamu, pÄrraudzÄ«tÄju grafikas dzinÄju, kas demonstrÄjis pÄrbaudÄ«tu kvalitÄti un veiktspÄju reÄlÄs lietojumprogrammÄs.
ThorVG Ätri ieguva popularitÄti un radÄ«ja pieaugoÅ”u interesi no kopienas, kas atspoguļo tÄ attÄ«stÄ«bu no agrÄ«nas stadijas projekta lÄ«dz plaÅ”i atzÄ«tam un praktiÄ·u vektorgrafikas dzinÄjim, kas gatavs reÄlai multiplatformu lietoÅ”anai.
IzmaiÅu saraksts:
- PaplaÅ”inÄtas teksta attÄloÅ”anas iespÄjas, bagÄtÄ«gas vizuÄlÄs efektivitÄtes un precÄ«zas pÄrklÄÅ”anÄs atbalsts uzlabotai grafiskai izpausmei
- Atbalsts horizontÄlai un vertikÄlai izlÄ«dzinoÅ”anai, kas ļauj precÄ«zi kontrolÄt teksta novietojumu dažÄdos lietotÄja interfeisa kontekstos.
- AutomÄtiskÄ rindu pÄrtraukÅ”ana ar iespÄju izvÄlÄties režīmu: pÄc simboliem, pÄc vÄrdiem, intelektÄ«vs pÄrtraukums un trÄ«spunktu pÄrtraukÅ”ana, lai apstrÄdÄtu pÄrspriegumu.
- Atbalsts manuÄlas jaunu rindu pÄrvilkÅ”anai, ļaujot izstrÄdÄtÄjiem skaidri kontrolÄt rindu pÄrvilkÅ”anu ar jauno rindu simboliem, piemÄram, \n. Tas ļauj precÄ«zi formatÄt vairÄkrindu teksta blokos, Ä«paÅ”i dinamiskos izkÄrtojumos vai teksta animÄcijÄs.
- Atbalsts pielÄgojamam attÄlumam starp simboliem, kas ļauj precÄ«zi regulÄt, lai uzlabotu lasÄmÄ«bu vai sasniegtu noteiktus tipogrÄfijas stilus.
- Atbalsts teksta aplietai, ļaujot radÄ«t stilistiskus efektus un uzlabot kontrastu uz dažÄdiem foniem (skats 1).
- Ieviesta visaptveroÅ”Äka un saskaÅotÄka pÄrklÄjuma režīmu sistÄma, kas bÅ«tiski uzlabo pÄrklÄjuma režīmu uzvedÄ«bu un pielÄgo formulas un loÄ£iku kompozÄ«cijai atbilstoÅ”i nozares standartiem, piemÄram, Lottie, SVG un W3C specifikÄcijai Ā«Compositing and BlendingĀ». Å ie uzlabojumi nodroÅ”ina lielÄku vizuÄlo saskaÅotÄ«bu un daudzplatformu saderÄ«bu, Ä«paÅ”i tÄ«mekļa un animÄcijas darbplÅ«smÄs.
- RealizÄti un atbalstÄ«ti Å”Ädi pÄrklÄjuma režīmi: Ā«ToniĀ», Ā«SaturÄcijaĀ», Ā«KrÄsaĀ» un Ā«Gaismas intensitÄteĀ», izmantojot HSL krÄsu telpas kompozÄ«ciju. Å ie režīmi uzlabo saderÄ«bu ar Lottie slÄÅu efektiem un nÄkotnÄ atbalsta SVG sajaukÅ”anu (skats 2).
- NozÄ«mÄ«gi uzlabojumi un paplaÅ”inÄjumi vizuÄlajos efektos skatuves lÄ«menÄ«, padarot vektorgrafiku izteiksmÄ«gÄku un vizuÄli bagÄtÄku:
- Viegla Änas efekta daļa ar Gausa izplÅ«des filtru (video demonstrÄcija).
- KrÄsu nomaiÅas metodes, kas maina grafikas izskatu, pÄrdefinÄjot krÄsu piemÄroÅ”anas, sajaukÅ”anas vai saskaÅoÅ”anas veidu, pamatojoties uz to toni (video demonstrÄcija).
- Pievienotas jaunas palÄ«gfunkcijas, lai paplaÅ”inÄtu interaktÄ«vo iespÄju klÄstu. Tiek ietvertas telpiskÄs informÄcijas pieprasÄ«jumu atbalsts (demonstrÄcija) un iespÄju noteikÅ”ana, lai noteiktu trÄpÄ«jumus uz redzamajiem objektiem (video demonstrÄcija).
- PaplaÅ”inÄtas Lottie animÄcijas iespÄjas daudzplatformu atskaÅoÅ”anai, tostarp modulÄri Web Player iestatÄ«jumi, kas optimizÄti izmÄra, veiktspÄjas un renderÄÅ”anas režīma (CPU/GPU) ziÅÄ.
- BÅ«tiski uzlabojumi Lottie animÄciju atbalstÄ ar saderÄ«bas, elastÄ«bas un interaktivitÄtes uzlaboÅ”anu visÄs platformÄs. PaplaÅ”inÄts ne tikai Lottie atbalstÄ«to funkciju un izteiksmju klÄsts, bet arÄ« sniegti rÄ«ki izstrÄdÄtÄjiem, kas ļauj dinamiski kontrolÄt animÄcijas uzvedÄ«bu darbÄ«bas laikÄ, padarot ThorVG par vienu no jaudÄ«gÄkajÄm Lottie atskaÅoÅ”anas bibliotÄkÄm tirgÅ«. IevieÅ”anas iespÄju saraksts Wiki projektÄ.
- PaÅ”laik .lot faila paplaÅ”inÄjums ir jaunais oficiÄlais IANA standarts Lottie failiem. ThorVG tagad oficiÄli atbalsta .lot kÄ Lottie faila standarta formÄtu, papildus tradicionÄlajam .json paplaÅ”inÄjumam.
- Twining
- PapildinÄts atbalsts interpolÄcijai starp nelineÄri blakus esoÅ”iem atslÄgas kadriem, kas nodroÅ”ina vienmÄrÄ«gÄkus pÄrejas efektus un precÄ«zÄku laika kontroli. Å is uzlabojums ir Ä«paÅ”i efektÄ«vs, izmantojot animÄciju, kas balstÄ«ta uz stÄvokļiem (kurai arÄ« ir pazÄ«stams kÄ marÄ·Ätu pÄreju atskaÅoÅ”ana) Lottie. Daudzos gadÄ«jumos animÄcijas ir paredzÄtas, lai pÄrietu starp stÄvokļiem sarežģīti, nelineÄri. TradicionÄlÄ Lottie ar stingri secÄ«gu laika struktÅ«ru grÅ«ti tiek galÄ ar Å”ÄdÄm situÄcijÄm, bieži izraisot straujas atsitienus vai neveiklas lÄcienus, pÄrejot starp nesakÄrtotiem atslÄgas kadriem: video demonstrÄcija 1, video demonstrÄcija 2.
- Izmantojot twining, izstrÄdÄtÄji tagad var veikt interpolÄciju tieÅ”i starp diviem atseviŔķiem atslÄgas kadriem, pat ja tie nav lineÄri blakus esoÅ”i laika skalÄ. Tas ļauj sasniegt dabiskÄkus un plÅ«stoÅ”us vizuÄlos efektus pÄrejÄs starp stÄvokļiem, bÅ«tiski palielinot interaktÄ«vo animÄciju elastÄ«bu un reÄlistiskumu: video demonstrÄcija 1, video demonstrÄcija 2.
- Tagad (kÄ eksperimentÄla funkcija) tiek atbalstÄ«ta mainÄ«go izteiksmju vÄrtÄ«bu pÄrrakstīŔana darbÄ«bas laikÄ, ļaujot dinamiski izpildÄ«t skriptu loÄ£iku, pamatojoties uz lietotÄja ievadi. Tas padara to par Ä«paÅ”i jaudÄ«gu rÄ«ku interaktÄ«vu animÄciju veidoÅ”anai, izmantojot Lottie resursus, ļaujot izveidot individuÄlas variÄcijas, kas pÄrsniedz sÄkotnÄjo dizainu.video demonstrÄcija).
- Tika pievienots pielÄgojams aktÄ«vu risinÄjuma mehÄnisms, kas nodroÅ”ina lielÄku elastÄ«bu, iekļaujot ÄrÄjos resursus (piemÄram, attÄlus), uz kuriem atsaucas Lottie animÄcijas.
- PaplaÅ”inÄta Lottie LayerEffect funkcijas atbalsts, kas ļauj veikt bagÄtÄ«gas vizuÄlas uzlaboÅ”anas tieÅ”i animÄcijas slÄÅos ar iepriekÅ” minÄtajiem efektiem.
- Å emot vÄrÄ, ka daži efekti var bÅ«t resursietilpÄ«gi, piedÄvÄta opcija iestatÄ«t kvalitÄti un veiktspÄju efektu attÄloÅ”anai, kas ir ideÄli piemÄrota optimizÄcijai platformÄs ar ierobežotiem CPU resursiem. Tas ļauj izstrÄdÄtÄjiem kontrolÄt attÄloÅ”anas precizitÄti un optimizÄt veiktspÄju atbilstoÅ”i mÄrÄ·platformai.
- Izteikumu atbalsts ir paplaÅ”inÄts, pievienojot Å”Ädas galvenÄs funkcijas un Ä«paŔības:
- wiggle, temporalWiggle: nejauÅ”as kustÄ«bas piemÄroÅ”ana, kas ir atkarÄ«ga no laika.
- pointOnPath: pozÄ«cijas aprÄÄ·inÄÅ”ana gar ceļu.
- propertyIndex, groupIndex: atsauce uz īpaŔības vai grupas indeksu.
- value, property, effect: piekļuve Ä«paŔību vÄrtÄ«bÄm un ÄrÄjiem efektiem.
- PrecÄ«zÄka atbilstÄ«ba specifikÄcijÄm:
- TextFollowPath ā jauna specifikÄcija, kas ļauj tekstam sekot patvaļīgiem vektoru ceļiem (video demonstrÄcija).
- Teksta izlÄ«dzinÄÅ”anas opcijas ā precÄ«zÄka tekstu slÄÅu attÄloÅ”ana, balstoties uz to horizontÄlÄs un vertikÄlÄs izlÄ«dzinÄÅ”anas iestatÄ«jumiem (video demonstrÄcija).
- Maskas paplaÅ”inÄÅ”ana ā jauna funkcija, kas ļauj precÄ«zÄk kontrolÄt maskas formas ietekmi uz vizuÄlo kompozÄ«ciju (video demonstrÄcija).
- SVG
- ThorVG tagad ļauj piekļūt atseviŔķiem SVG elementiem un mainÄ«t tos, izmantojot unikÄlus id atribÅ«tus, kas definÄti sÄkotnÄjÄ SVG failÄ. Å Ä« funkcija ļauj izstrÄdÄtÄjiem tieÅ”i izvÄlÄties un manipulÄt ar konkrÄtÄm vektoru figÅ«rÄm importÄtajÄ SVG ainavÄ, kas ir ideÄli piemÄrota interaktÄ«viem vai dinamiskajiem izmantoÅ”anas scenÄrijiem (piemÄram, tÄmas noformÄÅ”ana, izcelÅ”ana).
- Atbalsts Gausa izplūŔanas efekts.
- ZinÄÅ”anu bÄzes attÄloÅ”ana
- ProgrammatÅ«ras dzinÄjs ThorVG tagad atbalsta intelektuÄlo daļÄjo atveidoÅ”anu, kas nodroÅ”ina efektÄ«vÄku atveidoÅ”anas darba gaitu, atjauninot tikai tÄs vektora skatu daļas, kas ir mainÄ«juÅ”Äs. Pateicoties iekÅ”Äjai mainÄ«to apgabalu izsekoÅ”anai, tas minimizÄ nevajadzÄ«gas pÄrzÄ«mÄÅ”anas un optimizÄ kopÄjo veiktspÄju. Å Ä« funkcija nodroÅ”ina ievÄrojamas priekÅ”rocÄ«bas tÄdos scenÄrijos kÄ lietotÄja interfeisa atveidoÅ”ana, projektÄÅ”anas rÄ«ki vai lietojumprogrammas, kur lielÄkÄ daļa ainas paliek statiska, bet starp kadriem tiek atjauninÄti tikai nelieli elementi. Å Ädos gadÄ«jumos atteikÅ”anÄs no pilnas ainas atveidoÅ”anas var ievÄrojami samazinÄt aprÄÄ·inu slodzi un palielinÄt energoefektivitÄti, kas ir Ä«paÅ”i vÄrtÄ«gi mobilajÄs un iebÅ«vÄtajÄs sistÄmÄs.
- Lai sasniegtu Å”o mÄrÄ·i, ThorVG 1.0 izmanto algoritmisko metožu kombinÄciju, kas Ä«paÅ”i izstrÄdÄta daļÄjai atveidoÅ”anai. ZemÄk ir norÄdÄ«tas galvenÄs stratÄÄ£ijas, kas veido Å”o sistÄmu:
- LineÄrÄs izieÅ”anas algoritms: formas tiek sakÄrtotas pa x koordinÄtÄm, un tiek piemÄrota lineÄrÄs izieÅ”anas stratÄÄ£ija, lai samazinÄtu nevajadzÄ«gas "netÄ«ro" apgabalu pÄrbaudes. Tas samazina sarežģītÄ«bu no O(N Ć M) uz O(N + M + K + N log N), kur N ir formu skaits, M ir "netÄ«ro" apgabalu skaits, K ir faktiskÄ pÄrklÄjumu skaita.
- Sadale un nosacÄ«ta saplūŔana: smalkÄkÄ subapgabalu sadale tiek lÄ«dzsvarota ar intelektuÄlo saplūŔanu, lai novÄrstu fragmentÄciju. PrioritÄte tiek pieŔķirta horizontÄlajai saplūŔanai, lai efektÄ«vÄk izmantotu atmiÅas keÅ”u.
- TelpiskÄ sadale (pÄc noklusÄjuma 4Ć4 tÄ«kls): atveidoÅ”anas virsma tiek sadalÄ«ta 16 apgabalos, kas ļauj pÄrbaudÄ«t tikai attiecÄ«gos "netÄ«ros" apgabalus, bÅ«tiski samazinot liekÄs izmaksas sarežģītÄs lietotÄja interfeisa atjauninÄÅ”anÄs laikÄ.
- StrÄdÄjot kopÄ, Ŕīs tehnikas nodroÅ”ina vienmÄrÄ«gÄku un ÄtrÄku atveidoÅ”anu, Ä«paÅ”i iebÅ«vÄtajÄs sistÄmÄs vai reÄllaika sistÄmÄs, kur bieži notiek daļÄji atjauninÄjumi. SÄ«kÄka informÄcija tiks publicÄta atseviÅ”Ä·Ä ierakstÄ. emigrÄcijas.
- LÅ«dzu, Åemiet vÄrÄ, ka gadÄ«jumos ar augsti dinamisku saturu, piemÄram, dinamiskÄm spÄlÄm vai pilnekrÄna animÄcijÄm, kur katrÄ kadrÄ gandrÄ«z visi objekti mainÄs, daļÄja renderÄÅ”ana sniedz maz vai vispÄr nesniedz veiktspÄjas priekÅ”rocÄ«bas un var pat izraisÄ«t nelielus papildu izdevumus. Å Ädos gadÄ«jumos parasti ir labÄk izvÄlÄties pilnÄ«gu scenÄrija renderÄÅ”anu. Å Ä« iemesla dÄļ ThorVG atbalsta gan daļÄju, gan pilnu renderÄÅ”anas konfigurÄciju, kas dod jums iespÄju izvÄlÄties optimÄlo pieeju jÅ«su lietoÅ”anas gadÄ«jumam. JÅ«s varat analizÄt sava produkta veiktspÄju un pieÅemt pamatotu lÄmumu, izmantojot opciju Meson -Dpartial=[true/false] un EngineOption::Smart klases SwCanvas opciju:
auto canvas = SwCanvas::gen(EngineOption::Smart);
- Jauna Ära tÄ«mekļa tehnoloÄ£iju integrÄcijÄ ar WebGL, WebGPU un vieglo WebCanvas nevainojamai renderÄÅ”anai pÄrlÅ«kprogrammÄ
- WebGL un WebGPU aizmugures tagad ir oficiÄli gatavas ražoÅ”anai. Å ie GPU balstÄ«tie renderÄtÄji tagad piedÄvÄ pilnu funkcionÄlo saderÄ«bu ar tradicionÄlo CPU aizmuguri, atbalstot visas ThorVG Canvas iespÄjas ar tÄdu paÅ”u kvalitÄti un stabilitÄti attÄlÄ. SalÄ«dzinÄjumÄ ar 0.15 versiju, GPU renderÄÅ”anas veiktspÄja ir pieaugusi par vairÄk nekÄ 150%, kas nodroÅ”ina ievÄrojamu uzlabojumu reÄla laika tÄ«mekļa vektorgrafikas renderÄÅ”anÄ.
- IevÄrojams veiktspÄjas pieaugums vidÄs ar ierobežotu CPU/GPU jaudu un integrÄtÄs vidÄs
- ThorVG 1.0 piedÄvÄ uzlabotu veiktspÄju salÄ«dzinÄjumÄ ar 0.15 versiju, ar ievÄrojamu pieaugumu gan CPU, gan GPU.
- GalvenÄs optimizÄcijas:
- Uzlabota renderÄÅ”anas caurules efektivitÄte.
- SamazinÄti resursu izdevumi kadru buferu pieŔķirÅ”anai.
- OptimizÄta Lottie kompozÄ«ciju analÄ«ze.
- Uzlabota pakotÅu renderÄÅ”ana un GPU keÅ”atmiÅa.
- ThorVG ir optimizÄts rastrÄÅ”anai uz CPU bÄzes, ar uzsvaru uz vektoru vizualizÄciju vidÄs, kur GPU resursi ir ierobežoti, nepieejami vai apzinÄti netiek izmantoti. Tipiskos CPU testos ThorVG demonstrÄ vidÄji 1.8 reizes augstÄku veiktspÄju salÄ«dzinÄjumÄ ar plaÅ”i izmantoto vektoru grafikas dzinÄju Skia, veicot tipiskas vektoru vizualizÄcijas uzdevumus. Å is priekÅ”rocÄ«bas ir Ä«paÅ”i redzamas scenÄrijos ar intensÄ«vu Ä£eometrijas lietojumu, piemÄram, vizualizÄjot taisnstÅ«rus, svÄ«tras, rotÄcijas un apļus (screenshot 3).
- ThorVG Janitor
- ReÄlo ThorVG renderÄÅ”anas veiktspÄju var redzÄt projektÄ ThorVG Janitor ā interaktÄ«vÄ spÄlÄ, izstrÄdÄtÄ, lai demonstrÄtu procesora veiktspÄju ar augstu grafisko slodzi. Skatuve ietver simtiem ienaidnieku, kas radÄ«ti, izmantojot daļiÅu bÄzes grafiku, daudzslÄÅu zvaigžÅu debesu fonus ar pilnizmÄra rastriem, reÄllaika vizuÄlos efektus, piemÄram, DropShadow un Blur, kÄ arÄ« lÄ«dz 25000 objektiem, kas tiek renderÄti vienlaicÄ«gi. Pat pie maksimÄlÄs slodzes ar 2K izŔķirtspÄju (2048Ć1152) projekts rÄda stabilu veiktspÄju virs 120 FPS, kas uzsver ThorVG efektivitÄti un piemÄrotÄ«bu sarežģītÄm vidÄm ar daudziem efektiem (video demonstrÄcija, screenshot).
- Citi nozīmīgi uzlabojumi
- ThorVG integrÄcijas piemÄrs Godot. Iz Å”ajÄ video demonstrÄcijÄ ThorVG ir integrÄts ar Godot tÄ«mekļa vidÄ, lai renderÄtu simtiem Lottie animÄciju objektu ar Ätrumu virs 120 kadriem sekundÄ. Å Ä« demonstrÄcija parÄda ThorVG potenciÄlu tÄ«mekļa vidÄ, lai nodroÅ”inÄtu plÅ«stoÅ”u un augstas kvalitÄtes animÄciju izpildes laikÄ.
- Pievienots apmÄcÄ«bu piemÄrs ThorVG WebCanvas izmantoÅ”anai.
- Pievienots interaktīvais ThorVG Playground.
- Pievienots ThorVG wrappers valodÄ Swift: https://github.com/thorvg/thorvg.swift.
- ThorVG izmantoÅ”anas piemÄri pÄrcelti uz atseviŔķu repozitoriju https://github.com/thorvg/thorvg.example.
- PublicÄts paplaÅ”inÄjums thorvg.vscode VSCode, lai radÄ«tu, rediÄ£Ätu un priekÅ”skatÄ«tu ThorVG resursus tieÅ”i Visual Studio Code vidÄ.
- VersijÄ 1.0 ir veiktas bÅ«tiskas API pÄrstrukturÄÅ”anas, kas vÄrstas uz veiktspÄjas, lietojamÄ«bas, saskaÅotÄ«bas un saderÄ«bas ar C uzlaboÅ”anu.
- TVG Picture (TVG) form support has been removed. This decision was made in preparation for the new ThorVG Picture format, developed with animation as the main concept.
- Numerous bug fixes and stability improvements for production use.
Avots: linux.org.ru
