ThorVG 1.0

ThorVG 1.0 ThorVG 1.0 ThorVG 1.0

Le 31 janvier, après un an et demi de développement continu, la version 1.0 d'une bibliothèque de graphisme vectoriel légère et portable multiplateforme a été publiée. ThorVG, destinée à la visualisation de scènes vectorielles et d'animations. Le support du chargement de fichiers dans les formats Lottie et SVG Tiny 1.2 (la liste des fonctionnalités implémentées de SVG Tiny est disponible dans le Wiki du projet.).

La bibliothèque offre une API conviviale pour l'importation, la création et l'affichage de graphiques vectoriels, ainsi que pour leur exportation dans divers formats graphiques, ce qui la rend polyvalente pour une utilisation sur différentes plateformes logicielles et applications de visualisation de contenu graphique. Des utilitaires de console lottie2gif et svg2png sont également fournis.

ThorVG est utilisé pour le rendu de graphismes vectoriels dans des projets tels que Tizen OS, Godot Engine, LVGL et des lecteurs dotLottie..

Le projet est écrit en C++ (norme C++14) et est distribué sous la licence MIT.

Ce n'est pas simplement une mise à jour — c'est une base refondue pour un graphisme vectoriel 2D haute performance, évolutif et portable sur toutes les plateformes et appareils. Au cours du développement, ThorVG est devenu un moteur graphique mûr, prêt pour la production, ayant démontré une qualité et une performance éprouvées dans des applications réelles.

ThorVG a rapidement gagné en popularité et suscité un intérêt croissant de la part de la communauté, reflétant son évolution d'un projet en phase précoce à un moteur graphique vectoriel largement reconnu et pratiquement utilisé, prêt pour une utilisation réelle multiplateforme.

