Január 31-én, másfél év folyamatos fejlesztés után megjelent a ThorVG 1.0, egy könnyű és hordozható, többplatformos vektorgrafikai könyvtár. ThorVG, amely vektorscénák és animációk vizualizációjára készült. Támogatja a fájlok betöltését a következő formátumokban: Lottie és SVG Tiny 1.2 (az SVG Tiny megvalósított lehetőségeinek listája a projekt Wiki-jában.).
A könyvtár kényelmes API-kat biztosít az importáláshoz, létrehozáshoz és vektorgrafikák megjelenítéséhez, valamint a különböző grafikai formátumokba való exportálásához, ami sokoldalú használatot biztosít különböző szoftverplatformokon és grafikai tartalom vizualizáló alkalmazásokban. Emellett konzol programokat is biztosít, mint a lottie2gif és svg2png. A ThorVG-t vektorgrafika renderelésére használják olyan projektekben, mint
Tizen OS Godot Engine, LVGL, és lejátszók, dotLottie A projekt C++ nyelven készült (C++14 szabvány) és MIT licenc alatt terjesztik..
Ez nem csupán egy frissítés – ez az alapja egy magas teljesítményű, skálázható és hordozható kétdimensionális vektorgrafikának minden platformon és eszközön. A ThorVG fejlesztés során érett, gyártásra kész grafikai motorrá vált, amely bizonyított minőséget és teljesítményt mutatott a valós alkalmazásokban.
A ThorVG gyorsan népszerűvé vált, és egyre nagyobb érdeklődést váltott ki a közösség részéről, ami tükrözi annak evolúcióját a korai stádiumú projekttől kezdve a széles körben elismert és gyakorlatilag használt vektorgrafikai motorig, amely kész a valós multiplatformos használatra.
Javított szöveg renderelési lehetőségek, gazdag vizuális hatások és pontos átfedés támogatása a jobb grafikai kifejezés érdekében.
Változások listája:
- Támogatja a vízszintes és függőleges igazítást, lehetővé téve a szöveg pontos elhelyezésének ellenőrzését a felhasználói felület különböző kontextusaiban.
- Automatikus sortörés lehetőséggel a mód kiválasztására: karakterek, szavak, intelligens törés és három ponttal történő levágás a túlcsordulás kezelésére.
- Automatikus sorbontás a következő módokkal: karakterek, szavak, intelligens bontás és pontozott levágás a túlfolyás kezelésére.
- A sortbreak management feature allows developers to explicitly control line breaks using newline characters like \n. This enables precise formatting of multi-line text blocks, especially in dynamic layouts or text animations.
- Support for customizable letter spacing, enabling fine-tuning for improved readability or achieving specific typographic styles.
- Text outlining support allows for creating stylistic effects and enhancing contrast on various backgrounds (screenshot 1).
- A more comprehensive and consistent system of blending modes has been introduced, significantly enhancing blending mode behavior and aligning compositing formulas and logic with industry standards such as Lottie, SVG, and the W3C 'Compositing and Blending' specification. These improvements provide greater visual consistency and cross-platform compatibility, especially in web and animation workflows.
- The following blending modes are implemented and supported: 'Hue', 'Saturation', 'Color', and 'Brightness', using HSL color space compositing. These modes improve compatibility with Lottie layer effects and future support for SVG blending (screenshot 2).
- Significant enhancements and expansions in visual effects at the scene level, making vector graphics more expressive and visually rich:
- Shadow effect with Gaussian blur filter (video demonstration).
- Color replacement methods that alter the appearance of graphics by redefining the way colors are applied, blended, or matched based on hue (video demonstration).
- New auxiliary functions have been added to expand interactive capabilities. These include support for spatial information queries (demonstration) and hit detection on rendered objects (video demonstration).
- Enhanced Lottie animation capabilities for cross-platform playback, including module presets for Web Player that are optimized for size, performance, and rendering mode (CPU/GPU)
- Jelentős fejlesztések a Lottie animációk támogatásában, javult a kompatibilitás, a rugalmasság és az interaktivitás minden platformon. Kiterjedt nemcsak a támogatott funkciók és Lottie kifejezések köre, hanem a fejlesztők számára eszközöket is nyújt, amelyek lehetővé teszik az animáció viselkedésének dinamikus vezérlését futásidőben, így a ThorVG a piacon elérhető egyik legfejlettebb Lottie lejátszó könyvtárrá válik. A projekt Wiki-jában megvalósított funkciók listája.
- A .lot fájlok kiterjesztése ma már az IANA hivatalos szabványává vált a Lottie fájlok számára. A ThorVG most már hivatalosan támogatja a .lot-ot, mint a Lottie fájlok alapértelmezett formátumát a hagyományos .json kiterjesztés mellett.
- Tweening
- Támogatás került az interpolációhoz a nem-lineárisan szomszédos kulcskockák között, amely simább átmeneteket és pontosabb időkezelést biztosít. Ez a fejlesztés különösen hatékony az állapotalapú animációk lejátszása során (más néven marker alapú lejátszás) Lottie esetén. Sok esetben az animációk célja, hogy bonyolult, nem-lineáris módon átmenetet hozzanak létre az állapotok között. A hagyományos Lottie, a szigorúan lineáris időstruktúrájával, nehezen kezeli ezeket a helyzeteket, ami gyakran éles visszaesésekhez vagy ügyetlen ugrásokhoz vezet az inkonzisztens kulcskockák közötti átmenetek során: videó-összeállítás 1, videó-összeállítás 2.
- A twinning segítségével a fejlesztők most közvetlenül interpolálhatnak két különálló kulcskocka között, még akkor is, ha azok nem lineárisan szomszédosak az idővonalon. Ez lehetővé teszi, hogy természetesebb és simább vizuális hatásokat érjenek el az állapotok közötti átmenetek során, jelentősen növelve az interaktív animációk rugalmasságát és realisztikusságát: videó-összeállítás 1, videó-összeállítás 2.
- Most (kísérleti funkcióként) támogatott a változók kifejezések értékeinek futásidőbeli felülírása, amely lehetővé teszi a felhasználói bemeneten alapuló szkript logika dinamikus végrehajtását. Ez különösen erőteljes eszközzé teszi az interaktív animációk létrehozását Lottie erőforrások felhasználásával, lehetővé téve egyedi variációk létrehozását, amelyek túllépnek az eredeti dizájnon.video demonstration).
- Beágyazott, testreszabható Asset Resolver mechanizmus került hozzáadásra, amely nagyobb rugalmasságot biztosít külső erőforrások (például képek) betöltésénél, amelyeket a Lottie animációk hivatkoznak.
- Kiterjesztett támogatás a Lottie LayerEffect funkcióhoz, amely lehetővé teszi a gazdag vizuális fejlesztéseket közvetlenül az animációs rétegekhez a fenti hatások leírásával.
- Mivel egyes hatások erőforrás-igényesek lehetnek, bevezetésre került egy minőség- és teljesítménybeállítási lehetőség az effektusok rendereléséhez, ami tökéletesen alkalmas CPU-korlátozott platformok optimalizálására. Ez lehetővé teszi a fejlesztők számára, hogy ellenőrizzék a renderelés pontosságát és optimalizálják a teljesítményt a célplatformtól függően.
- A kifejezések támogatása bővült az alábbi kulcsszavak és tulajdonságok hozzáadásával:
- wiggle, temporalWiggle: időben változó véletlenszerű mozgás alkalmazása.
- pointOnPath: a helyszín kiszámítása az úton.
- propertyIndex, groupIndex: a tulajdonság vagy csoport indexére való hivatkozás.
- value, property, effect: a tulajdonságok és külső effektek értékeinek elérése.
- Pontosabb megfelelés a specifikációknak:
- TextFollowPath – új specifikáció, amely lehetővé teszi a szöveg számára, hogy követi a tetszőleges vektoros utakat (video demonstration).
- A szövegigazítás paraméterei – a szövegrétegek pontosabb megjelenítése azok vízszintes és függőleges igazítási beállításai alapján (video demonstration).
- Maszk kiterjesztése – új funkció, amely lehetővé teszi a maszk formájának hatásának pontosabb ellenőrzését a vizuális kompozíción.video demonstration).
- SVG
- A ThorVG most lehetővé teszi az SVG egyes elemeinek elérését és módosítását az SVG forrásfájlban meghatározott egyedi id attribútumokkal. Ez a funkció lehetővé teszi a fejlesztők számára, hogy közvetlenül válasszák ki és manipulálják a konkrét vektorgrafikai alakzatokat az importált SVG jelenetben, ami ideális interaktív vagy dinamikus felhasználási forgatókönyvekhez (például tematikus design, kiemelés).
- Támogatás Gauss-blur hatás.
- Intelligens renderelés
- A ThorVG szoftvermotor mostantól támogatja az intelligens részleges renderelést, amely hatékonyabb renderelési munkafolyamatokat tesz lehetővé azáltal, hogy csak azokat a vektorszín részeit frissíti, amelyek megváltoztak. A módosított területek belső nyomon követésének köszönhetően minimalizálja a felesleges újrarajzolásokat, és optimalizálja az általános teljesítményt. Ez a funkció jelentős előnyöket biztosít olyan forgatókönyvekben, mint a felhasználói felület renderelése, tervezési eszközök vagy olyan alkalmazások, ahol a jelenetek nagy része statikus, és csak kis elemek frissülnek a keretek között. Ilyen esetekben a teljes jelenet renderelésének elhagyása jelentősen csökkentheti a számítási terhelést és javíthatja az energiahatékonyságot, ami különösen fontos mobil és beágyazott rendszerek számára.
- Ennek elérése érdekében a ThorVG 1.0 algoritmikus módszerek kombinációját alkalmazza, amelyek kifejezetten a részleges rendereléshez lettek kifejlesztve. Az alábbiakban bemutatjuk e rendszer alapvető stratégiáit:
- Lineáris átjárás algoritmus: a geometriai alakzatokat az x koordináták szerint sorolják, és lineáris átjárási stratégiát alkalmaznak a felesleges 'koszos' területek ellenőrzésének csökkentésére. Ez a bonyolultságot O(N × M)-ről O(N + M + K + N log N)-ra csökkenti, ahol N a geometriai alakzatok száma, M a 'koszos' területek száma, K a valódi átfedések száma.
- Felbontás és feltételes ötvözés: a finom felbontású alsóterületek kiegyensúlyozása intelligens ötvözéssel történik a fragmentáció elkerülése érdekében. Ilyen értelemben a vízszintes ötvözés élvez prioritást a memória gyorsítótár hatékonyabb kihasználása érdekében.
- Térbeli felbontás (alapértelmezett 4×4-es rács): a renderelési felület 16 területre van osztva, lehetővé téve, hogy csak a geometriai alakzatok vonatkozó 'koszos' területeit ellenőrizzük, így jelentősen csökkentve a komplex felhasználói felület frissítések költségeit.
- Ezek a technikák együttműködve simább és gyorsabb renderelést biztosítanak, különösen beágyazott rendszerekben vagy valós idejű rendszerekben, ahol gyakran előfordulnak részleges frissítések. Részletesebb információk külön bejegyzésben kerülnek publikálásra. blogja.
- Vegyük figyelembe, hogy dinamikus tartalom, például dinamikus játékok vagy teljes képernyős animációk esetén, ahol szinte minden objektum minden egyes képkockában változik, a részleges renderelés alig vagy egyáltalán nem nyújt előnyöket a teljesítményben, és akár kisebb többletköltségeket is okozhat. Ilyen esetekben általában jobb a jelenet teljes renderelésének választása. Emiatt a ThorVG támogatja a részleges és a teljes renderelési konfigurációt, amely lehetőséget ad Önnek, hogy az optimális megközelítést válassza az Ön használati esetéhez. A termékének teljesítményét elemezheti, és megalapozott döntést hozhat a Meson -Dpartial=[true/false] opcióval és az EngineOption::Smart opcióval a SwCanvas osztályban.
auto canvas = SwCanvas::gen(EngineOption::Smart);
- Az új korszak a webtechnológia integrációjában a WebGL, WebGPU és a könnyített WebCanvas révén a zökkenőmentes renderelés érdekében a böngészőben.
- A WebGL és WebGPU háttérrendszerek mostantól hivatalosan is gyártásra készek. Ezek a GPU-alapú renderelők teljes funkcionális kompatibilitást kínálnak a hagyományos CPU háttérrendszerrel, támogató ThorVG Canvas minden lehetőségét ugyanazzal a képkénti minőséggel és stabilitással. A 0.15-ös verzióhoz képest a GPU renderelési teljesítmény több mint 150%-kal nőtt, ami jelentős javulást eredményez a webes vektorgrafika valós idejű renderelésében.
- Jelentős teljesítménynövekedés alacsony CPU/GPU teljesítményű és beágyazott környezetekben.
- A ThorVG 1.0 elősegíti a teljesítmény javulását a 0.15-ös verzióhoz képest, a CPU és GPU teljesítményének szembetűnő növekedésével.
- Kulcsfontosságú optimalizálások:
- Javított renderelési csővezeték hatékonyság.
- Csökkentett keretbuffer allokációs költségek.
- Optimalizált Lottie kompozíciók elemzése.
- Javított kötegelt renderelés és GPU gyorsítótárazás.
- A ThorVG optimalizálva van CPU-alapú raszterizálásra, hangsúlyt fektetve a vektoros vizualizációra olyan környezetekben, ahol a GPU erőforrások korlátozottak, nem elérhetők vagy szándékosan nem használják. Tipikus CPU-tesztjeiben a ThorVG átlagosan 1,8-szor magasabb teljesítményt mutat a széles körben használt vektorgrafikai motorhoz, a Skiához képest, tipikus vektorizálási feladatok végrehajtásakor. A fölény különösen nyilvánvaló geometriaintenzív szcenáriókban, mint például téglalapok, vonalak, forgatások és körök vizualizálása (3. képernyőkép).
- ThorVG Janitor
- A ThorVG renderelési teljesítményének valós bemutatását a következő projekten lehet megtekinteni ThorVG Janitor – egy interaktív játék, amelyet a CPU magas grafikai terhelés melletti teljesítményének bemutatására fejlesztettek. A jelenet több száz, részecskék alapú grafikával készült ellenfelet, csillagos háttér sokrétegű hátterét teljes méretű raszterképekkel, valós idejű vizuális hatásokat, mint a DropShadow és a Blur, valamint akár 25 000 objektum egyidejű renderelését tartalmazza. Még 2K felbontás esetén (2048×1152) is a projekt stabil 120 FPS feletti teljesítményt mutat, hangsúlyozva a ThorVG hatékonyságát és alkalmaságát a komplex, sok hatással bíró környezetekben.video demonstration, kép).
- Egyéb jelentős változások
- A ThorVG Godot-ba való integrációs példája. A ebben a videóbemutatóban A ThorVG integrálva van a Godot-bal a webkörnyezetben, hogy több száz Lottie animációs objektumot renderingeljen több mint 120 képkocka másodpercenként. Ez a bemutató a ThorVG potenciálját mutatja a webkörnyezetben a zökkenőmentes és kiváló minőségű animációk végrehajtása során.
- az „Alkalmazás” eszköz oktató példa a ThorVG WebCanvas használatára.
- Hozzáadva interaktív ThorVG Playground.
- Hozzáadva a ThorVG wrapper Swift nyelvhez: https://github.com/thorvg/thorvg.swift.
- A ThorVG használati példái egy külön repóba kerültek át https://github.com/thorvg/thorvg.example.
- Kibővítés közzétéve thorvg.vscode a VSCode-hoz, hogy lehetővé tegye a ThorVG erőforrások létrehozását, szerkesztését és előnézetét közvetlenül a Visual Studio Code környezetében.
- Az 1.0-ás verzióban jelentős API-átstrukturálás történt, amely a teljesítmény, a használhatóság, a következetesség és a C-vel való kompatibilitás javítására irányult.
- A TVG Picture (TVG) formát támogatása eltávolításra került. Ezt a döntést a ThorVG Picture új formátumának előkészítése érdekében hozták, amely az animációra összpontosít, mint alapkoncepció.
- Számos hiba javítása és a stabilitás javítása a termelési használat érdekében.
Forrás: linux.org.ru
