31 yanvar, bir buçuk il davamlı inkişafdan sonra, 1.0 versiyalı yüngül və portativ kross-platforma vektor qrafikası kitabxanasının buraxılışı baş tutdu ThorVG, vektor səhnələrinin və animasiyaların vizuallaşdırılması üçün nəzərdə tutulmuşdur. Aşağıdakı formatlarda faylların yüklənməsi dəstəklənir Lottie və SVG Tiny 1.2 (proyektin Wiki-sində SVG Tiny-nin həyata keçirilmiş imkanları siyahısı).
Kitabxana, vektör qrafikasını idxal etmək, yaratmaq və təqdim etmək üçün, həmçinin müxtəlif qrafik formatlarına ixrac etmək üçün məqbul API-lar , vektor qrafikasının idxalı, yaradılması və göstərilməsi, eləcə də müxtəlif qrafik formatlara ixrac edilməsi üçün, bu da onu müxtəlif proqram platformalarında və qrafik məzmunu vizuallaşdıran tətbiqlərdə istifadəsi üçün universallaşdırır. Həmçinin lottie2gif və svg2png konsol utilitləri təqdim olunur.
ThorVG, o cümlədən aşağıdakı layihələrdə vektor qrafikasının render edilməsi üçün istifadə olunur Tizen OS, Godot Engine, LVGL və pleyerlər dotLottie.
Proyekt C++ dilində (C++14 standartı) yazılmışdır və MIT lisenziyası ilə yayımlanır.
Bu sadəcə bir yeniləmə deyil - bu, bütün platformalar və cihazlarda yüksək performanslı, genişləndirilə bilən və portativ iki ölçülü vektor qrafikası üçün yenidən qurulmuş bir bazadır. ThorVG inkişaf dövrü boyunca yetkin bir məhsul qrafik motoruna çevrildi və real tətbiqlərdə sübut olunmuş keyfiyyət və performansı nümayiş etdirdi.
ThorVG sürətlə populyarlıq qazandı və icmanın marağını artırdı, bu da onun erkən mərhələdən geniş tanınmış və praktik istifadə üçün hazır olan vektor qrafik motoruna qədər inkişafını əks etdirir.
Dəyişikliklər siyahısı:
- Təkmilləşdirilmiş mətn render etmə imkanları, zəngin vizual effektlər və yaxşılaşmış qrafik təsir üçün dəqiq üst-üstə düşməni dəstəkləyir
- Müxtəlif istifadəçi interfeysi kontekstlərində mətni dəqiq yerləşdirmək üçün üzan və dik hizalamaya dəstək.
- Simvollara, sözlərə, intellektual pozuntulara və aşırma üçün üç nöqtə ilə çağırış modunu seçmə imkanına malik avtomatik sətir ayırma.
- Tərtibatçılara \n kimi yeni sətirlərin simvolları ilə sətir pozuntularını qəti şəkildə idarə etməyə imkan verən əl ilə sətir pozuntusunu dəstəkləyir. Bu, xüsusilə dinamik düzənlərdə və mətn animasiyalarında çox sətirli mətn bloklarının dəqiq formatlaşdırılmasına imkan tanıyır.
- Oxumaq üçün dəqiqlik artırmaq və müəyyən tipografi üslublarını əldə etmək üçün simvollar arasındakı məsafənin düzəldilməsini dəstəkləyir.
- Mətni əhatə etməyi dəstəkləyir, bu da stilist effektlər yaratmağa və müxtəlif fondlarda kontrastı artırmağa imkan verir (screenshot 1).
- Daha kompleks və uyğun bir qarışdırma rejimləri sistemi təqdim edilib, bu da qarışdırma rejimlərinin davranışını əhəmiyyətli dərəcədə yaxşılaşdıraraq, formul və kompozisiya məntiqini Lottie, SVG və W3C «Compositing and Blending» standartlarına uyğunlaşdırır. Bu təkmilləşdirmələr, xüsusən də veb və animasiya iş axınlarında daha böyük vizual uyğunluq və platformalararası uyğunluq təmin edir.
- Aşağıdakı qarışdırma rejimləri tətbiq olunur və dəstəklənir: «Nüans», «Doyma», «Rəng» və «Parlaqlıq», HSL rəng sahəsi kompozisiyasından istifadə etməklə. Bu rejimlər Lottie qat effektləri ilə uyğunluğu yaxşılaşdırır və gələcəkdə SVG qarışdırma dəstəkləyir (screenshot 2).
- Səhnə səviyyəsində vizual effektlərdə əhəmiyyətli təkmilləşdirmələr və genişləndirmələr, vektor qrafikasını daha ifadəli və vizual baxımdan zəngin edir:
- Gauss bulanıklığı filtrli kölgə effekti (video-demonstrasiya).
- Rəngləri əvəzləmə üsulları, qrafikanın görünüşünü ton əsaslı rəng tətbiqi, qarışdırma və ya uyğunlaşdırma metodlarını dəyişdirərək dəyişir (video-demonstrasiya).
- Yeni interaktiv imkanları genişləndirən köməkçi funksiyalar əlavə olundu. Bunlara məkan məlumatı tələblərinin dəstəyi (demonstrasiya) və görüntülənən obyektlər üzərində dəqiqlərin aşkar olunması (video-demonstrasiya).
- Lottie üçün genişləndirilmiş animasiya imkanları, platformalararası ifa üçün, ölçü, performans və render rejimi (CPU/GPU) baxımından optimallaşdırılmış veb oyunçusu modul preseti ilə birlikdə təqdim edilir.
- Lottie animasiyasının dəstəyi ilə əhəmiyyətli təkmilləşdirmələr, bütün platformalarda uyğunluğu, elastikliyi və interaktivliği artırır. Dəstəklənən Lottie funksiyaları və ifadələrinin spektri genişləndirilmişdir və animasiyanın icra zamanı dinamik davranışını idarə etməyə imkan verən alətlər təqdim olunmuşdur ki, bu da ThorVG-ni bazarda mövcud Lottie ifa kitabxanalarından biri edir. Layihənin Viki-sində həyata keçirilmiş imkanların siyahısı.
- Bu günə qədər .lot fayl uzantısı Lottie faylları üçün yeni rəsmi IANA standardıdır. ThorVG indi ənənəvi .json uzantısına əlavə olaraq .lot-u Lottie fayllarının standart formatı kimi rəsmi şəkildə dəstəkləyir.
- Twining
- İnterpolasiya dəstəyi qeyri-xətalı bitişik açar çərçivələr arasında əlavə edilib, bu da daha hamar keçidlər və daha dəqiq zaman idarəsi təmin edir. Bu yenilik, Lottie-də vəziyyət əsaslı animasiya oynatılması (marker-əsaslı oynatma olaraq da tanınır) ilə istifadə edildikdə xüsusilə effektlidir. Bir çox hallarda animasiyalar vəziyyətlər arasında mürəkkəb, qeyri-xətalı yollarla keçməyə yönəldilmişdir. Ənənəvi Lottie onun möhkəm ardıcıl zaman quruluşu ilə belə senariləri çətinliklə idarə edir, bu da tez-tez ardıcıllığı qeyri-müəyyən açar çərçivələri arasında keçid zamanı kəskin sıçrayışlara və ya irqi sıçrayışlara səbəb olur. video-demo 1, video-demo 2.
- İndi tweeter ilə inkişafçılar iki ayrı açar çərçivə arasında interpolasiyanı yerinə yetirə bilərlər, hətta onlar zaman şkalasında xətalı şərtli olmasa da. Bu, vəziyyətlər arasında keçidlərdə daha təbii və hamar visual effektlər əldə etməyə imkan tanıyır, bu da interaktiv animasiyaların çevikliyini və reallığını əhəmiyyətli dərəcədə artırır. video-demo 1, video-demo 2.
- İndi (sınaq funksiyası kimi) icra zamanı ifadə dəyişənlərinin dəyərlərini yenidən yazmaq dəstəyi verilir, bu da istifadəçi girişinə əsaslanaraq dinamik olaraq skript məntiqini həyata keçirməyə imkan tanıyır. Bu, Lottie resurslarından istifadə edərək interaktiv animasiyalar yaratmaq üçün xüsusilə güclü bir alət halına gəlir, orijinal dizayndan kənara çıxan fərdi variantların hazırlanmasına imkan yaradır.video-demonstrasiya).
- Lottie animasiyalarına istinad olunan xarici resursları (məsələn, şəkilləri) yükləməkdə daha çox çeviklik təmin edən özəlləşdirilə bilən Asset Resolver mexanizmi əlavə edilib.
- Birbaşa animasiya qatlarının üzərində zəngin vizual təkmilləşdirmələr aparmağa imkan verən Lottie LayerEffect funksiyasının genişləndirilmiş dəstəyi.
- Bəzi effektlərin resurs istehlakını nəzərə alaraq, effektlərin render edilməsinin keyfiyyətini və performance parametrini tənzimləmək imkanı təqdim edilib, bu da CPU-nun resursları məhdud olan platformalarda optimallaşdırma üçün idealdır. Bu, inkişafçılara render dəqiqliyini idarə etməyə və hədəf platformaya görə rendermanın performansını optimallaşdırmağa imkan tanıyır.
- İfadələrə dəstək aşağıdakı əsas funksiyalar və xüsusiyyətlərin əlavə edilməsi ilə genişləndirilib:
- wiggle, temporalWiggle: zamana bağlı təsadüfi hərəkəti tətbiq etmə.
- pointOnPath: yol boyunca mövqeyi hesablama.
- propertyIndex, groupIndex: xüsusiyyət və ya qrup indeksinə istinad.
- value, property, effect: xüsusiyyət dəyərlərinə və xarici effektlərə giriş.
- Spesifikasiyalara daha dəqiq uyğunluq:
- TextFollowPath – yeni spesifikasiya, mətnin istənilən vektor yolu boyunca hərəkət etməsinə imkan tanıyır (video-demonstrasiya).
- Mətnin hizalanma parametrləri – yatay və şaquli hizalanma konfiqurasiyasına əsaslanaraq mətn qatlarının daha dəqiq görünüşünü təmin edir (video-demonstrasiya).
- Maskanın genişləndirilməsi – maska formasının vizual kompozisiyaya təsirini daha dəqiq şəkildə idarə etməyə imkan tanıyan yeni funksiyadır (video-demonstrasiya).
- SVG
- ThorVG indi SVG faylında təyin edilmiş unikal id atributları ilə fərdi SVG elementlərinə daxil olmağa və onları dəyişdirməyə imkan tanıyır. Bu xüsusiyyət, inkişaf etdiricilərə idxal edilmiş SVG səhnəsində konkret vektor fiqurlarını birbaşa seçmək və manipulyasiya etmək imkanı verir, bu da interaktiv və ya dinamik istifadələr üçün idealdır (məsələn, mövzu dizaynı, vurğulama).
- Dəstək Gauss bulanıklığı effekti.
- İntelligent rendering
- ThorVG proqram mühərriki artıq yalnız dəyişən vektor səhnəsinin hissələrini yeniləyərək daha effektiv rendering iş axınını təmin edən intellektual qismən renderingi dəstəkləyir. Dəyişdirilmiş bölgələrin daxili izlənməsi sayəsində gereksiz yenidən çəkmələri minimuma endirərək ümumi performansı optimallaşdırır. Bu xüsusiyyət, istifadəçi interfeysi rendering, dizayn alətləri və səhnənin böyük hissəsinin statik qaldığı, yalnız kiçik elementlərin kadrlar arasında yeniləndiyi tətbiqlərdə əhəmiyyətli üstünlüklər təmin edir. Bu cür hallarda səhnənin tam renderingindən imtina etmək, hesablamaların yükünü əhəmiyyətli dərəcədə azalda bilər və enerji effektivliyini artırır ki, bu da mobil və daxili sistemlər üçün xüsusilə dəyərlidir.
- Bu məqsədə nail olmaq üçün ThorVG 1.0, qismən rendering üçün xüsusi hazırlanmış alqoritmik üsulların kombinasiyasını tətbiq edir. Aşağıda bu sistemin əsas strategiyaları verilmişdir:
- X koordinatları üzrə sıralama alqoritmi: fiqurlar x koordinatları üzrə sıralanır və ‘çirkli’ bölgələrin lazımsız yoxlanılması sayını azaltmaq üçün xətli keçmə strategiyası tətbiq edilir. Bu, mürəkkəbliyi O(N × M)-dən O(N + M + K + N log N)-ə qədər azaldır, burada N – fiqurların sayı, M – ‘çirkli’ bölgələrin sayı, K – faktiki üst-üstə düşmələrin sayı.
- Bölmə və şərti birləşmə: incə-granulluq alt bölgələrin bölünməsi intellektual birləşmə ilə tarazlanır ki, fragmentasiyadan qaçsın. Beləliklə, daha effektli yaddaş keşi istifadəsi üçün üfüqi birləşmələrə üstünlük verilir.
- Məkan ayırması (varsayılan olaraq 4×4 şəbəkə): render səthi 16 sahəyə bölünür, bu da yalnız müvafiq "çirkli" sahələrin yoxlanılmasına imkan tanıyır və mürəkkəb istifadəçi interfeysi yeniləmələrində əlavə xərcləri əhəmiyyətli dərəcədə azaldır.
- Birlikdə işləyərək, bu texnikalar daha hamar və sürətli render təmin edir, xüsusilə də daxilində sistemlərdə və ya reallıq sistemlərində, burada tez-tez qismən yeniləmələr baş verir. Daha ətraflı məlumat ayrı bir yazıda dərc olunacaq. blogdan aldım..
- Diqqət yetirin ki, dinamik oyunlar və ya ekran dolusu animasiyalar kimi yüksək dinamik məzmunda, burada demək olar ki, bütün obyektlər hər kadrda dəyişir, qismən renderin performansda az və ya heç bir üstünlük vermir və hətta azacıq əlavə xərclərə səbəb ola bilər. Belə hallarda, ümumiyyətlə, tam render seçmək daha yaxşıdır. Bu səbəbdən ThorVG həm qismən, həm də tam render konfiqurasiyasını dəstəkləyir, bu da sizə istifadə halınıza uyğun optimal yanaşmanı seçmək imkanı verir. Məhsulunuzun performansını analiz edə bilər və Meson -Dpartial=[true/false] seçimi və EngineOption::Smart sinifinin SwCanvas an option class istifadə edərək əsaslı qərar verə bilərsiniz.
auto canvas = SwCanvas::gen(EngineOption::Smart);
- Web texnologiyalarının WebGL, WebGPU və yüngül WebCanvas ilə inteqrasiya dövrü başlayır, bununla da brauzerdə problemsiz render təmin edilir.
- WebGL və WebGPU arxa planları artıq istehsal istifadəsi üçün rəsmi olaraq hazırdır. Bu GPU əsaslı renderlər, ThorVG Canvasın bütün funksionallığını eyni keyfiyyət və görüntü stabiliklə dəstəkləyərək CPU-nun ənənəvi arxa planı ilə tam funksional uyğunluq təqdim edir. 0.15 versiyası ilə müqayisədə, GPU renderinin performansı 150%-dən çox artıb ki, bu da real vaxtda web-vektor qrafikasının əhəmiyyətli dərəcədə yaxşılaşdırılmasını təmin edir.
- CPU/GPU güc məhdudiyyətləri və daxil edilmiş mühitlərdə performansın əhəmiyyətli dərəcədə artırılması.
- ThorVG 1.0 versiyası 0.15 versiyası ilə müqayisədə yaxşılaşdırılmış performans təqdim edir, həm CPU, həm də GPU üzrə nəzərəçarpan artımla.
- Əsas optimallaşdırmalar:
- Render borusunun effektivliyinin artırılması.
- Kadrın tamponu ayırma xərclərinin azaldılması.
- Lottie tərkiblərinin optimallaşdırılması.
- Paket renderi və GPU önbelleklemenin yaxşılaşdırılması.
- ThorVG, CPU əsaslı rasterləşdirmə üçün optimallaşdırılıb, GPU resurslarının məhdud olduğu, istifadə olunmadığı və ya qəsdən istifadə edilmədiyi mühitlərdə vektor vizuallaşmaya yönəlmişdir. Tipik CPU testlərində, ThorVG, vektor grafika mühərriki Skia ilə müqayisədə tipik vektor vizualizasiya tapşırıqlarını yerinə yetirərkən ortalama 1.8 dəfə daha yüksək performans nümayiş etdirir. Üstünlük xüsusilə geometriyanın intensiv istifadəsi ilə bağlı senarilərdə, məsələn, düzbucaq, xət, döndürmə və dairələrin vizuallaşdırılması (screenshot 3) zamanı müəyyən edilir.
- ThorVG Janitor
- ThorVG-nin renderləmə performansının real nümayişini ThorVG Janitor görmək olar – yüksək qrafik yükü altında prosessorun performansını nümayiş etdirmək üçün hazırlanmış interaktiv oyunda. Scena, hissəcik əsaslı qrafika ilə yaradılmış yüzlərlə düşməni, tam ölçülü raster görüntüləri olan ulduzlu göyün çoxlaylı fonlarını, DropShadow və Blur kimi real vaxt vizual effektlərini və eyni anda renderlənən 25000-dən çox obyekti özündə birləşdirir. Hətta 2K (2048×1152) qətnamə ilə pik yüklənmə zamanı layihə 120 FPS-dən yuxarı stabil performans nümayiş etdirir ki, bu da ThorVG-nin daha çox effektlərin olduğu mürəkkəb mühitlər üçün effektivliyini və uyğunluğunu vurğulayır (video-demonstrasiya, screenshot).
- Digər əhəmiyyətli dəyişikliklər
- ThorVG-nin Godot-a inteqrasiya nümunəsiAncaq bu video nümayişində ThorVG, veb mühitdə Lottie animasiyaları olan yüzlərlə obyekti 120 kadr/saniyə sürətlə renderləmək üçün Godot ilə inteqrasiya olunub. Bu nümayiş, ThorVG-nin veb mühitdə performanslı və keyfiyyətli animasiya üçün potensialını göstərir.
- əlavə edildi öyrədici nümunə ThorVG WebCanvas istifadə edilməsi.
- İnteraktiv ThorVG Playground.
- Swift dili üçün ThorVG üçün bir wrapper əlavə edildi: https://github.com/thorvg/thorvg.swift.
- ThorVG istifadə nümunələri ayrıca bir repozitoriyaya köçürülüb https://github.com/thorvg/thorvg.example.
- uzantısı dərc edilmişdir thorvg.vscode ThorVG resurslarını birbaşa Visual Studio Code mühitində yaratmaq, redaktə etmək və önizləmək üçün VSCode üçün.
- Versiya 1.0-da API-nin iş zamanı performansı, istifadə rahatlığı, tutarlılıq və C ilə uyğunluğu artırmaq məqsədilə əhəmiyyətli restruktürləşməsi həyata keçirildi.
- TVG şəkil formatının dəstəyi silinmişdir. Bu qərar, animasiyaya əsaslanan yeni ThorVG şəkil formatını hazırlamağa yönəlmişdir.
- İstehsalatda istifadə üçün çoxsaylı səhv düzəlişləri və stabilliyin artırılması.
Mənbə: linux.org.ru
