ThorVG 1.0

ThorVG 1.0 ThorVG 1.0 ThorVG 1.0

31. januára, po obdobiach 1,5 roka nepretržitej práce, bol vydaný 1.0 ľahkej a prenosnej multiplatformovej knižnice vektorovej grafiky ThorVG, určené na vizualizáciu vektorových scén a animácií. Podporuje sa načítanie súborov vo formátoch Lottie a SVG Tiny 1.2 (zoznam realizovaných funkcií SVG Tiny na Wiki projektu).

Knižnica poskytuje pohodlné API na import, vytváranie a zobrazovanie vektorovej grafiky, ako aj na jej export do rôznych grafických formátov, čo ju robí univerzálnou na použitie v rôznych softvérových platformách a aplikáciách na vizualizáciu grafického obsahu. Tiež sú k dispozícii konzolové nástroje lottie2gif a svg2png.

ThorVG sa používa na renderovanie vektorovej grafiky v projektoch ako Tizen OS, Godot Engine, LVGL a prehrávačov dotLottie.

Projekt je naprogramovaný v C++ (štandard C++14) a šíri sa pod licenciou MIT.

Toto nie je len aktualizácia — je to prestavaný základ pre vysokovýkonnú, škálovateľnú a prenosnú dvojrozmernú vektorovú grafiku na všetkých platformách a zariadeniach. Počas vývoja sa ThorVG stal zrelým grafickým enginom pripraveným na výrobu, ktorý preukázal overenú kvalitu a výkon v reálnych aplikáciách.

ThorVG rýchlo získal popularitu a vyvolal rastúci záujem komunity, čo odráža jeho evolúciu od projektu v ranom štádiu po široko uznávaný a prakticky používaný vektorový grafický engin pripravený na reálne multiplatformové využitie.

Zoznam zmien:

  • Rozšírené možnosti renderovania textu, bohaté vizuálne efekty a podpora presného prekrytia pre vylepšené grafické vyjadrenie
    • Podpora horizontálneho a vertikálneho zarovnania, čo umožňuje presne kontrolovať umiestnenie textu v rôznych kontextoch užívateľského rozhrania.
    • Automatické lámanie riadkov s možnosťou výberu režimu: podľa znakov, podľa slov, inteligentné lámanie a skratky s elipsou pre spracovanie preplnenia.
    • Podpora manuálneho lámania riadkov, čo umožňuje vývojárom jasne kontrolovať lámanie riadkov pomocou znakov nového riadku, ako je \n. To umožňuje presné formátovanie viacriadkových textových blokov, najmä v dynamických rozvrhnutiach alebo textových animáciách.
    • Podpora nastaviteľnej vzdialenosti medzi znakmi, čo umožňuje presné nastavenie na zlepšenie čitateľnosti alebo dosiahnutie určitých typografických štýlov.
    • Podpora obrysu textu, ktorá umožňuje vytvárať štýlové efekty a zlepšovať kontrast na rôznych pozadiach (snímek 1).
    • Predstavený je komplexnejší a konzistentnejší systém režimov prekrytia, ktorý výrazne zlepšuje správanie režimov prekrytia a uvádza vzorce a logiku kompozície do zhody s priemyselnými štandardmi ako Lottie, SVG a špecifikácia W3C „Prekrývanie a miešanie“. Tieto vylepšenia zabezpečujú väčšiu vizuálnu konzistenciu a medzi platformami kompatibilitu, najmä v webových a animačných pracovných procesoch.
    • Implementované a podporované sú nasledujúce režimy prekrytia: „Odtieň“, „Saturácia“, „Farba“ a „Žiarivosť“ s použitím kompozície farebného priestoru HSL. Tieto režimy zlepšujú kompatibilitu s efektmi vrstiev Lottie a budúcou podporou miešania SVG (snímek 2).
    • Významné vylepšenia a rozšírenia vo vizuálnych efektoch na úrovni scény, čím sa vektorová grafika stáva výraznejšou a vizuálne bohatšou:
      • Efekt tieňa s Gaußovým rozmazaním (video-demonštrácia).
      • Metódy výmeny farieb, ktoré menia vzhľad grafiky predefinovaním spôsobu aplikácie, miešania alebo zladenia farieb na základe odtieňa (video-demonštrácia).
    • Pridali sa nové pomocné funkcie na rozšírenie interaktívnych možností. Tieto zahŕňajú podporu dotazov na priestorové informácie (demonštrácia) a detekciu zásahov do zobrazených objektov (video-demonštrácia).
  • Rozšírené možnosti animácie Lottie pre medzi-platformové prehrávanie, vrátane modulárnych prednastavení Web Player, optimalizovaných z hľadiska veľkosti, výkonu a režimu rendrovania (CPU/GPU)
    • Významné vylepšenia v podpore animácie Lottie so zlepšením kompatibility, flexibility a interaktivity na všetkých platformách. Rozšíril sa nielen rozsah podporovaných funkcií a výrazov Lottie, ale aj poskytnuté nástroje pre vývojárov, ktoré umožňujú dynamicky ovládať správanie animácie počas behu, čo robí ThorVG jednou z najvýkonnejších knižníc na prehrávanie Lottie dostupných na trhu. Zoznam implementovaných funkcií v Wiki projekte.
    • Dnes je prípona súboru .lot novým oficiálnym štandardom IANA pre súbory Lottie. ThorVG teraz oficiálne podporuje .lot ako štandardný formát súborov Lottie okrem tradičnej prípony .json.
    • Tweening
      • Pridaná podpora interpolácie medzi nelinárne súvisiacimi kľúčovými snímkami, čo zabezpečuje hladšie prechody a presnejšie riadenie času. Toto vylepšenie je obzvlášť efektívne pri používaní s prehrávaním animácií na základe stavov (tiež známym ako prehrávanie na základe značiek) v Lottie. V mnohých prípadoch sú animácie navrhnuté na prechody medzi stavmi zložitými, nelinárnymi spôsobmi. Tradičná Lottie so svojou prísne sekvenčnou časovou štruktúrou s týmto scenárom ťažko zápasí, čo často vedie k ostrým resetom alebo nemotorným skokom pri prechode medzi nesúvisiacimi kľúčovými snímkami: video demonštrácia 1, video demonštrácia 2.
      • S pomocou tweeningu môžu vývojári teraz vykonávať interpoláciu priamo medzi dvoma samostatnými kľúčovými snímkami, aj keď nie sú linárne súvisiace na časovej osi. To umožňuje dosiahnuť prirodzenejšie a hladšie vizuálne efekty pri prechodoch medzi stavmi, čo výrazne zvyšuje flexibilitu a realistickosť interaktívnych animácií: video demonštrácia 1, video demonštrácia 2.
    • Teraz (ako experimentálna funkcia) sa podporuje prepisovanie hodnôt premenných výrazov počas behu, čo umožňuje dynamicky vykonávať logiku skriptu na základe vstupu používateľa. To robí z tohto mocný nástroj pre vytváranie interaktívnych animácií s využitím zdrojov Lottie, umožňujúci vytvárať individuálne varianty, ktoré presahujú pôvodný dizajn (video-demonštrácia).
    • Pridaný prispôsobiteľný mechanizmus Asset Resolver, ktorý poskytuje väčšiu flexibilitu pri načítavaní externých zdrojov (napríklad obrázkov), na ktoré sa odvolávajú animácie Lottie.
    • Rozšírená podpora funkcie Lottie LayerEffect, ktorá umožňuje bohaté vizuálne vylepšenia priamo na vrstvách animácie s efektmi, ktoré boli popísané vyššie.
    • Keďže niektoré efekty môžu byť náročné na zdroje, bola navrhnutá možnosť nastavenia kvality a výkonnosti pre vykresľovanie efektov, čo je ideálne na optimalizáciu na platformách s obmedzenými CPU. To umožňuje vývojárom kontrolovať presnosť vykresľovania a optimalizovať výkon v závislosti od cieľovej platformy.
    • Podpora výrazov bola rozšírená o pridanie nasledujúcich kľúčových funkcií a vlastností:
      • wiggle, temporalWiggle: použitie náhodného pohybu závislého od času.
      • pointOnPath: výpočet polohy pozdĺž cesty.
      • propertyIndex, groupIndex: odkaz na index vlastnosti alebo skupiny.
      • value, property, effect: prístup k hodnotám vlastností a externým efektom.
    • Presnejšie dodržiavanie špecifikácií:
      • TextFollowPath – nová špecifikácia, ktorá umožňuje textu sledovať ľubovoľné vektorové cesty (video-demonštrácia).
      • Možnosti zarovnania textu – presnejšie zobrazenie textových vrstiev na základe nastavení ich horizontálneho a vertikálneho zarovnania (video-demonštrácia).
      • Rozšírenie masky – nová funkcia, ktorá umožňuje presnejšie ovládať vplyv tvaru masky na vizuálnu kompozíciu (video-demonštrácia).
  • SVG
    • ThorVG teraz umožňuje prístup k jednotlivým prvkom SVG a ich úpravu pomocou jedinečných atribútov id, ktoré sú definované v pôvodnom súbore SVG. Táto funkcia umožňuje vývojárom priamo vyberať a manipulovať konkrétnymi vektorovými tvarmi v importovanej scéne SVG, čo je ideálne pre interaktívne alebo dynamické scenáre použitia (napríklad tématické úpravy, zvýraznenie).
    • Podpora efekt rozmazania podľa Gaussa.
  • inteligentné vykresľovanie
    • Programový engin ThorVG teraz podporuje inteligentné čiastočné renderovanie, ktoré zabezpečuje efektívnejšie pracovné toky renderovania aktualizovaním iba tých častí vektorovej scény, ktoré sa zmenili. Vďaka internému sledovaniu zmenených oblastí minimalizuje zbytočné pre-renderovanie a optimalizuje celkový výkon. Táto funkcia prináša významné výhody v scénároch, ako je renderovanie používateľských rozhraní, nástroje na navrhovanie alebo aplikácie, v ktorých väčšina scény zostáva statická a medzi snímkami sa aktualizujú iba malé prvky. V takýchto prípadoch vynechanie kompletného renderovania scény môže výrazne znížiť výpočtovú záťaž a zvýšiť energetickú efektívnosť, čo je obzvlášť cenné pre mobilné a zabudované systémy.
    • Na dosiahnutie tohto cieľa ThorVG 1.0 aplikuje kombináciu algoritmických metód, špeciálne navrhnutých pre čiastočné renderovanie. Nižšie sú uvedené hlavné stratégie, na ktorých táto sústava spočíva:
      • Algoritmus lineárneho priechodu: tvary sú zoradené podľa súradníc x a je aplikovaná stratégia lineárneho priechodu na zníženie zbytočných kontrol "špinavých" oblastí. To znižuje zložitosti z O(N × M) na O(N + M + K + N log N), kde N je počet tvarov, M je počet "špinavých" oblastí, K je počet skutočných prekrytí.
      • Rozdelenie a podmienené zlúčenie: jemné rozdelenie podoblastí je vyvážené inteligentným zlúčením, aby sa predišlo fragmentácii. Pri tom sa uprednostňuje horizontálne zlúčenie pre efektívnejšie využitie pamäťového cache.
      • Priestorové rozdelenie (predvolene mriežka 4×4): povrch na renderovanie je rozdelený na 16 oblastí, čo umožňuje kontrolovať iba príslušné "špinavé" oblasti tvarov, čím sa výrazne znižujú náklady pri zložitých aktualizáciách používateľského rozhrania.
    • Spolu tieto techniky zabezpečujú plynulejšie a rýchlejšie renderovanie, najmä v zabudovaných systémoch alebo systémoch reálneho času, kde sa často vykonávajú čiastočné aktualizácie. Podrobnejšie informácie budú zverejnené v samostatnom príspevku. blogu.
    • Vezmite na vedomie, že v prípade vysoko dynamického obsahu, ako sú dynamické hry alebo celoobrazovkové animácie, kde sa takmer všetky objekty menia v každom snímku, čiastočné vykresľovanie poskytuje málo alebo vôbec žiadne výhody v oblasti výkonu a môže dokonca viesť k malým režijným nákladom. V takýchto prípadoch je zvyčajne lepšie zvoliť kompletné vykreslenie scény. Z tohto dôvodu ThorVG podporuje ako čiastočnú, tak aj úplnú konfiguráciu vykresľovania, čo vám dáva možnosť zvoliť optimálny prístup pre vašu konkrétnu aplikáciu. Môžete analyzovať výkon vášho produktu a prijať informované rozhodnutie pomocou voľby Meson -Dpartial=[true/false] a voľby EngineOption::Smart triedy SwCanvas:

    auto canvas = SwCanvas::gen(EngineOption::Smart);

  • Nová éra integrácie webových technológií s WebGL, WebGPU a zjednodušeným WebCanvas pre bezproblémové vykresľovanie v prehliadači
    • Backendy WebGL a WebGPU sú teraz oficiálne pripravené na produkčné použitie. Tieto vykresľovače na báze GPU teraz ponúkajú plnú funkčnú kompatibilitu s tradičným backendom CPU, pričom podporujú všetky možnosti ThorVG Canvas s rovnakou kvalitou a stabilitou obrazu. V porovnaní s verziou 0.15 sa výkon vykresľovania GPU zvýšil o viac ako 150 %, čo prináša významné zlepšenie vykresľovania webovej vektorovej grafiky v reálnom čase.
  • Významné zlepšenie výkonu v prostrediach s obmedzením výkonu CPU/GPU a integrovaných prostrediach
    • ThorVG 1.0 ponúka vylepšený výkon v porovnaní s verziou 0.15, s výrazným nárastom výkonu ako pre CPU, tak aj pre GPU.
    • Kľúčové optimalizácie:
      • Zlepšená efektivita vykresľovacieho potrubia.
      • Znížené režijné náklady na alokáciu rámca.
      • Optimalizovaná analýza kompozícií Lottie.
      • Vylepšené dávkové vykresľovanie a vyrovnávanie GPU.
    • ThorVG je optimalizovaný pre rastrovú grafiku na báze CPU, s dôrazom na vektorovú vizualizáciu v prostrediach, kde sú zdroje GPU obmedzené, nedostupné alebo úmyselne nie sú použité. V typických testoch CPU ThorVG vykazuje priemerný výkon 1,8-krát vyšší v porovnaní so široko používaným motorom vektorovej grafiky Skia pri vykonávaní typických úloh vektorovej vizualizácie. Výhoda je obzvlášť viditeľná v scenároch s intenzívnym použitím geometrie, ako je vizualizácia obdĺžnikov, šrafov, rotácií a kruhov (screenshot 3).
  • ThorVG Janitor
    • Skutočnú ukážku výkonu renderovania ThorVG je možné vidieť v projekte ThorVG Janitor – interaktívnej hre vyvinutej na demonštráciu výkonu procesora pri vysokej grafickej záťaži. Scéna zahŕňa stovky nepriateľov vytvorených pomocou grafiky založenej na časticiach, viacvrstvové pozadie hviezdnej oblohy s plnoformátovými rastrovými obrázkami, vizuálne efekty v reálnom čase, ako sú DropShadow a Blur, a až 25000 objektov zobrazených súčasne. Aj pri vrcholnej záťaži s rozlíšením 2K (2048×1152) projekt vykazuje stabilný výkon nad 120 FPS, čo podčiarkuje efektívnosť a vhodnosť ThorVG pre zložitá prostredia s množstvom efektov (video-demonštrácia, snímka obrazovky).
  • Iné významné zmeny
    • Príklad integrácie ThorVG do Godot. V v tejto video ukážke ThorVG je integrovaný s Godot v webovom prostredí na renderovanie stoviek objektov animácie Lottie rýchlosťou nad 120 snímok za sekundu. Táto ukážka ukazuje potenciál ThorVG v webovom prostredí pre plynulú a vysokokvalitnú animáciu počas vykonávania.
    • Pridané výučbový príklad využitia ThorVG WebCanvas.
    • Pridaný interaktívny ThorVG Playground.
    • Bol pridaný wrapper ThorVG pre jazyk Swift: https://github.com/thorvg/thorvg.swift.
    • Príklady využitia ThorVG boli presunuté do samostatného repozitára https://github.com/thorvg/thorvg.example.
    • Publikované rozšírenie thorvg.vscode pre VSCode na vytváranie, úpravu a náhľad zdrojov ThorVG priamo v prostredí Visual Studio Code.
    • Vo verzii 1.0 došlo k zásadnej reštrukturalizácii API, zameranej na zvýšenie výkonu, používateľskej prívetivosti, konzistencie a kompatibility s C.
    • Podpora formátu TVG Picture (TVG) bola odstránená. Toto rozhodnutie bolo prijaté na prípravu nového formátu ThorVG Picture, vyvinutého s ohľadom na animáciu ako hlavnú koncepciu.
    • Rôzne opravy chýb a zlepšenie stability pre výrobné použitie.

Zdroj: linux.org.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster