ThorVG 1.0

ThorVG 1.0 ThorVG 1.0 ThorVG 1.0

Den 31 januari, efter mer Àn ett och ett halvt Ärs kontinuerlig utveckling, slÀpptes version 1.0 av det lÀtta och portabla plattformsoberoende biblioteket för vektorgrafik ThorVG, avsett för visualisering av vektorscener och animationer. Stöd för uppladdning av filer i formaten Lottie och SVG Tiny 1.2 (en lista över de funktioner som implementerats i SVG Tiny finns pÄ projektets Wiki).

Biblioteket erbjuder anvĂ€ndarvĂ€nliga API:er för import, skapande och visning av vektorgrafik, sĂ„vĂ€l som för export till olika grafiska format, vilket gör det universellt för anvĂ€ndning i olika programvaruplattformar och applikationer för visualisering av grafiskt innehĂ„ll. Även konsolverktygen lottie2gif och svg2png ingĂ„r.

ThorVG anvÀnds för rendering av vektorgrafik i projekt som Tizen OS, Godot Engine, LVGL och spelare dotLottie.

Projektet Àr skrivet i C++ (standard C++14) och distribueras under MIT-licensen.

Detta Ă€r inte bara en uppdatering—det Ă€r en ombyggd grund för högpresterande, skalbar och bĂ€rbar 2D-vectorgrafik pĂ„ alla plattformar och enheter. Under utvecklingen har ThorVG förvandlats till en mogen, produktionsklar grafikmotor som har visat beprövad kvalitet och prestanda i verkliga applikationer.

ThorVG har snabbt vunnit popularitet och mött ett vÀxande intresse frÄn communityn, vilket speglar dess utveckling frÄn ett tidigt stadium till en vÀlkÀnd och praktiskt anvÀnd vektorgrafikmotor redo för verkligt plattformsoberoende bruk.

Ändringslista:

  • Utökade textrenderingsfunktioner, rika visuella effekter och stöd för exakt överlagring för förbĂ€ttrad grafisk uttryck.
    • Stöd för horisontell och vertikal justering, vilket möjliggör precis kontroll över textens placering i olika anvĂ€ndargrĂ€nssnittskontexter.
    • Automatisk radbrytning med möjlighet att vĂ€lja lĂ€ge: per tecken, per ord, intelligent brytning och avkortning med ellips för att hantera överflöd.
    • Stöd för manuell radbrytning som gör att utvecklare kan kontrollera radbrytningar explicit med hjĂ€lp av ny rad-symboler som \n. Detta möjliggör exakt formatering av fleradenstrĂ€ngar, sĂ€rskilt i dynamiska layouter eller textanimationer.
    • Stöd för anpassat avstĂ„nd mellan tecken, vilket möjliggör precis justering för att förbĂ€ttra lĂ€sbarheten eller uppnĂ„ specifika typografiska stilar.
    • Stöd för textkontur, vilket gör att man kan skapa stilistiska effekter och förbĂ€ttra kontrasten mot olika bakgrunder (skĂ€rmavel 1).
    • En mer komplex och konsekvent system för överlĂ€ggningslĂ€gen har införts, vilket avsevĂ€rt förbĂ€ttrar beteendet hos överlĂ€ggningslĂ€gen och anpassar formler och logik för komposition till branschstandarder sĂ„som Lottie, SVG och W3C:s specifikation för 'Compositing and Blending'. Dessa förbĂ€ttringar sĂ€kerstĂ€ller större visuell konsistens och plattformsoberoende kompatibilitet, sĂ€rskilt inom webben och animationsarbetsflöden.
    • Följande överlĂ€ggningslĂ€gen har implementerats och stöds: 'Nyans', 'MĂ€ttnad', 'FĂ€rg' och 'Ljushet' med anvĂ€ndning av HSL-fĂ€rgkomposition. Dessa lĂ€gen förbĂ€ttrar kompatibiliteten med Lotties lager- och framtida stöd för SVG-blandning (skĂ€rmavel 2).
    • Betydande förbĂ€ttringar och utvidgningar i visuella effekter pĂ„ scenenivĂ„, vilket gör vektorgrafik mer uttrycksfull och visuellt rik:
      • Skuggeffekt med Gaussisk oskĂ€rpa (videodemonstration).
      • Metoder för fĂ€rgbyte som Ă€ndrar grafiken genom att omdefiniera hur fĂ€rger appliceras, blandas eller matchas baserat pĂ„ nyans (videodemonstration).
    • Nya hjĂ€lpfunktioner har lagts till för att utöka interaktiva möjligheter. Dessa inkluderar stöd för rumsliga informationsfrĂ„gor (demonstration) och detektering av trĂ€ffar pĂ„ visade objekt (videodemonstration).
  • Utökade animationsmöjligheter för Lottie för plattformsoberoende uppspelning, inklusive modulĂ€ra förinstĂ€llningar för Web Player, optimerade för storlek, prestanda och renderingslĂ€ge (CPU/GPU)
    • Betydande förbĂ€ttringar av stöd för Lottie-animationer med ökad kompatibilitet, flexibilitet och interaktivitet pĂ„ alla plattformar. Inte bara har spektrumet av stödda Lottie-funktioner och uttryck utvidgats, utan ocksĂ„ verktyg för utvecklare har tillhandahĂ„llits för att dynamiskt kontrollera animationsbeteendet under körning, vilket gör ThorVG till en av de mest kraftfulla Lottie-uppspelningsbiblioteken som finns pĂ„ marknaden. Listan över implementerade funktioner i projektets Wiki.
    • Sedan idag Ă€r filĂ€ndelsen .lot en ny officiell standard frĂ„n IANA för Lottie-filer. ThorVG stödjer nu officiellt .lot som det standardfilformat för Lottie utöver den traditionella .json-filtillĂ€gget.
    • Tweening
      • Stöd för interpolation mellan icke-linjĂ€rt angrĂ€nsande nyckelbilder har lagts till, vilket ger smidigare övergĂ„ngar och mer exakt tidskontroll. Denna förbĂ€ttring Ă€r sĂ€rskilt effektiv vid anvĂ€ndning med tillstĂ„ndsbaserad animation (Ă€ven kĂ€nd som markeringsbaserad uppspelning) i Lottie. I mĂ„nga fall Ă€r animationer avsedda att övergĂ„ mellan tillstĂ„nd pĂ„ komplexa, icke-linjĂ€ra sĂ€tt. Traditionell Lottie, med sin strĂ€ngt sekventiella tidsstruktur, har svĂ„rt att hantera sĂ„dana scenarier, vilket ofta leder till hastiga Ă„terstĂ€llningar eller klumpiga hopp nĂ€r man övergĂ„r mellan icke-sekventiella nyckelbilder: videodemonstration 1, videodemonstration 2.
      • Med hjĂ€lp av tweening kan utvecklare nu interpolera direkt mellan tvĂ„ separata nyckelbilder, Ă€ven om de inte Ă€r linjĂ€rt angrĂ€nsande pĂ„ tidslinjen. Detta möjliggör mer naturliga och smidiga visuella effekter vid övergĂ„ngar mellan tillstĂ„nd, vilket avsevĂ€rt ökar flexibiliteten och realism i interaktiva animationer: videodemonstration 1, videodemonstration 2.
    • Nu (som en experimentell funktion) stödjs överskrivning av vĂ€rden för uttrycksvariabler under körning, vilket möjliggör dynamisk körning av skriptlogik baserat pĂ„ anvĂ€ndarinmatning. Detta gör det till ett sĂ€rskilt kraftfullt verktyg för att skapa interaktiva animationer med hjĂ€lp av Lottie-resurser, vilket möjliggör skapande av skrĂ€ddarsydda variationer som gĂ„r bortom det ursprungliga designen.videodemonstration).
    • En anpassningsbar Asset Resolver-mekanism har lagts till, vilket ger större flexibilitet vid inladdning av externa resurser (t.ex. bilder) som refereras i Lottie-animationer.
    • Utökad stöd för Lottie LayerEffect-funktionen, som möjliggör rika visuella förbĂ€ttringar direkt pĂ„ animationslager med ovan beskrivna effekter.
    • Eftersom vissa effekter kan vara resurskrĂ€vande har ett alternativ för att justera kvalitet och prestanda för rendering av effekter föreslagits, vilket Ă€r perfekt för optimering pĂ„ plattformar med begrĂ€nsade CPU-resurser. Detta ger utvecklare möjlighet att styra renderingens noggrannhet och optimera prestanda beroende pĂ„ mĂ„lplattform.
    • Stödet för uttryck har utvidgats genom att lĂ€gga till följande nyckelfunktioner och egenskaper:
      • wiggle, temporalWiggle: tillĂ€mpning av slumpmĂ€ssig rörelse beroende av tid.
      • pointOnPath: berĂ€kning av position lĂ€ngs en vĂ€g.
      • propertyIndex, groupIndex: referens till indexet för egenskapen eller gruppen.
      • value, property, effect: Ă„tkomst till vĂ€rden för egenskaper och externa effekter.
    • Mer exakt överensstĂ€mmelse med specifikationerna:
      • TextFollowPath – en ny specifikation som gör att text kan följa godtyckliga vektorsprĂ„k (videodemonstration).
      • Textjusteringsalternativ – en mer exakt visning av textlager baserat pĂ„ instĂ€llningar för deras horisontella och vertikala justering (videodemonstration).
      • Maskeringsutvidgning – en ny funktion som möjliggör mer exakt kontroll över hur maskens form pĂ„verkar den visuella kompositionen (videodemonstration).
  • SVG
    • ThorVG ger nu Ă„tkomst till individuella SVG-element och möjliggör Ă€ndringar med unika id-attribut definierade i den ursprungliga SVG-filen. Denna funktion gör det möjligt för utvecklare att direkt vĂ€lja och manipulera specifika vektorgrafiker i den importerade SVG-scenen, vilket Ă€r perfekt för interaktiva eller dynamiska anvĂ€ndningsscenarier (t.ex. tematisk design, markering).
    • Support Gaussisk suddighets-effekt.
  • Intelligent rendering
    • Programvarumotorn ThorVG stödjer nu intelligent partiell rendering, vilket ger mer effektiva renderingprocesser genom att endast uppdatera de delar av vektorscenen som har Ă€ndrats. Genom inre spĂ„rning av Ă€ndrade omrĂ„den minimerar den onödiga omritningar och optimerar den övergripande prestandan. Denna funktion erbjuder betydande fördelar i scenarier som anvĂ€ndargrĂ€nssnittsrendering, designverktyg eller applikationer dĂ€r större delen av scenen förblir statisk och endast smĂ„ element uppdateras mellan bilderna. I sĂ„dana fall kan avstĂ„endet frĂ„n fullstĂ€ndig rendering av scenen avsevĂ€rt minska den berĂ€kningsmĂ€ssiga belastningen och öka energieffektiviteten, vilket Ă€r sĂ€rskilt vĂ€rdefullt för mobila och inbyggda system.
    • För att uppnĂ„ detta tillĂ€mpar ThorVG 1.0 en kombination av algoritmiska metoder som Ă€r speciellt utformade för partiell rendering. Nedan följer de grundlĂ€ggande strategierna som ligger till grund för detta system:
      • LinjĂ€ra genomgĂ„ngsalgoritmer: Figurer sorteras efter x-koordinater, och en linjĂ€r genomgĂ„ngsstrategi tillĂ€mpas för att minska onödiga kontroller av "smutsiga" omrĂ„den. Detta minskar komplexiteten frĂ„n O(N × M) till O(N + M + K + N log N), dĂ€r N Ă€r antalet figurer, M Ă€r antalet "smutsiga" omrĂ„den och K Ă€r antalet faktiska överlappningar.
      • Uppdelning och villkorlig sammanslagning: Finkornig uppdelning av delomrĂ„den balanseras med intelligent sammanslagning för att undvika fragmentering. HĂ€r prioriteras horisontell sammanslagning för mer effektiv anvĂ€ndning av cacheminnet.
      • Rumslig uppdelning (standard 4×4-gitter): Renderingsytan delas in i 16 omrĂ„den, vilket möjliggör kontroll av endast de relevanta "smutsiga" omrĂ„dena för figurer, vilket avsevĂ€rt minskar overhead vid komplexa uppdateringar av anvĂ€ndargrĂ€nssnittet.
    • Genom att arbeta tillsammans erbjuder dessa tekniker en smidigare och snabbare rendering, sĂ€rskilt i inbyggda system eller realtidsystem dĂ€r partiella uppdateringar ofta sker. Mer detaljerad information kommer att publiceras i ett separat inlĂ€gg. blogg.
    • Observera att i fallet med högdynamiskt innehĂ„ll, sĂ„som dynamiska spel eller helskĂ€rmsanimationer, dĂ€r nĂ€stan alla objekt Ă€ndras i varje bildruta, ger partiell rendering lite eller ingen prestandafördel och kan till och med leda till smĂ„ overheadkostnader. I sĂ„dana fall Ă€r det vanligtvis bĂ€ttre att vĂ€lja fullstĂ€ndig rendering av scenen. Av denna anledning stöder ThorVG bĂ„de partiell och fullstĂ€ndig rendering, vilket ger dig möjlighet att vĂ€lja den optimala metoden för ditt anvĂ€ndningsfall. Du kan analysera prestandan hos din produkt och fatta ett informerat beslut med hjĂ€lp av alternativet Meson -Dpartial=[true/false] och alternativet EngineOption::Smart i klassen SwCanvas:

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

  • En ny era av integration av webbtekniker med WebGL, WebGPU och ett lĂ€ttvikts WebCanvas för sömlös rendering i webblĂ€saren
    • WebGL- och WebGPU-backend Ă€r nu officiellt redo för produktionsanvĂ€ndning. Dessa GPU-baserade renderare erbjuder nu full funktionell kompatibilitet med den traditionella CPU-backenden, med stöd för alla funktioner i ThorVG Canvas med samma bildkvalitet och stabilitet. JĂ€mfört med version 0.15 har prestandan vid GPU-rendering ökat med mer Ă€n 150%, vilket ger en betydande förbĂ€ttring av rendering av webbvektorgrafik i realtid.
  • Betydande prestandaökning i miljöer med begrĂ€nsad CPU/GPU-kraft och inbyggda miljöer
    • ThorVG 1.0 erbjuder förbĂ€ttrad prestanda jĂ€mfört med version 0.15, med mĂ€rkbar ökning bĂ„de för CPU och GPU.
    • Nyckeloptimeringar:
      • FörbĂ€ttrad effektivitet i renderingspipeline.
      • Minskade overheadkostnader för allokering av rambuffer.
      • Optimiserad analys av Lottie-kompositioner.
      • FörbĂ€ttrad batch-rendering och GPU-caching.
    • ThorVG Ă€r optimerat för rasterisering baserat pĂ„ CPU, med fokus pĂ„ vektorvisualisering i miljöer dĂ€r GPU-resurser Ă€r begrĂ€nsade, otillgĂ€ngliga eller medvetet inte anvĂ€nds. I typiska CPU-test visar ThorVG i genomsnitt en 1,8 gĂ„nger högre prestanda jĂ€mfört med den allmĂ€nt anvĂ€nda vektor grafikmotorn Skia vid utförande av typiska vektorvisualiseringsuppgifter. Fördelen blir sĂ€rskilt tydlig i scenarier med hög geometribruk, sĂ„som visualisering av rektanglar, linjer, rotationer och cirklar (screenshot 3).
  • ThorVG Janitor
    • Ett verkligt prestandademonstration av ThorVG:s rendering kan ses i projektet ThorVG Janitor – ett interaktivt spel som Ă€r utvecklat för att demonstrera CPU-prestanda under hög grafisk belastning. Scenen innehĂ„ller hundratals fiender skapade med partikelbaserad grafik, flerlagers bakgrunder av stjĂ€rnhimmel med fullstora rasterbilder, visuella effekter i realtid som DropShadow och Blur, samt upp till 25000 objekt som renderas samtidigt. Även vid maximal belastning vid 2K upplösning (2048×1152) visar projektet stabil prestanda över 120 FPS, vilket understryker ThorVG:s effektivitet och lĂ€mplighet för komplexa miljöer med mĂ„nga effekter (videodemonstration, skĂ€rmdump).
  • Andra betydande Ă€ndringar
    • Exempel pĂ„ integration av ThorVG i Godot. I denna video-demonstration ThorVG Ă€r integrerat med Godot i en webbmiljö för att rendera hundratals Lottie animationsobjekt med mer Ă€n 120 bilder per sekund. Denna demonstration visar ThorVG:s potential i webbmiljöer för smidig och högkvalitativ animation under körning.
    • Tillagd ett handledningsexempel för att anvĂ€nda ThorVG WebCanvas.
    • Interaktiv ThorVG Playground.
    • En wrapper för ThorVG för sprĂ„ket Swift har lagts till: https://github.com/thorvg/thorvg.swift.
    • Exempel pĂ„ anvĂ€ndning av ThorVG har flyttats till ett separat arkiv https://github.com/thorvg/thorvg.example.
    • Ett tillĂ€gg har publicerats thorvg.vscode för VSCode för att skapa, redigera och förhandsgranska ThorVG-resurser direkt i Visual Studio Code-miljön.
    • I version 1.0 har API:t genomgĂ„tt en betydande omstrukturering som syftar till att öka prestanda, anvĂ€ndarvĂ€nlighet, konsekvens och kompatibilitet med C.
    • Stödet för TVG Picture-formatet (TVG) har tagits bort. Detta beslut fattades för att förbereda det nya ThorVG Picture-formatet, som utvecklades med animation som huvudkoncept.
    • MĂ„nga buggfixar och förbĂ€ttrad stabilitet för produktionsanvĂ€ndning.

KĂ€lla: linux.org.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster