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, došlo k vydání verze 1.0 lehké a přenosné multiplatformní knihovny vektorové grafiky ThorVG, určené k vizualizaci vektorových scén a animací. Podporováno je načítání souborů ve formátech Lottie a SVG Tiny 1.2 (seznam implementovaných funkcí SVG Tiny na Wiki projektu).

Knihovna poskytuje uživatelsky přívětivá API pro import, tvorbu a zobrazení vektorové grafiky, stejně jako pro její export do různých grafických formátů, což ji činí univerzální pro použití na různých softwarových platformách a aplikacích pro vizualizaci grafického obsahu. Také jsou dodávány konzolové nástroje lottie2gif a svg2png.

ThorVG se používá pro rendering vektorové grafiky v projektech, jako jsou Tizen OS, Godot Engine, LVGL a přehrávačích dotLottie.

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

To není jen aktualizace — je to přestavěný základ pro vysoce výkonnou, škálovatelnou a přenosnou dvourozměrnou vektorovou grafiku na všech platformách a zařízeních. Během vývoje se ThorVG stal vyzrálým, výrobně připraveným grafickým enginem, který prokázal ověřenou kvalitu a výkon v reálných aplikacích.

ThorVG rychle získal popularitu a vyvolal rostoucí zájem ze strany komunity, což odráží jeho evoluci z raného projektu na široce uznávaný a prakticky využívaný vektorový grafický engine, připravený pro reálné multiplatformní použití.

Seznam změn:

  • Pokročilé možnosti renderování textu, bohaté vizuální efekty a podpora přesného překryvu pro lepší grafické vyjádření
    • Podpora horizontálního a vertikálního zarovnání, která umožňuje přesnou kontrolu umístění textu v různých kontextech uživatelského rozhraní.
    • Automatické dělení řádků s možností volby režimu: podle znaků, podle slov, inteligentní dělení a zkracování s mnoha tečkami pro zpracování přetečení.
    • Podpora ručního zlomu řádků, což umožňuje vývojářům explicitně řídit zlomy řádků pomocí znaků nového řádku, jako je \n. To umožňuje přesně formátovat vícerozměrné textové bloky, zejména v dynamických rozvržení nebo textových animacích.
    • Podpora nastavitelného vzdálenosti mezi znaky, což umožňuje precizní úpravy pro zlepšení čitelnosti nebo dosažení specifických typografických stylů.
    • Podpora obrysování textu, která umožňuje vytvářet stylové efekty a zlepšovat kontrast na různých pozadích (snímek 1).
    • Byl představen komplexnější a konzistentnější systém režimů překrytí, který výrazně zlepšuje chování režimů překrytí a uvádí vzorce a logiku kompozice do souladu s průmyslovými standardy, jako jsou Lottie, SVG a specifikace W3C „Kompozice a míchání“. Tyto vylepšení zajišťují větší vizuální konzistenci a multiplatformní kompatibilitu, zejména v pracovních postupech webu a animace.
    • Byly implementovány a podporovány následující režimy překrytí: „Odtín“, „Sytost“, „Barva“ a „Jas“ pomocí kompozice barevného prostoru HSL. Tyto režimy zlepšují kompatibilitu s efekty vrstev Lottie a budoucí podporou míchání SVG (snímek 2).
    • Významná vylepšení a rozšíření ve vizuálních efektech na úrovni scény, čímž se vektorová grafika stává výraznější a vizuálně bohatší:
      • Efekt stínu s Gaussovým rozmazáním (video demonstrace).
      • Metody náhrady barev, které mění vzhled grafiky tím, že předefinují způsob aplikace, míchání nebo přiřazování barev na základě odstínu (video demonstrace).
    • Byly přidány nové pomocné funkce pro rozšíření interaktivních schopností. Ty zahrnují podporu prostorového informačního dotazu (demonstrace) a detekci zásahů do zobrazených objektů (video demonstrace).
  • Pokročilé možnosti animace Lottie pro multiplatformní přehrávání, včetně modulárních předvoleb Web Player, optimalizovaných z hlediska velikosti, výkonu a způsobu renderování (CPU/GPU)
    • Významná zlepšení v podpoře animací Lottie s vylepšenou kompatibilitou, flexibilitou a interaktivitou na všech platformách. Byla rozšířena nejen škála podporovaných funkcí a výrazů Lottie, ale i poskytnuty nástroje pro vývojáře, které umožňují dynamicky řídit chování animace za běhu, což činí ThorVG jednou z nejvýkonnějších knihoven pro přehrávání Lottie dostupných na trhu. Seznam realizovaných funkcionalit v projektu Wiki.
    • Souborová přípona .lot je novým oficiálním standardem IANA pro soubory Lottie. ThorVG nyní oficiálně podporuje .lot jako standardní formát souborů Lottie vedle tradiční přípony .json.
    • Tweening
      • Byla přidána podpora interpolace mezi nelineárně sousedními klíčovými snímky, což zajišťuje plynulejší přechody a přesnější řízení času. Toto zlepšení je obzvlášť účinné při používání přehrávání animací založených na stavech (také známém jako přehrávání na základě značek) v Lottie. V mnoha případech jsou animace určeny k přechodu mezi složitými, nelineárními stavy. Tradiční Lottie s její striktně sekvenční časovou strukturou má potíže s takovými scénáři, což často vede k náhlým přepnutím nebo nepříjemným skokům při přechodu mezi nesourodými klíčovými snímky: video demonstrační 1, video demonstrační 2.
      • S pomocí tweeningu mohou vývojáři nyní provádět interpolaci přímo mezi dvěma samostatnými klíčovými snímky, i když nejsou na časové ose lineárně sousední. To umožňuje dosáhnout přirozenějších a plynulejších vizuálních efektů při přechodech mezi stavy, což výrazně zvyšuje flexibilitu a realističnost interaktivních animací: video demonstrační 1, video demonstrační 2.
    • Nyní (jako experimentální funkce) je podporováno přepisování hodnot proměnných výrazů za běhu, což umožňuje dynamicky vykonávat skriptovou logiku na základě uživatelského vstupu. To jej činí zvláště mocným nástrojem pro vytváření interaktivních animací s využitím zdrojů Lottie, což umožňuje vytvářet individuální varianty, které přesahují původní design.video demonstrace).
    • Byl přidán přizpůsobitelný mechanismus Asset Resolver, který zajišťuje větší flexibilitu při načítání externích zdrojů (například obrázků), na které odkazují animace Lottie.
    • Rozšířená podpora funkce Lottie LayerEffect, která umožňuje provádět bohatá vizuální vylepšení přímo na vrstvách animace s výše uvedenými efekty.
    • Protože některé efekty mohou být náročné na zdroje, byla navržena možnost nastavit kvalitu a výkon pro vykreslení efektů, což je ideální pro optimalizaci na platformách s omezenými zdroji CPU. To umožňuje vývojářům kontrolovat přesnost vykreslení 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:
      • wiggle, temporalWiggle: aplikace náhodného pohybu závislého na čase.
      • pointOnPath: výpočet polohy podél cesty.
      • propertyIndex, groupIndex: odkazy na index vlastnosti nebo skupiny.
      • value, property, effect: přístup k hodnotám vlastností a externím efektům.
    • Přesnější soulady se specifikacemi:
      • TextFollowPath – nová specifikace umožňující textu sledovat libovolné vektorové cesty (video demonstrace).
      • Parametry zarovnání textu – přesnější zobrazení textových vrstev na základě nastavení jejich horizontálního a vertikálního zarovnání (video demonstrace).
      • Rozšíření masky – nová funkce, která umožňuje přesněji kontrolovat vliv tvaru masky na vizuální kompozici (video demonstrace).
  • SVG
    • ThorVG nyní umožňuje přístup k jednotlivým prvkům SVG a jejich úpravu pomocí unikátních atributů id definovaných v původním souboru SVG. Tato funkce umožňuje vývojářům přímo vybírat a manipulovat konkrétními vektorovými tvary v importované scéně SVG, což je ideální pro interaktivní nebo dynamické scénáře použití (například tematické úpravy, zvýraznění).
    • Podpora efekt rozmazání podle Gausse.
  • Inteligentní vykreslování
    • Programový engine ThorVG nyní podporuje inteligentní částečné vykreslování, které zařizuje efektivnější pracovní postupy tím, že aktualizuje pouze ty části vektorové scény, které se změnily. Díky internímu sledování změněných oblastí minimalizuje zbytečné překreslování a optimalizuje celkový výkon. Tato funkce přináší značné výhody v takových scénářích, jako je vykreslování uživatelského rozhraní, návrhové nástroje nebo aplikace, kde většina scény zůstává statická a mezi snímky se aktualizují pouze malé prvky. V těchto případech může opuštění úplného vykreslování scény výrazně snížit výpočetní zátěž a zvýšit energetickou účinnost, což je zvlášť cenné pro mobilní a vestavěné systémy.
    • Pro dosažení tohoto cíle používá ThorVG 1.0 kombinaci algoritmických metod, které byly speciálně navrženy pro částečné vykreslování. Níže jsou uvedeny hlavní strategie, na kterých je tato systém založen:
      • Algoritmus lineárního průchodu: objekty jsou tříděny podle x souřadnic a je aplikována strategie lineárního průchodu pro snížení zbytečných kontrol „zaplavených“ oblastí. Tím se snižuje složitost z O(N × M) na O(N + M + K + N log N), kde N je počet objektů, M je počet „zaplavených“ oblastí a K je počet skutečných překryvů.
      • Dělení a podmíněné sloučení: jemné dělení suboblastí je vyváženo inteligentním sloučením, aby se zabránilo fragmentaci. Při tom je upřednostňováno horizontální sloučení pro efektivnější využití paměťové cache.
      • Prostorové rozdělení (výchozí mřížka 4×4): vykreslovací plocha je rozdělena na 16 oblastí, což umožňuje kontrolovat pouze příslušné „zaplavené“ oblasti objektů, čímž se výrazně zvyšují náklady při složitých aktualizacích 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 reálného času, kde často dochází k částečným aktualizacím. Podrobnější informace budou zveřejněny v samostatném příspěvku. blogu.
    • Vezměte prosím na vědomí, že v případě vysoce dynamického obsahu, jako jsou dynamické hry nebo animace na celé obrazovce, kde se téměř všechny objekty mění v každém snímku, částečné vykreslování přináší málo nebo žádné výhody v oblasti výkonu a může dokonce způsobit drobné náklady navíc. V takových případech je obvykle lepší zvolit plné vykreslování scény. Z tohoto důvodu ThorVG podporuje jak částečné, tak plné konfigurace vykreslování, což vám dává možnost zvolit optimální přístup pro váš případ použití. Můžete analyzovat výkon vašeho produktu a učinit informované rozhodnutí pomocí volby Meson -Dpartial=[true/false] a volby EngineOption::Smart třídy SwCanvas:

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

  • Nová éra integrace webových technologií s WebGL, WebGPU a zjednodušeným WebCanvas pro bezproblémové vykreslování v prohlížeči.
    • Backendy WebGL a WebGPU jsou nyní oficiálně připraveny k výrobnímu použití. Tyto GPU založené rendererové nyní nabízejí plnou funkční kompatibilitu s tradičním CPU backendem, podporující všechny funkce ThorVG Canvas s vysokou kvalitou a stabilitou obrazu. Ve srovnání s verzí 0.15 se výkon vykreslování GPU zvýšil o více než 150 %, což zajišťuje významné zlepšení výkonu webové vektorové grafiky v reálném čase.
  • Významné zvýšení výkonu v prostředích s omezením výpočetní síly CPU/GPU a vestavěných prostředích.
    • ThorVG 1.0 nabízí zlepšený výkon ve srovnání s verzí 0.15, s výrazným nárůstem jak na CPU, tak na GPU.
    • Klíčové optimalizace:
      • Zlepšená efektivita vykreslovacího řetězce.
      • Snížené náklady na alokaci rámcového bufferu.
      • Optimalizovaná analýza kompozic Lottie.
      • Vylepšené hromadné vykreslování a cachování GPU.
    • ThorVG je optimalizován pro rastraci na bázi CPU, se zaměřením na vektorovou vizualizaci v prostředích, kde jsou zdroje GPU omezené, nedostupné nebo úmyslně nepoužívané. V typických testech CPU ThorVG vykazuje průměrně 1,8krát vyšší výkon ve srovnání s běžně používaným vektorovým grafickým enginem Skia při vykonávání typických úloh vektorové vizualizace. Výhoda je zvláště zřejmá ve scénářích s intenzivním využitím geometrie, jako je vizualizace obdélníků, čar, rotací a kruhů (snímek 3).
  • ThorVG Janitor
    • Skutečnou ukázku výkonu renderování ThorVG lze vidět v projektu ThorVG Janitor – interaktivní hře, vyvinuté k demonstraci výkonu procesoru při vysokém grafickém zatížení. Scéna zahrnuje stovky nepřátel vytvořených s pomocí grafiky založené na částečkách, vícestupňové pozadí hvězdné oblohy s celoplošnými rastrovými obrázky, vizuální efekty v reálném čase, jako je DropShadow a Blur, a až 25000 objektů renderovaných současně. I při špičkovém zatížení s rozlišením 2K (2048×1152) projekt vykazuje stabilní výkon nad 120 FPS, což podtrhuje efektivitu a použitelnost ThorVG pro složité prostředí s mnoha efekty (video demonstrace, snímek).
  • Další významné změny
    • Příklad integrace ThorVG do Godot. V této video demonstrační ukázce ThorVG je integrován s Godot ve webovém prostředí pro vykreslování stovek Lottie animačních objektů rychlostí přes 120 snímků za sekundu. Tato ukázka ukazuje potenciál ThorVG v webovém prostředí pro plynulou a vysoce kvalitní animaci za běhu.
    • Přidáno výukový příklad použití ThorVG WebCanvas.
    • Přidán interaktivní ThorVG Playground.
    • Byl přidán wrapper ThorVG pro jazyk 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.
    • Bylo publikováno rozšíření thorvg.vscode pro VSCode pro vytváření, úpravu a náhled zdrojů ThorVG přímo v prostředí Visual Studio Code.
    • Ve verzi 1.0 došlo k významné restrukturalizaci API zaměřené na zvýšení výkonu, uživatelské přívětivosti, konzistence a kompatibility s C.
    • Byla odstraněna podpora formátu TVG Picture (TVG). Toto rozhodnutí bylo učiněno s cílem připravit nový formát ThorVG Picture, vyvinutý s ohledem na animaci jako hlavní koncept.
    • Několik oprav chyb a vylepšení stability pro produkční použití.

Zdroj: linux.org.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster