ThorVG 1.0

ThorVG 1.0 ThorVG 1.0 ThorVG 1.0

Më 31 janar, pas një viti e gjysmë zhvillim të vazhdueshëm, u publikua versioni 1.0 i bibliotekës së lehtë dhe portativë për grafikat vektoriale ndër-platformës ThorVG, e cila është e destinuar për vizualizimin e skenave dhe animacioneve vektoriale. Mbështetet ngarkimi i skedarëve në formate Lottie dhe SVG Tiny 1.2 (lista e mundësive të realizuara të SVG Tiny në Wiki të projektit).

Biblioteka ofron API të përshtatshme për importimin, krijimin dhe shfaqjen e grafikave vektoriale, si dhe për eksportimin e tyre në formate të ndryshme grafike, duke e bërë atë universale për t’u përdorur në platforma të ndryshme softuerike dhe aplikacione për vizualizimin e përmbajtjes grafike. Po ashtu, ofrohen utilitarët konsolë lottie2gif dhe svg2png.

ThorVG përdoret për të renderuar grafika vektoriale në projekte të tilla si Tizen OS, Godot Engine, LVGL dhe lojtarët dotLottie.

Projekti është shkruar në gjuhën C++ (standard C++14) dhe shpërndahet nën licencën MIT.

Kjo nuk është thjesht një përditësim — është një bazë e riparuar për grafikat vektoriale dy-dimensionale me performancë të lartë, të shkallëzuar dhe të transportueshme në të gjitha platforma dhe pajisje. Gjatë zhvillimit, ThorVG u bë një motor grafik i pjekur, i gatshëm për prodhim, që demonstroi cilësi të provuar dhe performancë në aplikacione reale.

ThorVG fitoi shpejt popullaritet dhe ngjalli interes në rritje nga komuniteti, që reflekton evolucionin e tij nga një projekt në fazë të hershme në një motor grafik vektorial të njohur gjerësisht dhe të përdorur praktikisht, i gatshëm për përdorim të vërtetë ndër-platformë.

Lista e ndryshimeve:

  • Funksione të avancuara të renderimit të tekstit, efekte vizuale të pasura dhe mbështetje për përputhjen e saktë për shprehjen grafike të përmirësuar
    • Mbështetje për rreshtimin horizontal dhe vertical, duke lejuar kontroll të saktë të vendosur të tekstit në kontekste të ndryshme të ndërfaqes së përdoruesit.
    • Prerja automatike e rreshtave me mundësi për të zgjedhur modin: sipas simboleve, sipas fjalëve, prerje inteligjente dhe prera në pikë për të trajtuar mbingarkesat.
    • Mbështetje për ndarjen manuale të rreshtave, duke lejuar zhvilluesit të kontrollojnë qartë ndarjet e rreshtave me simbole të reja rreshtimi si \n. Kjo lejon formatizimin e saktë të blloqeve të tekstit shumë-rresht, veçanërisht në skema dinamike ose animacione teksti.
    • Mbështetje për distancën e personalizuar midis karaktereve, duke mundësuar optimizimin e saktë për të përmirësuar lexueshmërinë ose për të arritur stilet specifike tipografike.
    • Mbështetje për rrethimin e tekstit, duke lejuar krijimin e efekteve stilistike dhe përmirësimin e kontrastit në fonde të ndryshme (shembulli 1).
    • Paraqitja e një sistemi më kompleks dhe të koherencës për mjete të mbivendosjes, duke përmirësuar në mënyrë të dukshme sjelljen e mjeteve të mbivendosjes dhe duke sjellë formula dhe logjikë kompozimi në përputhje me standardet e industrisë si Lottie, SVG dhe specifikimi W3C "Kompozimi dhe Mbivendosja". Këto përmirësime sigurojnë një koherencë vizuale më të madhe dhe përputhshmëri ndër-platformave, veçanërisht në proceset e punës në web dhe animacione.
    • Janë implementuar dhe mbështetur si më poshtë: "Hije", "Ngopje", "Ngjyrë" dhe "Ndriçim" duke përdorur kompozitimin e hapësirës së ngjyrës HSL. Këto mjete përmirësojnë përputhshmërinë me efektet e shtresave Lottie dhe mbështetje të ardhshme për mbivendosjen SVG (shembulli 2).
    • Përmirësime të konsiderueshme dhe zgjerime në efektet vizuale në nivelin e skenës, duke e bërë grafikën vektoriale më ekspresive dhe vizualisht të pasur:
      • Efekti i hije me filtrin e mjegullës Gausiane (demonstrim video).
      • Metodat për ndërrimin e ngjyrave që ndryshojnë pamjen e grafikës duke rishkruar mënyrën e aplikimit, mbivendosjes ose përputhjes së ngjyrave në bazë të hijes (demonstrim video).
    • Funksione të reja mbështetëse janë shtuar për të zgjeruar mundësitë ndërvepruese. Këto përfshijnë mbështetje për kërkesat e informacionit hapësinor (demonstrim) dhe zbulimin e goditjeve mbi objektet e paraqitura (demonstrim video).
  • Mundësi të përmirësuara për animacionin Lottie për riprodhim ndër-platformash, duke përfshirë presetet modulare të Web Player, të optimizuara për madhësi, performancë dhe modin e renderimit (CPU/GPU)
    • Përmirësime të konsiderueshme në mbështetje të animacioneve Lottie me përmirësimin e përputhshmërisë, fleksibilitetit dhe Interaktivitetit në të gjitha platformat. Jo vetëm që është zgjeruar gamë e funksioneve dhe shprehjeve të mbështetura Lottie, por janë ofruar edhe mjete për zhvilluesit që lejojnë kontrollin dinamik të sjelljes së animacionit gjatë ekzekutimit, duke e bërë ThorVG një nga bibliotekat më të fuqishme të reproduktimit të Lottie që janë në dispozicion në treg. Lista e mundësive të realizuara në Wiki projektit.
    • Deritani, zgjerimi i skedarit .lot është standardi i ri zyrtar IANA për skedarët Lottie. ThorVG tani mbështet zyrtarisht .lot si formatin standard të skedarëve Lottie përveç zgjerimit tradicional .json.
    • Twining
      • Është shtuar mbështetje për interpolimin midis çelësave të çliruar që nuk janë linear, duke siguruar kalime më të qeta dhe kontroll më të saktë të kohës. Ky përmirësim është veçanërisht efektiv kur përdoret me reproduktimin e animacionit bazuar në gjendje (i njohur gjithashtu si reproduktim me bazë në shenja) në Lottie. Në shumë raste, animacionet janë menduar për të kaluar midis gjendjeve në mënyra komplekse dhe jo-lineare. Tradicionalja Lottie me strukturën e saj të saktë kohore ka vështirësi në këto skenarë, shpesh duke rezultuar në rikthime të ashpra ose ndalime të pakëndshme kur kalon midis çelësave të papërshtatshëm. Demonstra video 1, Demonstra video 2.
      • Me ndihmën e twining, zhvilluesit tani mund të kryejnë interpolim direkt midis dy çelësave të veçantë, edhe nëse ato nuk janë linearisht afër në shiritin e kohës. Kjo lejon që të arrihen efekte vizuale më natyrale dhe më të qeta gjatë kalimeve midis gjendjeve, duke rritur ndjeshëm fleksibilitetin dhe realizmin e animacioneve interaktive. Demonstra video 1, Demonstra video 2.
    • Tani (si një funksion eksperimental) mbështetet rinovimi i vlerave të variablave të shprehjeve gjatë ekzekutimit, duke lejuar që logjika e script-it të ekzekutohet dinamikisht bazuar në inputin e përdoruesit. Kjo e bën atë një mjet veçanërisht të fuqishëm për krijimin e animacioneve interaktive me burime Lottie, duke lejuar krijimin e variacioneve të personalizuara që shkojnë përtej dizajnit origjinal.demonstrim video).
    • Shtuar mekanizmi i personalizueshëm Asset Resolver, duke ofruar fleksibilitet më të madh në ngarkimin e burimeve të jashtme (për shembull, imazheve) që citohen nga animacionet Lottie.
    • Mbështetje e zgjeruar për funksionin Lottie LayerEffect, i cili lejon përmirësime vizuale të pasura direkt në shtresat e animacionit me efekte të përmendura më sipër.
    • Meqenëse disa efekte mund të kërkojnë shumë burime, proponohet një opsion për të rregulluar cilësinë dhe performancën për renderimin e efekteve, çka është ideale për optimizimin në platformat me burime të kufizuara CPU. Kjo i lejon zhvilluesit të kontrollojnë saktësinë e renderimit dhe të optimizojnë performancën në varësi të platformës që është targetuar.
    • Mbështetje për shprehjet është zgjeruar duke shtuar këto karakteristika dhe pronësi kryesore:
      • wiggle, temporalWiggle: aplikimi i lëvizjes rastësore që varet nga koha.
      • pointOnPath: llogaritja e pozicionit përgjatë një rruge.
      • propertyIndex, groupIndex: referenca në indeksin e pronës ose grupit.
      • value, property, effect: akses në vlerat e pronave dhe efektet e jashtme.
    • Kombinim më i saktë me specifikimet:
      • TextFollowPath – një specifikim i ri që lejon tekstin të ndjekë rrugë vektoriale arbitrare (demonstrim video).
      • Parametrat e sistemit të rregullimit të tekstit – një paraqitje më e saktë e shtresave të tekstit bazuar në cilësimet e rregullimit horizontal dhe vertikal të tyre (demonstrim video).
      • Zgjerimi i maskës – një funksion i ri që lejon kontroll më të saktë mbi ndikimin e formës së maskës në kompozitën vizuale (demonstrim video).
  • SVG
    • ThorVG tani lejon qasje në elementet e veçanta të SVG dhe t'i ndryshoni ato me atributet unike id, të përcaktuara në skedarin burimor SVG. Ky funksion lejon zhvilluesit të zgjedhin dhe të manipulojnë drejtpërdrejt figura specifike vektoriale në skenën e importuar SVG, që është ideale për skenarët interaktivë ose dinamikë (për shembull, dizajni tematik, përzgjedhja).
    • Mbështetje efekti i zvetënimit Gaussian.
  • Renderim inteligjent
    • Motori i softuerit ThorVG tani mbështet renderimin e pjesshëm inteligjent, i cili siguron procese më efikase të renderimit duke përditësuar vetëm ato pjesë të skenës vektoriale që kanë ndryshuar. Përmes ndjekjes së brendshme të zonave të ndryshuara, ai minimizon ripërtypjet e panevojshme dhe optimizon performancën totale. Ky funksion ofron avantazhe të rëndësishme në skenarë të tillë si renderimi i ndërfaqeve të përdoruesit, mjete projektimi ose aplikacione në të cilat pjesa më e madhe e skenës mbetet statike, ndërsa midis kadrove përditësohen vetëm elementë të vegjël. Në këto raste, heqja e renderimit të plotë të skenës mund të reduktojë ndjeshëm ngarkesën kompjuterike dhe të rrisë efikasitetin energjetik, e veçanërisht e vlefshme për sistemet mobile dhe të integruara.
    • Për të arritur këtë qëllim, ThorVG 1.0 aplikon një kombinim të metodave algoritmike, të dizajnuara posaçërisht për renderimin e pjesshëm. Më poshtë janë strategjitë kryesore që qëndrojnë në themel të këtij sistemi:
      • Algoritmi i kalimit linear: figurat renditen sipas koordinatave x dhe aplikohet një strategji kalimi linear për të zvogëluar kontrollimet e panevojshme të zonave "të ndotura". Kjo e ul kompleksitetin nga O(N × M) në O(N + M + K + N log N), ku N është numri i figurave, M është numri i zonave "të ndotura", K është numri i mbulimeve aktuale.
      • Ndarja dhe bashkimi në kusht: ndarja me dridhje e zonave nën është në ekuilibër me bashkimin inteligjent për të shmangur fraktikimin. Këtu, përparësi i jepet bashkimit horizontal për një përdorim më efikas të caches së memories.
      • Ndarja hapësinore (për default, grid 4×4): sipërfaqja e renderimit ndahet në 16 zona, duke lejuar që të kontrollohen vetëm zonat "të ndotura" përkatëse të figurave, duke zvogëluar ndjeshëm kostot në përditësimet komplekse të ndërfaqes së përdoruesit.
    • Duke punuar së bashku, këto teknika sigurojnë një renderim më të qetë dhe më të shpejtë, veçanërisht në sistemet e integruara ose sistemet në kohë reale, ku përditësimet pjesshëm ndodhin shpesh. Më shumë informacion do të publikohet në një postim të veçantë. blogu.
    • Vini re që në rastin e përmbajtjes me dinamizëm të lartë, siç janë lojrat dinamike ose animacionet me ekran të plotë, ku pothuajse të gjitha objektet ndryshojnë në çdo kornizë, rendering-u i pjesshëm ofron pak ose aspak përfitime në performancë dhe madje mund të ketë disa kosto të vogla. Në raste të tilla, zakonisht është më mirë të zgjidhni rendering të plotë të skenës. Për këtë arsye, ThorVG mbështet si konfigurimin e pjesshëm ashtu edhe atë të plotë të rendering-ut, duke ju dhënë mundësinë për të zgjedhur qasjen optimale për rastin tuaj të përdorimit. Mund të analizohet performanca e produktit tuaj dhe të merren vendime të informuara, duke përdorur opsionin Meson -Dpartial=[true/false] dhe opsionin EngineOption::Smart të klasës SwCanvas:

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

  • Epoka e re e integrimit të teknologjive web me WebGL, WebGPU dhe WebCanvas të lehtësuar për rendering pa ndërprerje në shfletues
    • Backend-et WebGL dhe WebGPU tani janë zyrtarisht të gatshëm për përdorim në prodhim. Këta renderues të bazuar në GPU tani ofrojnë përputhshmëri të plotë funksionale me backend-in tradicional të CPU, duke mbështetur të gjitha funksionalitetet e ThorVG Canvas me të njëjtin cilësi dhe stabilitet të imazhit. Në krahasim me versionin 0.15, performanca e rendering-ut GPU është rritur me më shumë se 150%, duke siguruar një përmirësim të konsiderueshëm në rendering-un e grafikave vektorale web në kohë reale.
  • Rritje e rëndësishme e performancës në mjedise me kufizime të energjisë CPU/GPU dhe në mjedise të integruara
    • ThorVG 1.0 ofron performancë të përmirësuar krahasuar me versionin 0.15, me një rritje të dukshme si në CPU ashtu edhe në GPU.
    • Optimizimet kryesore:
      • Efikasitet i përmirësuar i tubit të rendering-ut.
      • Kosto më të ulëta për alokimin e memories së kornizës.
      • Analizë e optimizuar e kompozitave Lottie.
      • Rendering i grumbulluar dhe caching i përmirësuar në GPU.
    • ThorVG është optimizuar për rasterizimin mbi CPU, me fokus në vizualizimin vektorial në mjedise ku burimet GPU janë të kufizuara, të paarritshme ose që përdoren me qëllim. Në testet tipike të CPU, ThorVG tregon në mesatare një performancë 1.8 herë më të lartë krahasuar me motorin e njohur të grafikës vektoriale Skia, duke përfunduar detyra të zakonshme të vizualizimit vektorial. Avantazhi është veçanërisht i dukshëm në skenarët me përdorim intensiv të gjeometrisë, siç janë vizualizimi i drejtkëndëshave, vijave, rotacioneve dhe rrethit (screenshot 3).
  • ThorVG Janitor
    • Një demonstrim të vërtetë të performancës së renderimit të ThorVG mund ta shihni në projektin ThorVG Janitor – një lojë interaktive e zhvilluar për të demonstruar performancën e procesorit nën ngarkesë të lartë grafike. Skena përfshin qindra armiq të krijuar me grafikë bazuar në pjesë, sfond shumë-shtresor të qiellit me yje me imazhe raster të plotë, efekte vizuale në kohë reale si DropShadow dhe Blur, si dhe deri në 25000 objekte të renderuara në të njëjtën kohë. Edhe me ngarkesën maksimale në rezolucion 2K (2048×1152), projekti tregon një performancë të qëndrueshme mbi 120 FPS, e cila thekson efektivitetin dhe përshtatshmërinë e ThorVG për mjedise komplekse me shumë efekte (demonstrim video, screenshot).
  • Ndrytime të tjera të rëndësishme
    • Një shembull i integrimit të ThorVG në Godot. Në kjo video-demonstrim ThorVG është integruar me Godot në mjedisin web për të renderuar qindra objekte animacioni Lottie me mbi 120 kadra në sekondë. Kjo demonstrim tregon potencialin e ThorVG në mjedisin web për animacion të qetë dhe me cilësi të lartë gjatë ekzekutimit.
    • Shtuar shembulli mësimor përdorimi i ThorVG WebCanvas.
    • Shtuar interaktiv ThorVG Playground.
    • Shtuar wrapper ThorVG për gjuhën Swift: https://github.com/thorvg/thorvg.swift.
    • Shembujt e përdorimit të ThorVG janë transferuar në një repositories të veçantë https://github.com/thorvg/thorvg.example.
    • Publikuar një shtesë thorvg.vscode për VSCode për krijimin, redaktimin dhe parashikimin e burimeve ThorVG direkt në ambientin Visual Studio Code.
    • Në versionin 1.0 është bërë një rindërtim i madh i API-t për të përmirësuar performancën, lehtësinë e përdorimit, qëndrueshmërinë dhe përputhshmërinë me C.
    • Është hequr mbështetja për formatin TVG Picture (TVG). Ky vendim u mor për të përgatitur formatin e ri ThorVG Picture, i zhvilluar me animacionin si konceptin kryesor.
    • Rregullime të shumta të gabimeve dhe përmirësimi i stabilitetit për përdorim në prodhim.

Burimi: linux.org.ru

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster