ThorVG 1.0

ThorVG 1.0 ThorVG 1.0 ThorVG 1.0

31. ledna, po roce a půl nepřetržitého vývoje, byla vydána verze 1.0 této lehké a přenosné multiplatformní knihovny pro vektorovou grafiku. ThorVG, určený pro vizualizaci vektorových scén a animací. Jsou podporovány soubory v následujících formátech Lottie и SVG Tiny 1.2 (Seznam implementovaných funkcí SVG Tiny je k dispozici na Wiki projektu.).

Knihovna poskytuje pohodlná API pro import, vytváření a zobrazování vektorové grafiky a také pro její export do různých grafických formátů, díky čemuž je univerzálně použitelný pro různé softwarové platformy a aplikace pro vizualizaci grafického obsahu. Součástí jsou také utility příkazového řádku lottie2gif a svg2png.

ThorVG se používá pro vykreslování vektorové grafiky v projektech jako například Tizen OS, Godotův motor, LVGL a hráči dotLottie.

Projekt je napsán v jazyce C++ (standard C++14) a je distribuován pod licencí MIT.

Nejedná se jen o aktualizaci – jde o přestavěný základ pro vysoce výkonnou, škálovatelnou a přenosnou 2D vektorovou grafiku na všech platformách a zařízeních. Během svého vývoje se ThorVG vyvinul v zralý grafický engine připravený pro produkční prostředí, který prokazuje osvědčenou kvalitu a výkon v reálných aplikacích.

ThorVG si rychle získal popularitu a přitahoval rostoucí zájem komunity, což odráží jeho vývoj z projektu v rané fázi na široce uznávaný a široce používaný vektorový grafický engine připravený pro skutečné multiplatformní použití.

Seznam změn:

  • Pokročilé možnosti vykreslování textu, bohaté vizuální efekty a přesná podpora překrytí pro vylepšené grafické vyjádření
    • Podpora horizontálního a vertikálního zarovnání umožňuje přesnou kontrolu nad umístěním textu v různých kontextech uživatelského rozhraní.
    • Automatické dělení řádků s možností výběru režimu: po znacích, po slovech, inteligentní dělení a zkracování elipsou pro ošetření přetečení.
    • Podpora ručních zalomení řádků umožňuje vývojářům explicitně ovládat zalomení řádků pomocí znaků nového řádku, jako je \n. To umožňuje přesné formátování víceřádkových textových bloků, zejména v dynamických rozvrženích nebo textových animacích.
    • Podpora nastavitelného rozestupu znaků, což umožňuje jemné doladění pro zlepšení čitelnosti nebo dosažení specifických typografických stylů.
    • Podpora obrysu textu umožňuje vytvářet stylistické efekty a vylepšovat kontrast na různých pozadích (snímek obrazovky 1).
    • Byl zaveden komplexnější a konzistentnější systém režimů prolnutí, který výrazně vylepšuje chování režimů prolnutí a sladí vzorce a logiku kompozice s oborovými standardy, jako jsou Lottie, SVG a specifikace W3C Compositing and Blending. Tato vylepšení poskytují větší vizuální konzistenci a kompatibilitu napříč platformami, zejména v oblasti webových a animačních pracovních postupů.
    • Jsou implementovány a podporovány následující režimy prolnutí: Odstín, Sytost, Barva a Světlost, s využitím kompozice barevného prostoru HSL. Tyto režimy zlepšují kompatibilitu s efekty vrstev Lottie a budoucí podporou prolnutí SVG (snímek obrazovky 2).
    • Významná vylepšení a rozšíření vizuálních efektů na úrovni scény, díky nimž je vektorová grafika expresivnější a vizuálně bohatší:
      • Efekt stínu s filtrem Gaussovské rozostření (videoukázka).
      • Techniky nahrazování barev, které mění vzhled grafiky předefinováním způsobu, jakým jsou barvy nanášeny, míchány nebo porovnávány na základě odstínu (videoukázka).
    • Byly přidány nové pomocné funkce pro vylepšení interaktivních možností. Patří mezi ně podpora pro dotazy na prostorové informace (demonstrace) a detekce zásahů do zobrazených objektů (videoukázka).
  • Vylepšené animační funkce Lottie pro přehrávání napříč platformami, včetně modulárních předvoleb webového přehrávače optimalizovaných pro velikost, výkon a režim vykreslování (CPU/GPU)
    • Významná vylepšení podpory animací Lottie zlepšují kompatibilitu, flexibilitu a interaktivitu na všech platformách. Nejenže byl rozšířen rozsah podporovaných funkcí a výrazů Lottie, ale byly poskytnuty i vývojářské nástroje pro dynamické řízení chování animace za běhu, což z ThorVG dělá jednu z nejvýkonnějších dostupných knihoven pro přehrávání Lottie. Seznam implementovaných funkcí je k dispozici na Wiki stránce projektu..
    • K dnešnímu dni je přípona souboru .lot novým oficiálním standardem IANA pro soubory Lottie. ThorVG nyní oficiálně podporuje .lot jako standardní formát souborů Lottie, a to vedle tradiční přípony .json.
    • Twining
      • Byla přidána podpora interpolace mezi nelineárně sousedícími klíčovými snímky, která umožňuje plynulejší přechody a přesnější řízení časování. Toto vylepšení je obzvláště efektivní při použití s ​​přehráváním animací založeným na stavech (také známém jako přehrávání založené na značkách) v Lottie. V mnoha případech jsou animace navrženy tak, aby přecházely mezi stavy složitým, nelineárním způsobem. Tradiční Lottie se svou striktně sekvenční strukturou časování se s takovými scénáři potýká jen s obtížemi, což často vede k náhlým poklesům nebo nepříjemným skokům při přechodu mezi nesekvenčními klíčovými snímky: video ukázka 1, video ukázka 2.
      • Díky doplnění (tweening) mohou vývojáři nyní interpolovat přímo mezi dvěma jednotlivými klíčovými snímky, i když na časové ose lineárně nesousedí. To umožňuje přirozenější a plynulejší vizuální efekty během přechodů mezi stavy, což výrazně zvyšuje flexibilitu a realismus interaktivních animací: video ukázka 1, video ukázka 2.
    • Nyní (jako experimentální funkce) je podporováno přepisování výrazových proměnných za běhu, což umožňuje dynamické spouštění logiky skriptu na základě vstupu uživatele. Díky tomu je to obzvláště výkonný nástroj pro vytváření interaktivních animací s využitím datových zdrojů Lottie, což umožňuje vlastní varianty, které jdou nad rámec původního návrhu.videoukázka).
    • Byl přidán přizpůsobitelný překladač datových zdrojů, který poskytuje větší flexibilitu při načítání externích datových zdrojů (například obrázků) odkazovaných animacemi Lottie.
    • Rozšířená podpora pro Lottie LayerEffect, která umožňuje aplikovat bohatá vizuální vylepšení přímo na animační vrstvy s efekty popsanými výše.
    • Protože některé efekty mohou být náročné na zdroje, je k dispozici možnost upravit kvalitu a výkon vykreslování efektů, což je ideální pro optimalizaci na platformách s omezeným výkonem CPU. To umožňuje vývojářům řídit přesnost vykreslování a optimalizovat výkon v závislosti na cílové platformě.
    • Podpora výrazů byla rozšířena o následující klíčové funkce a vlastnosti:
      • vrtění, temporalWiggle: Aplikuje náhodný pohyb založený na čase.
      • pointOnPath: Vypočítává pozici podél cesty.
      • propertyIndex, groupIndex: Odkaz na index vlastnosti nebo skupiny.
      • hodnota, vlastnost, účinek: přístup k hodnotám vlastností a externím účinkům.
    • Přesnější shoda se specifikacemi:
      • TextFollowPath je nová specifikace, která umožňuje textu sledovat libovolné vektorové cesty (videoukázka).
      • Možnosti zarovnání textu – Přesnější zobrazení textových vrstev na základě jejich nastavení horizontálního a vertikálního zarovnání (videoukázka).
      • Rozšíření masky je nová funkce, která umožňuje přesněji ovládat, jak tvar masky ovlivňuje vizuální kompozici (videoukázka).
  • SVG
    • ThorVG nyní umožňuje přístup k jednotlivým prvkům SVG a jejich úpravu pomocí jedinečných atributů identifikace definovaných ve zdrojovém souboru SVG. Tato funkce umožňuje vývojářům přímo vybírat a manipulovat s konkrétními vektorovými tvary v importované scéně SVG, což je ideální pro interaktivní nebo dynamické případy použití (např. motivy, zvýrazňování).
    • Podpora Gaussovský efekt rozmazání.
  • Inteligentní vykreslování
    • Softwarový engine ThorVG nyní podporuje inteligentní částečné renderování, které umožňuje efektivnější pracovní postupy renderování aktualizací pouze těch částí vektorové scény, které se změnily. Interním sledováním změněných oblastí minimalizuje zbytečné překreslování a optimalizuje celkový výkon. Tato funkce poskytuje významné výhody ve scénářích, jako je renderování uživatelského rozhraní, návrhové nástroje nebo aplikace, ve kterých většina scény zůstává statická a mezi snímky se aktualizují pouze malé prvky. V takových případech může vyhnutí se renderování celé scény výrazně snížit výpočetní zátěž a zlepšit energetickou účinnost, což je obzvláště cenné pro mobilní a vestavěné systémy.
    • K dosažení tohoto cíle využívá ThorVG 1.0 kombinaci algoritmických metod speciálně navržených pro částečné vykreslování. Klíčové strategie, které jsou základem tohoto systému, jsou následující:
      • Lineární algoritmus průchodu: Tvary jsou seřazeny podle souřadnic x a je použita strategie lineárního průchodu pro snížení zbytečných kontrol znečištěných oblastí. To snižuje složitost z O(N × M) na O(N + M + K + N log N), kde N je počet tvarů, M je počet znečištěných oblastí a K je počet skutečných překrytí.
      • Dělení a podmíněné slučování: jemnozrnné dělení podoblastí je vyváženo inteligentním slučováním, aby se zabránilo fragmentaci. Horizontální slučování je upřednostňováno pro efektivnější využití mezipaměti.
      • Prostorové dělení (výchozí mřížka 4x4): Vykreslovací plocha je rozdělena do 16 oblastí, což umožňuje kontrolu pouze odpovídajících „nečistých“ oblastí tvarů, což výrazně snižuje režijní náklady během složitých aktualizací uživatelského rozhraní.
    • Tyto techniky společně zajišťují plynulejší a rychlejší vykreslování, zejména ve vestavěných systémech nebo systémech pracujících v reálném čase, kde dochází k častým částečným aktualizacím. Více podrobností bude zveřejněno v samostatném příspěvku. blogu.
    • Upozorňujeme, že u vysoce dynamického obsahu, jako jsou rychlé hry nebo animace na celou obrazovku, kde se téměř všechny objekty mění v každém snímku, poskytuje částečné vykreslování malý nebo žádný užitek z hlediska výkonu a může dokonce způsobit mírné zatížení. V takových případech je obvykle lepší volbou vykreslování celé scény. Z tohoto důvodu ThorVG podporuje konfigurace částečného i úplného vykreslování, což vám umožňuje zvolit optimální přístup pro váš případ použití. Výkon vašeho produktu můžete analyzovat a informovaně se rozhodnout pomocí možnosti Meson -Dpartial=[true/false] a možnosti EngineOption::Smart třídy SwCanvas:

    automatické plátno = SwCanvas::gen(Možnost_motoru::Smart);

  • Nová éra webové integrace s WebGL, WebGPU a odlehčeným WebCanvas pro bezproblémové vykreslování v prohlížeči
    • Backendy WebGL a WebGPU jsou nyní oficiálně připraveny pro produkční použití. Tyto renderery založené na GPU nyní nabízejí plnou interoperabilitu s tradičním backendem CPU a podporují všechny funkce ThorVG Canvas se stejnou kvalitou obrazu a stabilitou. Ve srovnání s verzí 0.15 se výkon renderování GPU zvýšil o více než 150 %, což přináší významné zlepšení v renderování webové vektorové grafiky v reálném čase.
  • Významné zlepšení výkonu v prostředích s omezeným výkonem CPU/GPU a vestavěných prostředích
    • ThorVG 1.0 nabízí oproti verzi 0.15 vylepšený výkon s patrným zlepšením jak pro CPU, tak pro GPU.
    • Klíčové optimalizace:
      • Vylepšená efektivita renderovacího kanálu.
      • Snížená režie alokace vyrovnávací paměti snímků.
      • Optimalizovaná analýza složení Lottie.
      • Vylepšené dávkové vykreslování a ukládání do mezipaměti GPU.
    • ThorVG je optimalizován pro rastrování založené na CPU, se zaměřením na vektorové vykreslování v prostředích, kde jsou zdroje GPU omezené, nedostupné nebo záměrně nedostatečně využívané. V typických benchmarkech CPU vykazuje ThorVG v průměru 1.8krát rychlejší výkon než široce používaný vektorový grafický engine Skia při provádění typických úloh vektorového vykreslování. Tato výhoda je zvláště patrná v geometricky náročných scénářích, jako je vykreslování obdélníků, tahů, rotací a kruhů (snímek obrazovky 3).
  • ThorVG Školník
    • Reálnou demonstraci renderovacího výkonu ThorVG lze vidět v projektu. ThorVG Školník – interaktivní hra navržená tak, aby demonstrovala výkon procesoru při vysoké grafické zátěži. Scéna zahrnuje stovky nepřátel vytvořených pomocí částicové grafiky, vícevrstvé pozadí hvězdné oblohy s bitmapami v plné velikosti, vizuální efekty v reálném čase, jako jsou DropShadow a Blur, a až 25 000 objektů vykreslených současně. I při maximálním zatížení v rozlišení 2K (2048×1152) projekt vykazuje stabilní výkon nad 120 FPS, což zdůrazňuje efektivitu a vhodnost ThorVG pro komplexní prostředí s vysokým počtem efektů.videoukázka, snímek obrazovky).
  • Další významné změny
    • Příklad integrace ThorVG v Godotu. V tato video ukázka ThorVG je integrován s Godotem ve webovém prostředí a umožňuje vykreslování stovek animovaných objektů Lottie rychlostí přes 120 snímků za sekundu. Tato ukázka demonstruje potenciál ThorVG ve webovém prostředí pro plynulou a vysoce kvalitní animaci za běhu.
    • Přidat příklad výuky pomocí ThorVG WebCanvas.
    • Přidána interaktivní Hřiště ThorVG.
    • Přidán obalový modul ThorVG pro Swift: https://github.com/thorvg/thorvg.swift.
    • Příklady použití ThorVG byly přesunuty do samostatného repozitáře. https://github.com/thorvg/thorvg.example.
    • Rozšíření zveřejněno thorvg.vscode aby VSCode mohl vytvářet, upravovat a zobrazovat náhled zdrojů ThorVG přímo v kódu Visual Studio.
    • Verze 1.0 obsahuje významnou restrukturalizaci API zaměřenou na zlepšení výkonu, použitelnosti, konzistence a kompatibility s jazykem C.
    • Podpora formátu TVG Picture (TVG) byla odstraněna. Toto rozhodnutí bylo učiněno v rámci přípravy na nový formát ThorVG Picture, jehož hlavním konceptem je animace.
    • Opravena řada chyb a vylepšena stabilita pro produkční použití.

Zdroj: linux.org.ru

Přidat komentář