31. jaanuaril, pÀrast poolteist aastat pidevat arendamist, ilmus 1.0 kerge ja kaasaskantav platvormidevaheline vektorgraafika raamatukogu ThorVG, mis on mÔeldud vektorskenede ja animatsioonide visualiseerimiseks. Toetatakse failide laadimist formaatidesse Lottie ja SVG Tiny 1.2 (SVG Tiny rakendustes rakendatud vÔimaluste nimekiri Wiki projekti).
Raamatukogu pakub mugavaid API-sid , et importida, luua ja kuvada vektorgraafikat ning eksportida seda erinevatesse graafikavormingutesse, mis muudab selle universaalseks kasutamiseks erinevates tarkvaraplatvormides ja rakendustes graafilise sisu visualiseerimiseks. Samuti on kaasas konsooli utiliidid lottie2gif ja svg2png.
ThorVG kasutatakse vektorgraafika renderdamiseks sellistes projektides nagu Tizen OS, Godot Engine, LVGL ja mÀngijates dotLottie.
Projekt on kirjutatud C++ keeles (standard C++14) ja jagatakse MIT litsentsi alusel.
See ei ole lihtsalt vĂ€rskendus â see on ĂŒmber ehitatud alus kĂ”rge jĂ”udluse, skaleeritava ja kantava 2D vektorgraafika jaoks kĂ”ikidel platvormidel ja seadmetes. ThorVG on arendamise ajal muutunud kĂŒpseks, tootmisvalmis graafikamootoriks, mis on tĂ”estanud kvaliteeti ja jĂ”udlust reaalsetes rakendustes.
ThorVG on kiiresti populaarsust kogunud ja Àratanud kasvavat huvi kogukonna seas, mis peegeldab selle arengut varajase etapi projektist laialdaselt tunnustatud ja praktiliselt kasutatavaks vektorgraafikamootoriks, mis on valmis tÔeliseks platvormidevaheliseks kasutamiseks.
Muutuste nimekiri:
- TÀpsemad teksti renderdamise vÔimalused, rikkalikud visuaalsed efektid ja tÀpne kattuvus, et tÀiustada graafilist vÀljendust
- Horisontaalse ja vertikaalse joondamise tugi, mis vÔimaldab tÀpselt kontrollida teksti asukohta erinevates kasutajaliidese kontekstides.
- Automaatne reavahe koos valikureĆŸiimi vĂ”imalusega: sĂŒmbolite, sĂ”nade, intelligentne reavahe ja kolme punkti lĂ”ikamine ĂŒlevoolu kĂ€sitlemiseks.
- KĂ€sitsi reavahe tugi, mis vĂ”imaldab arendajatel selgelt kontrollida reavahet uute ridade sĂŒmbolite, nagu \n, abil. See vĂ”imaldab tĂ€pselt vormindada mitmerealisi tekstiblokke, eriti dĂŒnaamilistes paigutustes vĂ”i tekstianimatsioonides.
- Toetatakse kohandatud tĂ€hemĂ€rkide vahemaid, mis vĂ”imaldab tĂ€pset hÀÀlestamist lugejuse parandamiseks vĂ”i teatud tĂŒpograafiliste stiilide saavutamiseks.
- Toetatakse teksti ÀÀrtamise efekti, mis vÔimaldab luua stiiliefekte ja parandada kontrasti erinevatel taustadel (ekraanipilt 1).
- Tuvastatud on keerulisem ja ĂŒhtsem lĂ€bikate reĆŸiimide sĂŒsteem, suurendades oluliselt lĂ€bikate reĆŸiimide kĂ€itumist ning viies valemid ja kompositsiooni loogika vastavusse tööstusstandarditega, nagu Lottie, SVG ja W3C spetsiifikatsioon "Compositing and Blending". Need tĂ€iustused tagavad suurema visuaalse ĂŒhtsuse ja platvormidevahelise ĂŒhilduvuse, eriti veebis ja animatsioonides.
- Toetatakse jĂ€rgmisi lĂ€bikate reĆŸiime: "Toon", "KĂŒllastus", "VĂ€rv" ja "Heledus" HSL vĂ€rviruumi kompositsiooni kasutades. Need reĆŸiimid parandavad ĂŒhilduvust Lottie kihtide efektide ja tulevase SVG segamise toe osas (ekraanipilt 2).
- Olulised tÀiustused ja laiendused visuaalsetes efektides stseenitasandil, tehes vektorgraafika rohkem vÀljendusrikkaks ja visuaalselt rikkamaks:
- Sellel on vari-efekt koos Gausi hÀgususe filtriga (videodemonstratsioon).
- VÀrvide asendamise meetodid, mis muudavad graafika vÀlimust vÀrvide rakendamise, segamise vÔi toonide vastavuse muutmise kaudu (videodemonstratsioon).
- Uued abifunktsioonid interaktiivsuse laiendamiseks. Nende hulka kuuluvad ruumilise teabe pÀringute tugi (demonstreerimine) ja tabamuste tuvastamine kuvatavatele objektidele (videodemonstratsioon).
- Lottie's lĂ€henemisviiside laiendamine platvormidevaheline esitamiseks, sealhulgas modulaarsete Web Player'i eelvormide tugi, mis on optimeeritud suuruse, jĂ”udluse ja renderdamise (CPU/GPU) reĆŸiimi jaoks.
- Olulised tĂ€iustused Lottie animatsiooni toetuses, suurendades ĂŒhilduvust, paindlikkust ja interaktiivsust kĂ”igil platvormidel. Suurendatud on mitte ainult Lottie toetatud funktsioonide ja vĂ€ljendite spektrit, vaid pakutakse ka arendajatele tööriistu, mis vĂ”imaldavad dĂŒnaamiliselt kontrollida animatsiooni kĂ€itumist kĂ€itamise ajal, muutes ThorVG-ist ĂŒhe tugevaima Lottie esitamise raamatukogu turul. Wiki projekti rakendamise vĂ”imaluste loetelu.
- Praegu on .lot failitĂŒĂŒp uus ametlik IANA standard Lottie failide jaoks. ThorVG toetab nĂŒĂŒd .lot formaati Lottie failide standardina koos traditsioonilise .json laiendusega.
- Tweening
- Toetust on lisatud mitte-lineaarsete vĂ”tmefaktorite vahelise interpolatsiooni jaoks, mis tagab sujuvama ĂŒlemineku ja tĂ€psema ajakontrolli. See tĂ€iustus on eriti tĂ”hus, kui seda kasutatakse Lottie riikide pĂ”histe animatsioonide esitamisel (tuntud ka kui mĂ€rgistuse pĂ”hine esitus). Paljudel juhtudel on animatsioonid mĂ”eldud keerukate, mitte-lineaarsete riikide vaheliseks ĂŒleminekuks. Traditsiooniline Lottie, millel on rangelt jĂ€rjestikune ajastruktuur, ei suuda selliste stsenaariumitega hĂ€sti toime tulla, mis viib sageli jĂ€rsku katkestusi vĂ”i kohmakate hĂŒpeteni mitte-jĂ€rjestikuste vĂ”tmefaktorite vahel. videodemonstratsioon 1, videodemonstratsioon 2.
- TweeĆŸimise abil saavad arendajad nĂŒĂŒd interpoleerida otse kahe eraldi vĂ”tmefaktori vahel, isegi kui need ei ole ajakavas lineaarselt jĂ€rjestatud. See saavutab loomulikuma ja sujuvama visuaalse efekti riigist ĂŒleminekul, mis suurendab oluliselt interaktiivsete animatsioonide paindlikkust ja realistlikkust. videodemonstratsioon 1, videodemonstratsioon 2.
- NĂŒĂŒd (katsefunktsioonina) toetatakse vĂ€ljendusmuutuja vÀÀrtuste uuesti kirjutamist jooksu ajal, mis vĂ”imaldab dĂŒnaamiliselt teostada skripti loogikat kasutaja sisendi pĂ”hjal. See muudab selle eriti vĂ”imsaks tööriistaks interaktiivsete animatsioonide loomiseks Lottie ressursside abil, vĂ”imaldades luua individuaalseid variatsioone, mis ĂŒletavad algse disaini.videodemonstratsioon).
- Lisatud kohandatav varade lahendaja mehhanism, mis tagab suurema paindlikkuse vÀlistest ressurssidest (nt pildid) lÀhtuvate Lottie animatsioonide laadimisel.
- TÀiendatud tuge Lottie LayerEffect funktsioonile, mis vÔimaldab teostada rikkalikke visuaalseid tÀiustusi otse animatsiooni kihtidesse eespool kirjeldatud efektide abil.
- Kuna mÔned efektid vÔivad olla ressursimahukad, on soovitatud kvaliteedi ja jÔudluse seadistamise vÔimalust efektide renderdamiseks, mis sobib ideaalselt CPU piiratud platvormide optimeerimiseks. See vÔimaldab arendajatel kontrollida renderdamise tÀpsust ja optimeerida jÔudlust vastavalt sihtplatvormile.
- VÀljendite tugi on laienenud jÀrgmiste vÔtmefunktsioonide ja omaduste lisamise kaudu:
- wiggle, temporalWiggle: juhusliku liikumise rakendamine, mis sÔltub ajast.
- pointOnPath: asukoha arvutamine piki teed.
- propertyIndex, groupIndex: viide omaduse vÔi grupi indeksile.
- value, property, effect: juurdepÀÀs omaduste vÀÀrtustele ja vÀlistele efektidele.
- TÀiendav tÀpsus spetsifikatsioonides:
- TextFollowPath â uus spetsifikatsioon, mis vĂ”imaldab tekstil jĂ€rgida vabatahtlikke vektorteid (videodemonstratsioon).
- Teksti joondamise parameetrid â tĂ€psem tekstikihide kuvamine vastavalt nende horisontaalsele ja vertikaalsele joondamise seadistusele (videodemonstratsioon).
- Maski laiendamine â uus funktsioon, mis vĂ”imaldab tĂ€psemat kontrolli maskivorme mĂ”ju ĂŒle visuaalse kompositsiooni (videodemonstratsioon).
- SVG
- ThorVG vĂ”imaldab nĂŒĂŒd juurdepÀÀsu ĂŒksikutele SVG-elementidele ja nende muutmist unikaalsete id-attribuutide abil, mis on mÀÀratletud algses SVG-failis. See funktsioon vĂ”imaldab arendajatel otse valida ja manipuleerida konkreetsete vektorkujudega imporditud SVG-stseenis, mis sobib ideaalselt interaktiivsete vĂ”i dĂŒnaamiliste kasutusstsenaariumide jaoks (nt teemade kujundamine, rĂ”hutamine).
- Tugi Gaussian blur efekt.
- Intelligentne renderdamine
- ThorVG tarkvaramootor toetab nĂŒĂŒd intelligentset osalist renderdamist, mis tagab tĂ”husamad renderdamisprotsessid, vĂ€rskendades ainult neid vektorskeemi osi, mis on muutunud. Siseosa muudetud alade jĂ€lgimise tĂ”ttu minimeeritakse tarbetud uuesti joonistamised ja optimeeritakse ĂŒldine jĂ”udlus. See funktsioon pakub mĂ€rkimisvÀÀrset kasu sellistes stsenaariumites nagu kasutajaliidese renderdamine, projekteerimistööriistad vĂ”i rakendused, kus suurem osa stseenist jÀÀb staatiliseks ja kohalike elementide vĂ€rskendatakse ainult vahekĂ€ikude vahel. Sellistel juhtudel vĂ”ib stseeni tĂ€ielikust renderdamisest loobumine oluliselt vĂ€hendada arvutuskoormust ja suurendada energiaefektiivsust, mis on eriti vÀÀrtuslik mobiilsete ja integratsioonisĂŒsteemide jaoks.
- Selle eesmĂ€rgi saavutamiseks rakendab ThorVG 1.0 kombinatsiooni algoritmilistest meetoditest, mis on loodud spetsiaalselt osalisteks renderdamiseks. Allpool on vĂ€lja toodud pĂ”histrateegiad, mis on selle sĂŒsteemi aluseks:
- Joonte lÀbimise algoritm: kujundid sorteeritakse x-koordinaatide jÀrgi ning rakendatakse joonte lÀbimise strateegiat tarbetute «sodi» alade kontrollimise vÀhendamiseks. See vÀhendab keerukust O(N à M) nulli O(N + M + K + N log N), kus N on kujundite arv, M on «sodi» alade arv ja K on tegelike kattete arv.
- Jaotamine ja tingimuslik liitmine: peene jaotuse ale of subalad tasakaalustatakse intelligentse liitmisega, et vÀltida fraktsioneerimist. Prioriteet on antud horisontaalsetele liitmistele, et tÔhusamalt kasutada mÀlu vahemÀlu.
- Ruumiline jaotamine (vaikimisi 4Ă4 vĂ”rk): renderdamispind on jagatud 16 alaks, vĂ”imaldades kontrollida ainult vastavaid «sodi» alasid, vĂ€hendades oluliselt kulusid keeruliste kasutajaliidese uuenduste korral.
- Koos töötades tagavad need tehnikad sujuvama ja kiirema renderdamise, eriti integreeritud sĂŒsteemides vĂ”i reaalajas sĂŒsteemides, kus osalised uuendused toimuvad sageli. Ăksikasjalik teave avaldatakse eraldi postituses. blogist.
- Pöörake tĂ€helepanu, et kiirete sisu, nĂ€iteks dĂŒnaamiliste mĂ€ngude vĂ”i tĂ€isekraananimatsioonide korral, kus praktiliselt kĂ”ik objektid muutuvad igas kaadris, osaline renderdamine annab vĂ€he vĂ”i ĂŒldse mitte eeliseid jĂ”udluses ning vĂ”ib isegi pĂ”hjustada vĂ€ikeseid lisakulusid. SeetĂ”ttu on tavaliselt parem valida kogu stseeni renderdamine. Just sellepĂ€rast toetab ThorVG nii osalist kui ka tĂ€isrenderdamise konfiguratsiooni, mis annab teile vĂ”imaluse valida oma kasutusjuhtumi jaoks optimaalse lĂ€henemisviisi. Saate analĂŒĂŒsida oma toote jĂ”udlust ja teha informeeritud otsuse, kasutades valikut Meson -Dpartial=[true/false] ja valikut EngineOption::Smart klassis SwCanvas:
auto canvas = SwCanvas::gen(EngineOption::Smart);
- Uus ajastu veebitehnoloogiate integreerimisest WebGL, WebGPU ja kerge WebCanvasiga sujuvaks renderdamiseks brauseris
- WebGL ja WebGPU tagaplaanid on nĂŒĂŒd ametlikult tootmisvalmid. Need GPU-pĂ”hised renderijad pakuvad nĂŒĂŒd tĂ€ielikku funktsionaalset ĂŒhilduvust traditsioonilise CPU tagaplaaniga, toetades kĂ”iki ThorVG Canvas vĂ”imalusi sama kvaliteedi ja stabiilsuse tasemega. VĂ”rreldes versiooniga 0.15 on GPU renderdamise jĂ”udlus suurenenud ĂŒle 150%, mis tagab mĂ€rkimisvÀÀrse paranemise veebivektorillustratsioonide reaalajas renderdamisel.
- Oluliselt suurenenud jÔudlus CPU/GPU ressursside piirangutega keskkondades ja sisseehitatud keskkondades.
- ThorVG 1.0 pakub vÔrreldes versiooniga 0.15 paremat jÔudlust, mÀrkides selget kasvu nii CPU kui ka GPU osas.
- Peamised optimeerimised:
- Paranenud renderdamise toru tÔhusus.
- VĂ€hendatud kaadribuffersĂŒsteemide kulud.
- Optimeeritud Lottie kompositsioonide analĂŒĂŒs.
- Paranenud partii renderdamine ja GPU vahemÀlu.
- ThorVG on optimeeritud rasterdamiseks CPU baasil, keskendudes vektorgraafika visualiseerimisele keskkondades, kus GPU ressursid on piiratud, puuduvad vĂ”i on teadlikult mittekasutuses. TĂŒĂŒpilistes CPU testides nĂ€itab ThorVG keskmiselt 1.8 korda paremat jĂ”udlust kui laialdaselt kasutatav vektorgraafika mootor Skia, tavaliste vektorgraafika visualiseerimise ĂŒlesannete tĂ€itmisel. Ăks eelis on eriti nĂ€htav geomeetria intensiivse kasutamise stsenaariumites, nagu nĂ€iteks ristkĂŒlikute, joonte, pöörde ja ringide visualiseerimine (screenshot 3).
- ThorVG Janitor
- ThorVG renderdamise jĂ”udluse reaalset demonstreerimist saab nĂ€ha projektis ThorVG Janitor â interaktiivne mĂ€ng, mis on loodud protsessori jĂ”udluse demonstreerimiseks kĂ”rge graafilise koormuse korral. Stseen sisaldab sadu vaenlasi, mis on loodud osakestepĂ”hise graafika abil, mitmekihilisi tĂ€heöid taustapilte tĂ€issuuruses rasterpiltidega, reaalajas visuaalefekte nagu DropShadow ja Blur, samuti kuni 25000 objekti, mis renderdatakse samaaegselt. Isegi 2K (2048Ă1152) maksimaalse koormuse korral demonstreerib projekt stabiilset jĂ”udlust ĂŒle 120 FPS, mis rĂ”hutab ThorVG efektiivsust ja sobivust keerulistes keskkondades, kus on palju efekte (videodemonstratsioon, screenshotile).
- Teised olulised muudatused
- ThorVG integreerimise nĂ€ide Godotis. Failis selles videodemonstreerimises ThorVG on integreeritud Godotis veebikeskkonnas, et renderdada sadu Lottie animatsiooni objekte kiirusel ĂŒle 120 kaadri sekundis. See demonstreerimine nĂ€itab ThorVG potentsiaali veebikeskkonnas sujuva ja kvaliteetse animatsiooni tegemiseks tĂ€itmisel.
- Lisatud Ôppeprojekt ThorVG WebCanvas kasutamise kohta.
- Lisatud interaktiivne ThorVG Playground.
- ThorVG jaoks on lisatud wrapper Swift'i keele jaoks: https://github.com/thorvg/thorvg.swift.
- ThorVG kasutamise nÀited on viidud eraldi hoidlasse https://github.com/thorvg/thorvg.example.
- Avaldatud laiendus thorvg.vscode VSCode jaoks, et luua, redigeerida ja eelvaadata ThorVG ressursse otse Visual Studio Code keskkonnas.
- Versioonis 1.0 on toimunud mĂ€rkimisvÀÀrne API restruktureerimine, mille eesmĂ€rk on suurendada jĂ”udlust, kasutusmugavust, jĂ€rjepidevust ja C-ga ĂŒhilduvust.
- TVG Picture (TVG) forma tugi eemaldati. See otsus tehti ThorVG Picture uue formaadi ettevalmistamiseks, mis on arendatud animatsiooni kui pÔhikontseptsiooni arvessevÔtuks.
- Rohkemate vigade parandused ja stabiilsuse parandamine tootmis kasutuseks.
Allikas: linux.org.ru
