31. jaanuaril, pÀrast poolteist aastat pidevat arendust, ilmus 1.0 kerge ja kaasaskantav platvormidevaheline vektorgraafika teek ThorVG, mis on mÔeldud vektorskeemade ja animatsioonide visualiseerimiseks. Toetatakse failide laadimist formaatides Lottie ja SVG Tiny 1.2 (loetelu SVG Tiny teostatud vÔimalustest projekti Wiki).
Teek pakub mugavaid API-sid vektorgraafika importimiseks, loomiseks ja kuvamiseks, samuti selle eksportimiseks erinevatesse graafilistesse formaatidesse, mis muudab selle universaalseks kasutamiseks erinevates tarkvaraplatformides ja graafikasisu visualiseerimise rakendustes. Kaasa tulevad kÀsurea utiliidid lottie2gif ja svg2png.
ThorVG-d kasutatakse vektorgraafika renderdamiseks sellistes projektides nagu Tizen OS, Godot Engine, LVGL ja mÀngijad dotLottie.
Projekt on kirjutatud C++ keeles (C++14 standard) ja levitatakse MIT litsentsi alusel.
See ei ole lihtsalt uuendus â see on ĂŒmber kujundatud alus, mis toetab kĂ”rge jĂ”udlusega, skaleeritavat ja ĂŒlekantavat kahesuunalist vektorgraafikat kĂ”ikides platvormides ja seadmetes. ThorVG on arenduse kĂ€igus saanud kĂŒpseks, tootmisvalmidusse jĂ”udnud graafikamootoriks, mis on tĂ”estanud oma kvaliteeti ja jĂ”udlust reaalses kasutuses.
ThorVG on kiiresti populaarsust kogunud ja saanud jÀrjest suuremat huvi kogukonna seas, mis peegeldab selle arengut varajase etapi projektist laialdaselt tunnustatud ja praktiliselt kasutatavaks vektorgraafikamootoriks, mis on valmis tÔeliseks platvormidevaheliseks kasutamiseks.
Muudatuste nimekiri:
- TÀpsem tekstiredigeerimise vÔimalused, rikkalikud visuaalsed efektid ja tÀpne kattuvuse tugi, et parandada graafilist vÀljendust.
- Toetab horisontaalset ja vertikaalset joondamist, mis vÔimaldab tÀpselt kontrollida teksti paigutust erinevates kasutajaliidese kontekstides.
- Automaatne reavaheline jagamine, mille abil saab valida reĆŸiimi: sĂŒmbolite, sĂ”nade kaupa, intellektuaalne jagamine ja kolmnurkne katkestamine ĂŒlevoolu töötlemiseks.
- KĂ€sitsi reavaheline jagamine, mis vĂ”imaldab arendajatel selgelt kontrollida reavahe jagamist uue rea sĂŒmbolitega, nĂ€iteks \n. See vĂ”imaldab tĂ€pselt vormindada mitmerealisi tekstibloke, eriti dĂŒnaamilistes paigutustes vĂ”i tekstianimatsioonides.
- Kohandatava sĂŒmbolite vahe kauguse tugi, vĂ”imaldades tĂ€pset kohandamist, et parandada loetavust vĂ”i saavutada teatud tipograafilisi stiile.
- Teksti ÀÀristamise tugi, mis vÔimaldab luua stilistilisi efekte ja parandada kontrasti erinevatel taustadel (screenshot 1).
- Esitatud on ulatuslikum ja kooskĂ”lalisem kihiloomise reĆŸiimide sĂŒsteem, mis parandab oluliselt kihiloomise kĂ€itumist ja viib valemid ja kompositsiooniloogika vastavusse tööstusstandarditega, nagu Lottie, SVG ja W3C âKompositsioon ja segamineâ spetsifikatsioon. Need parendused tagavad suuremat visuaalset ĂŒhtsust ja platvormidevahelist ĂŒhilduvust, eriti veebis ja animatsioonitöövoogudes.
- Toetatakse jĂ€rgmisi kihiloomise reĆŸiime: âToonâ, âSĂŒgavusâ, âVĂ€rvâ ja âHeledusâ, kasutades HSL vĂ€rviruumi kompositsioonitehnikaid. Need reĆŸiimid parandavad Lottie kihtide efektide ĂŒhilduvust ja tulevaste SVG segamise toetust (screenshot 2).
- Olulised parendused ja laiendused visuaalsetes efektides stseenitasandil, muutes vektorgraafika vÀljendusrikkamaks ja visuaalselt pÔnevamaks:
- Varjutuse efekt gaussi hÀgustamise filtriga (video-demonstratsioon).
- VĂ€rvide asendamise meetodid, mis muudavad graafika vĂ€limust, muutes vĂ€rvide rakendamise, segamise vĂ”i varjundi pĂ”hjal ĂŒhtimise vĂ”i vastavuse viisi (video-demonstratsioon).
- Lisatud on uusi abifunktsioone interaktiivsuse laiendamiseks. Nende hulka kuulub ruumilise teabe pÀringute tugi (demonstreerimine) ja tabamuste tuvastamine kuvatud objektidele (video-demonstratsioon).
- TĂ€psemad Lottie animatsiooni vĂ”imalused platvormideĂŒleseks esitamiseks, sealhulgas veebimĂ€ngija modulaarsed eelvalikud, mis on optimeeritud suuruse, jĂ”udluse ja renderdamise reĆŸiimi (CPU/GPU)
- Olulised tĂ€iustused Lottie animatsiooni toe osas, sealhulgas parem ĂŒhilduvus, paindlikkus ja interaktiivsus kĂ”ikidel platvormidel. Toetatakse mitte ainult laiendatud Lottie funktsioonide ja vĂ€ljendite spektrit, vaid pakutakse ka arendajatele vahendeid, mis vĂ”imaldavad dĂŒnaamiliselt kontrollida animatsiooni kĂ€itumist tĂ€itmise ajal, muutes ThorVG-ist ĂŒhe vĂ”imsama Lottie esituse teeki turul. Tehtud vĂ”imaluste loetelu projekti Wiki-s.
- Praegu on .lot failitĂŒĂŒp uus ametlik IANA standard Lottie failide jaoks. ThorVG toetab nĂŒĂŒd ametlikult .lot formaati Lottie failide standardina, lisaks traditsioonilisele .json laiendusele.
- Twining
- Lisatud on tugi mitte-lineaarsete jĂ€rjestatud vĂ”tmeraadete vahelise interpolatsiooni jaoks, mis tagab sujuvamad ĂŒleminekud ja tĂ€psema ajakontrolli. See tĂ€iendus on eriti efektiivne olekute pĂ”hjaliku animatsiooni esitamisel (tuntud ka kui mĂ€rgistus-pĂ”hine esitamine) Lottie'is. Paljudel juhtudel on animatsioonid mĂ”eldud ĂŒleminekuks olekute vahel keerulistes, mitte-lineaarsetes viisides. Traditsiooniline Lottie, millel on rangelt jĂ€rjekindel ajastruktuur, ei suuda sellistes stsenaariumites sujuvalt toime tulla, mis sageli viib jĂ€rskude katkestuste vĂ”i ebamugavate hĂŒpeteni, kui liigutakse ebatavaliste vĂ”tmealade vahel: video-demonstratsioon 1, video-demonstratsioon 2.
- Twiinimise abil saavad arendajad nĂŒĂŒd teha interpolatsiooni otse kahe eraldi vĂ”tme raadi vahel, isegi kui need ei ole ajaskaalal lineaarselt jĂ€rjestatud. See vĂ”imaldab saavutada looduslikumaid ja sujuvamaid visuaalseid efekte olekute vaheliste ĂŒleminekute korral, mis suurendab oluliselt interaktiivsete animatsioonide paindlikkust ja realismi: video-demonstratsioon 1, video-demonstratsioon 2.
- NĂŒĂŒd toetatakse (katsefunktsioonina) muutuja vÀÀrtuste kĂ€itamise ajal uuesti kirjutamist, mis vĂ”imaldab dĂŒnaamiliselt teostada skripti loogikat kasutaja sisendi alusel. See muudab selle eriti vĂ”imsaks vahendiks interaktiivsete animatsioonide loomiseks Lottie ressursside abil, vĂ”imaldades luua individuaalseid variatsioone, mis ĂŒletavad algset disaini.video-demonstratsioon).
- Lisatud kohandatav varade lahendaja, mis tagab suurema paindlikkuse vÀliste ressursside (nt piltide) laadimisel, millele Lottie animatsioonid viitavad.
- Laiendatud tugi Lottie LayerEffect funktsioonile, vĂ”imaldades rikkalikke visuaalseid tĂ€iustusi otse animatsiooni kihtides, kasutades ĂŒlaltoodud kirjeldatud efekte.
- Kuna mÔned efektid vÔivad olla ressursimahukad, on pakutud kvaliteedi ja jÔudluse seadistamise valik, et renderdada efekte, mis sobib ideaalselt CPU piiratud platvormide optimeerimiseks. See vÔimaldab arendajatel kontrollida renderdamise tÀpsust ja optimeerida jÔudlust vastavalt sihtplatvormile.
- Avaldamise toetust on laiendatud jÀrgmiste vÔtmeomaduste ja -funktsioonide lisamisega:
- wiggle, temporalWiggle: juhusliku liikumise rakendamine, mis sÔltub ajast.
- pointOnPath: asukoha arvutamine teel.
- propertyIndex, groupIndex: viide vara vÔi grupi indeksile.
- value, property, effect: juurdepÀÀs vara vÀÀrtustele ja vÀlistele efektidele.
- TĂ€psem vastavus spetsifikatsioonidele:
- TextFollowPath â uus spetsifikatsioon, mis vĂ”imaldab tekstil jĂ€rgida omapĂ€raseid vektoriteid (video-demonstratsioon).
- Teksti joondamise parameetrid â tĂ€psem teksti kihtide kuvamine lĂ€htuvalt nende horisontaal- ja vertikaaljoondamise seadistustest (video-demonstratsioon).
- Maski laiendamine â uus funktsioon, mis vĂ”imaldab tĂ€psemalt kontrollida maski kuju mĂ”ju visuaalsele kompositsioonile (video-demonstratsioon).
- SVG
- ThorVG vĂ”imaldab nĂŒĂŒd pÀÀseda juurde ĂŒksikutele SVG-elementidele ja neid muuta, kasutades algfaile mÀÀratud unikaalseid id-attribuute. See funktsioon vĂ”imaldab arendajatel otse valida ja manipuleerida konkreetsete vektorfiguuridega imporditud SVG-skeenis, mis sobib suurepĂ€raselt interaktiivsete vĂ”i dĂŒnaamiliste rakenduste (nt teemade kohandamine, esiletĂ”stmine) jaoks.
- Tugi Gaussi udu efekti.
- Intelligentne renderdamine
- ThorVG tarkvaramootor toetab nĂŒĂŒd Intellegentset osalist renderdamist, mis tagab tĂ”husamad renderdamise tööd, uuendades ainult neid vektorskeemi osi, mis on muutunud. Sisemise muudetud alade jĂ€lgimise abil minimeerib see tarbetud uuendusi ja optimeerib ĂŒldiselt tulemuslikkuse. See funktsioon pakub olulisi eeliseid sellistes stsenaariumides nagu kasutajaliidese renderdamine, projekteerimistööriistad vĂ”i rakendused, kus enamik stseenist jÀÀb staatiliseks ja ainult vĂ€ikesed elemendid vĂ€rskendavad kaadrite vahel. Sel juhul vĂ”ib stseeni tĂ€ieliku renderdamise vĂ€ltimine oluliselt vĂ€hendada arvutuskoormust ja suurendada energiatarbimise efektiivsust, mis on eriti vÀÀrtuslik mobiilsete ja sisseehitatud sĂŒsteemide puhul.
- Selle eesmĂ€rgi saavutamiseks rakendab ThorVG 1.0 osalise renderdamise jaoks spetsiaalselt vĂ€lja töötatud algoritmiliste meetodite kombinatsiooni. Allpool on peamised strateegiad, mis pĂ”hinevad sellel sĂŒsteemil:
- Lineaarse lÀbitungimise algoritm: kujundid sorteeritakse x-koordinaatide jÀrgi ja rakendatakse lineaarse lÀbitungimise strateegiat, et vÀhendada tarbetuid kontrollimisi "mustade" alade osas. See vÀhendab keerukust O(N à M) pealt O(N + M + K + N log N)-ni, kus N on kujundite arv, M on "mustade" alade arv, K on tegelikud kattumised.
- Jagamine ja tingimuslik ĂŒhendamine: peene teraga osade jagamine tasakaalustatakse intelligentse ĂŒhendamisega fragmentatsiooni vĂ€ltimiseks. Sel juhul eelistatakse horisontaalset ĂŒhendamist efektiivsemaks mĂ€lu vahemĂ€lu kasutamiseks.
- Ruumi jagamine (vaikimisi 4Ă4 vĂ”rk): renderdamispind jagatakse 16 alaks, mis vĂ”imaldab kontrollida ainult vastavaid kujundite "musti" alasid, oluliselt vĂ€hendades kulusid keerukate kasutajaliidese vĂ€rskenduste puhul.
- Koostöös tagavad need tehnikad sujuvama ja kiirema renderdamise, eriti sissebuilt sĂŒsteemides vĂ”i reaalajas sĂŒsteemides, kus toimub sageli osalisi vĂ€rskendusi. Ăksikasjalik teave avaldatakse eraldi postituses. blogis.
- Pange tĂ€hele, et kĂ”rge dĂŒnaamilise sisu, nagu dĂŒnaamilised mĂ€ngud vĂ”i tĂ€isekraanianimatsioonid, puhul, kus peaaegu kĂ”ik objektid muutuvad igas kaadris, annab osaline renderdamine vĂ€he vĂ”i ei anna ĂŒldse eeliseid jĂ”udluses ning vĂ”ib isegi kaasa tuua vĂ€ikseid ĂŒlevaatusi. Sellistes olukordades on tavaliselt parem valida stseeni tĂ€isrenderdamine. Selle tĂ”ttu toetab ThorVG nii osalist kui ka tĂ€it renderdamist, mis annab teile vĂ”imaluse valida teie kasutusjuhtumi jaoks optimaalse lĂ€henemise. Saate analĂŒĂŒsida oma toote jĂ”udlust ja teha teadlikke otsuseid, kasutades valikut Meson -Dpartial=[true/false] ja seadistust EngineOption::Smart klassis SwCanvas:
auto canvas = SwCanvas::gen(EngineOption::Smart);
- Uus ajastukÀik veebitehnoloogiate integreerimisel WebGL, WebGPU ja kerge WebCanvas abil sujuvaks renderdamiseks brauseris
- WebGL ja WebGPU tagused backendid on nĂŒĂŒd ametlikult tootmiskasutuseks valmis. Need GPU-pĂ”hised renderdajad pakuvad nĂŒĂŒd tĂ€isfunktsionaalset ĂŒhilduvust traditsioonilise CPU backendiga, toetades kĂ”iki ThorVG Canvas'i vĂ”imalusi sama kvaliteedi ja pildistabiliteediga. VĂ”rreldes versiooniga 0.15 on GPU renderdamise jĂ”udlus tĂ”usnud rohkem kui 150%, mis toob kaasa mĂ€rkimisvÀÀrse tĂ€iustuse veebivektorigraafika reaalajas renderdamises.
- MÀrkimisvÀÀrne jÔudluse tÔus keskkondades, kus on piirangud CPU/GPU vÔimsusele ning sisseehitatud keskkondades.
- ThorVG 1.0 pakub vÔrreldes versiooniga 0.15 paremat jÔudlust, mÀrgatava kasvu nii CPU kui ka GPU osas.
- Peamised optimeerimised:
- Parandatud renderdamise toru efektiivsus.
- VĂ€hendatud kaadri puhvri eraldamise kulud.
- Optimeeritud Lottie koostise analĂŒĂŒs.
- Parandatud partii renderdamine ja GPU vahemÀlu.
- ThorVG on optimeeritud CPU-pĂ”hiseks rasteriseerimiseks, keskendudes vektorgraafika visualiseerimisele keskkondades, kus GPU ressursid on piiratud, puuduvad vĂ”i on tahtlikult kasutamata. TĂŒĂŒpilistes CPU testides nĂ€itab ThorVG keskmiselt 1.8 korda kĂ”rgemat jĂ”udlust vĂ”rreldes laialdaselt kasutatava vektorgraafikamootoriga Skia, tehes tavalisi vektorgraafika visualiseerimise ĂŒlesandeid. Eelis on eriti mĂ€rgatav geomeetria intensiivsetes stsenaariumides, nagu ristkĂŒlikute, joonte, pööramiste ja ringide visualiseerimine (screenshot 3).
- ThorVG Janitor
- ThorVG renderdamise jĂ”udluse tĂ”elist demonstreerimist saab nĂ€ha projektis ThorVG Janitor â interaktiivses mĂ€ngus, mis on loodud protsessori jĂ”udluse demonstreerimiseks kĂ”rgete graafiliste koormustega. Stseen sisaldab sadu vaenlasi, mis on loodud partikulaarsete graafikatehnoloogiate abil, mitmekihilised tĂ€heööd taustad koos tĂ€iskuva rastrifailidega, reaalajas visuaalsed efektid nagu DropShadow ja Blur, samuti kuni 25000 objekti, mis renderdatakse samal ajal. Isegi 2K (2048Ă1152) maksimaalsel koormusel nĂ€itab projekt stabiilset jĂ”udlust ĂŒle 120 FPS, mis tĂ”estab ThorVG efektiivsust ja sobivust keerukates keskkondades, kus on palju efekte.video-demonstratsioon, ekraanipilt).
- Teised olulised muudatused
- NĂ€ide ThorVG integreerimisest Godot'iga. Dokumendihalduses selle video-demonstratsiooni ThorVG on integreeritud Godot'iga veebikeskkonnas, et renderdada sadu Lottie animatsiooni objekte rohkem kui 120 kaadrit sekundis. See demonstreerib ThorVG potentsiaali veebikeskkonnas sujuvate ja kvaliteetsete animatsioonide reaalajas esitamiseks.
- Lisatud Ôpetlik nÀide ThorVG WebCanvas'i kasutamisest.
- Lisatud interaktiivne ThorVG Playground.
- Lisatud ThorVG mÀhis keelele Swift: https://github.com/thorvg/thorvg.swift.
- ThorVG kasutusnÀidised on viidud eraldi hoidlasse https://github.com/thorvg/thorvg.example.
- Avaldatud laiendus thorvg.vscode VSCode'i jaoks, et luua, redigeerida ja vaadata ThorVG ressursse otse Visual Studio Code'i keskkonnas.
- Versioonis 1.0 on API struktuuri oluliselt muudetud, et parandada jĂ”udlust, kasutusmugavust, ĂŒhtsust ja ĂŒhilduvust C-ga.
- Toetust TVG Picture (TVG) formaadile on eemaldatud. See otsus tehti, et ette valmistada uut ThorVG Picture formaati, mis keskendub animatsioonile kui peamisele kontseptsioonile.
- Mitmeid veaparandusi ja stabiilsuse parandusi tootmis kasutuseks.
Allikas: linux.org.ru