Liste des changements :

  • Des fonctionnalités avancées de rendu de texte, des effets visuels riches et un support de superposition précise pour une meilleure expression graphique.
    • Support de l'alignement horizontal et vertical, permettant un contrôle précis du placement du texte dans divers contextes d'interface utilisateur.
    • Coupure automatique des lignes avec options de sélection de mode : par caractères, par mots, coupure intelligente et troncature avec des points de suspension pour gérer le débordement.
    • Prise en charge de la rupture de ligne manuelle, permettant aux développeurs de contrôler explicitement les ruptures de ligne à l'aide de caractères de nouvelle ligne, tels que \n. Cela permet de formater précisément les blocs de texte multiligne, en particulier dans les mises en page dynamiques ou les animations textuelles.
    • Prise en charge d'un espacement personnalisable entre les caractères, permettant des ajustements précis pour améliorer la lisibilité ou atteindre des styles typographiques spécifiques.
    • Prise en charge du contour du texte, permettant de créer des effets stylistiques et d'améliorer le contraste sur différents fonds (capture d'écran 1).
    • Introduction d'un système de modes de fusion plus complet et cohérent, améliorant considérablement le comportement des modes de fusion et alignant les formules et la logique de composition sur les normes de l'industrie telles que Lottie, SVG et la spécification W3C « Compositing and Blending ». Ces améliorations garantissent une plus grande cohérence visuelle et une compatibilité multiplateforme, en particulier dans les flux de travail web et d'animation.
    • Les modes de fusion suivants sont réalisés et pris en charge : « Teinte », « Saturation », « Couleur » et « Luminosité » en utilisant la composition de l'espace couleur HSL. Ces modes améliorent la compatibilité avec les effets de calques Lottie et la prise en charge future du mélange SVG (capture d'écran 2).
    • Des améliorations et des extensions significatives dans les effets visuels au niveau de la scène, rendant la graphie vectorielle plus expressive et visuellement riche :
      • Effet d'ombre avec un flou gaussien (démonstration vidéo).
      • Méthodes de substitution de couleurs qui modifient l'apparence des graphiques en redéfinissant la manière d'appliquer, de mélanger ou d'assortir des couleurs en fonction de la teinte (démonstration vidéo).
    • Nouvelles fonctions d'assistance ajoutées pour étendre les capacités interactives. Celles-ci incluent la prise en charge des requêtes d'information spatiale (démonstration) et la détection des collisions avec les objets affichés (démonstration vidéo).
  • Fonctionnalités étendues d'animation Lottie pour une lecture multiplateforme, y compris des préréglages modulaires pour le Web Player, optimisés en termes de taille, de performance et de mode de rendu (CPU/GPU)
    • Améliorations significatives dans le support de l'animation Lottie avec une meilleure compatibilité, flexibilité et interactivité sur toutes les plateformes. Non seulement l'éventail des fonctions et des expressions Lottie prises en charge a été élargi, mais des outils ont également été fournis aux développeurs pour contrôler dynamiquement le comportement des animations en temps réel, faisant de ThorVG l'une des bibliothèques de lecture Lottie les plus puissantes disponibles sur le marché. Liste des fonctionnalités mises en œuvre dans le projet Wiki.
    • À ce jour, l'extension de fichier .lot est la nouvelle norme officielle de l'IANA pour les fichiers Lottie. ThorVG prend désormais officiellement en charge .lot en tant que format de fichier Lottie standard, en plus de l'extension traditionnelle .json.
    • Twinning
      • La prise en charge de l'interpolation entre les images clés non linéairement adjacentes a été ajoutée, permettant des transitions plus fluides et un meilleur contrôle du timing. Cette amélioration est particulièrement efficace lorsqu'elle est utilisée avec la lecture d'animations basée sur des états (également connue sous le nom de lecture basée sur des marqueurs) dans Lottie. Dans de nombreux cas, les animations sont conçues pour passer entre des états de manière complexe et non linéaire. La Lottie traditionnelle, avec sa structure temporelle strictement séquentielle, a du mal à traiter de tels scénarios, ce qui entraîne souvent des réinitialisations brusques ou des sauts maladroits lors des transitions entre des images clés non consécutives. démonstration vidéo 1, démonstration vidéo 2.
      • Avec le twinning, les développeurs peuvent désormais effectuer une interpolation directement entre deux images clés distinctes, même si elles ne sont pas linéairement adjacentes sur la timeline. Cela permet d'obtenir des effets visuels plus naturels et fluides lors des transitions entre les états, augmentant considérablement la flexibilité et le réalisme des animations interactives. démonstration vidéo 1, démonstration vidéo 2.
    • Le soutien à la réécriture des valeurs de variable d'expressions pendant l'exécution est désormais disponible (en tant que fonctionnalité expérimentale), permettant d'exécuter dynamiquement la logique de script basée sur les entrées utilisateur. Cela en fait un outil particulièrement puissant pour la création d'animations interactives utilisant des ressources Lottie, permettant de créer des variations personnalisées qui vont au-delà du design original.démonstration vidéo).
    • Ajout d'un mécanisme de résolveur d'actifs personnalisable, offrant une plus grande flexibilité pour le chargement de ressources externes (par exemple, des images) auxquelles se réfèrent les animations Lottie.
    • Support étendu de la fonction Lottie LayerEffect, permettant d'effectuer des améliorations visuelles riches directement sur les couches d'animation avec les effets décrits ci-dessus.
    • Étant donné que certains effets peuvent être gourmands en ressources, une option de personnalisation qualité et performance pour le rendu des effets a été proposée, idéale pour l'optimisation sur des plateformes disposant de ressources CPU limitées. Cela permet aux développeurs de contrôler la précision du rendu et d'optimiser les performances en fonction de la plateforme ciblée.
    • Le support des expressions a été étendu par l'ajout des fonctionnalités et propriétés clés suivantes :
      • wiggle, temporalWiggle : application d'un mouvement aléatoire dépendant du temps.
      • pointOnPath : calcul de la position le long d'un chemin.
      • propertyIndex, groupIndex : référence à l'index de la propriété ou du groupe.
      • value, property, effect : accès aux valeurs des propriétés et aux effets externes.
    • Meilleure conformité aux spécifications :
      • TextFollowPath – nouvelle spécification permettant au texte de suivre des chemins vectoriels arbitraires (démonstration vidéo).
      • Options d'alignement du texte – affichage plus précis des couches de texte basé sur les paramètres de leur alignement horizontal et vertical (démonstration vidéo).
      • Extension de masque – nouvelle fonctionnalité permettant de contrôler plus précisément l'influence de la forme du masque sur la composition visuelle (démonstration vidéo).
  • SVG
    • ThorVG permet désormais d'accéder à des éléments SVG individuels et de les modifier à l'aide d'attributs id uniques définis dans le fichier SVG source. Cette fonctionnalité permet aux développeurs de sélectionner et de manipuler directement des formes vectorielles spécifiques dans la scène SVG importée, idéale pour des scénarios d'utilisation interactifs ou dynamiques (par exemple, décoration thématique, mise en évidence).
    • Support effet de flou gaussien.
  • Rendu intelligent
    • Le moteur logiciel ThorVG prend désormais en charge le rendu partiel intelligent, qui permet des flux de travail de rendu plus efficaces en ne mettant à jour que les parties de la scène vectorielle qui ont changé. Grâce à un suivi interne des zones modifiées, il minimise les redessins inutiles et optimise les performances globales. Cette fonctionnalité offre des avantages considérables dans des scénarios tels que le rendu d'interfaces utilisateur, les outils de conception ou les applications où la majorité de la scène reste statique, tandis que seuls de petits éléments sont mis à jour entre les images. Dans de tels cas, renoncer au rendu complet de la scène peut considérablement réduire la charge de calcul et améliorer l'efficacité énergétique, ce qui est particulièrement précieux pour les systèmes mobiles et embarqués.
    • Pour atteindre cet objectif, ThorVG 1.0 applique une combinaison de méthodes algorithmiques spécifiquement conçues pour le rendu partiel. Voici les principales stratégies qui sous-tendent ce système :
      • Algorithme de passage linéaire : les formes sont triées par coordonnées x, et une stratégie de passage linéaire est appliquée pour réduire les vérifications inutiles des zones « sales ». Cela réduit la complexité de O(N × M) à O(N + M + K + N log N), où N est le nombre de formes, M est le nombre de zones « sales », et K est le nombre de véritables superpositions.
      • Division et fusion conditionnelle : une division fine des sous-zones est équilibrée par une fusion intelligente pour éviter la fragmentation. La fusion horizontale est favorisée pour un meilleur usage du cache mémoire.
      • Division spatiale (grille par défaut 4×4) : la surface de rendu est divisée en 16 zones, ce qui permet de vérifier uniquement les zones « sales » des formes correspondantes, réduisant considérablement les frais généraux lors de mises à jour complexes de l'interface utilisateur.
    • En travaillant ensemble, ces techniques assurent un rendu plus fluide et plus rapide, en particulier dans les systèmes embarqués ou en temps réel, où des mises à jour partielles se produisent fréquemment. Des informations plus détaillées seront publiées dans un article séparé. blog.
    • Veuillez noter que dans le cas de contenus hautement dynamiques, tels que les jeux dynamiques ou les animations en plein écran, où presque tous les objets changent à chaque image, le rendu partiel offre peu ou pas d'avantages en termes de performance et peut même entraîner de légères surcharges. Dans de tels cas, il est généralement préférable d'opter pour un rendu complet de la scène. Pour cette raison, ThorVG prend en charge tant la configuration de rendu partielle que complète, vous donnant la possibilité de choisir l'approche optimale pour votre cas d'utilisation. Vous pouvez analyser la performance de votre produit et prendre une décision éclairée en utilisant l'option Meson -Dpartial=[true/false] et l'option EngineOption::Smart de la classe SwCanvas:

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

  • Une nouvelle ère d'intégration des technologies web avec WebGL, WebGPU et un WebCanvas allégé pour un rendu fluide dans le navigateur
    • Les backends WebGL et WebGPU sont désormais officiellement prêts pour une utilisation en production. Ces rendus basés sur le GPU offrent maintenant une pleine compatibilité fonctionnelle avec le backend CPU traditionnel, prenant en charge toutes les capacités de ThorVG Canvas avec la même qualité et stabilité d'image. Par rapport à la version 0.15, la performance de rendu GPU a augmenté de plus de 150 %, ce qui permet une amélioration significative du rendu de graphiques vectoriels web en temps réel.
  • Amélioration significative des performances dans les environnements à ressources limitées en CPU/GPU et dans les environnements intégrés
    • ThorVG 1.0 offre une meilleure performance par rapport à la version 0.15, avec un gain notable tant pour le CPU que pour le GPU.
    • Optimisations clés :
      • Efficacité améliorée du pipeline de rendu.
      • Réduction des coûts liés à l'allocation de tampons d'images.
      • Analyse des compositions Lottie optimisée.
      • Rendu en lots amélioré et mise en cache GPU.
    • ThorVG est optimisé pour le rendu basé sur le CPU, mettant l'accent sur la visualisation vectorielle dans des environnements où les ressources GPU sont limitées, indisponibles ou intentionnellement non utilisées. Lors de tests typiques du CPU, ThorVG montre en moyenne des performances supérieures de 1,8 fois par rapport à l'engin graphique vectoriel largement utilisé, Skia, lors de l'exécution de tâches typiques de visualisation vectorielle. L'avantage est particulièrement évident dans les scénarios à forte utilisation de la géométrie, tels que la visualisation de rectangles, de hachures, de rotations et de cercles (voir capture d'écran 3).
  • ThorVG Janitor
    • Une démonstration réelle des performances de rendu de ThorVG peut être vue dans le projet ThorVG Janitor – un jeu interactif conçu pour démontrer les performances du processeur sous une forte charge graphique. La scène comprend des centaines d'ennemis créés avec des graphismes basés sur des particules, des arrière-plans étoilés multicouches avec des images raster en taille réelle, des effets visuels en temps réel comme DropShadow et Blur, et jusqu'à 25 000 objets rendus simultanément. Même en cas de charge maximale avec une résolution 2K (2048×1152), le projet démontre une performance stable de plus de 120 FPS, mettant en évidence l'efficacité et l'adéquation de ThorVG pour des environnements complexes avec de nombreux effets (démonstration vidéo, capture d'écran).
  • Autres modifications significatives
    • Exemple d'intégration de ThorVG dans Godot. Il y a cette vidéo-démonstration ThorVG est intégré avec Godot dans un environnement web pour rendre des centaines d'objets d'animation Lottie à plus de 120 images par seconde. Cette démonstration montre le potentiel de ThorVG dans un environnement web pour une animation fluide et de haute qualité en temps réel.
    • Ajouté exemple de formation utilisation de ThorVG WebCanvas.
    • Ajouté un ThorVG Playground.
    • Ajouté un wrapper ThorVG pour le langage Swift : https://github.com/thorvg/thorvg.swift.
    • Les exemples d'utilisation de ThorVG ont été déplacés vers un dépôt distinct https://github.com/thorvg/thorvg.example.
    • Extension publiée thorvg.vscode pour VSCode permettant de créer, éditer et prévisualiser des ressources ThorVG directement dans l'environnement de Visual Studio Code.
    • Dans la version 1.0, une restructuration substantielle de l'API a été réalisée pour améliorer les performances, la facilité d'utilisation, la cohérence et la compatibilité avec le C.
    • La prise en charge du format TVG Picture (TVG) a été supprimée. Cette décision a été prise en préparation du nouveau format ThorVG Picture, conçu avec l'animation comme concept principal.
    • De nombreuses corrections de bogues et une amélioration de la stabilité pour une utilisation en production.

Source : linux.org.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster