18 mars 2025

Nouveaux loaders runtime pour les images et les vidéos

Au début de l’année dernière, Evergine a introduit un concept novateur avec ses bibliothèques Evergine.Runtimes, soigneusement conçues pour apporter plus de flexibilité, d’efficacité et de dynamisme au chargement des assets. Ces bibliothèques facilitent le chargement d’assets depuis des dépôts de contenu locaux ou leur téléchargement dynamique depuis Internet, ce qui permet aux développeurs d’intégrer facilement du contenu dynamique dans leurs applications.

La première version comprenait :

  • Evergine.Runtimes.GLB
  • Evergine.Runtimes.STL

Deux bibliothèques spécialisées dans le chargement à l’exécution de modèles 3D aux formats GLB et STL.

Dans cette dernière release, Evergine étend ses capacités avec deux nouveaux packages NuGet :

  • Evergine.Runtimes.Images
  • Evergine.Runtimes.Videos

Evergine.Runtimes.Images

Auparavant, Evergine utilisait la bibliothèque ImageSharp pour le chargement d’images et la création de textures. Après de nombreux échanges avec des clients industriels et une analyse approfondie de leurs retours, nous avons décidé de migrer le chargement d’images vers la bibliothèque haute performance SkiaSharp.

SkiaSharp est une API graphique 2D multiplateforme et haute performance, basée sur la bibliothèque graphique Skia de Google. SkiaSharp offre une large prise en charge des formats d’image, l’accélération matérielle et des capacités de traitement d’image optimisées sur de multiples plateformes, garantissant une qualité de rendu et des performances constantes.

Cette migration stratégique vers SkiaSharp a permis des gains de performances remarquables, jusqu’à 98 % sur les plateformes prises en charge.

La bibliothèque Evergine.Runtimes.Images permet désormais de charger rapidement des textures en temps réel dans divers formats, notamment BMP, JPEG, JPG, PNG, et WEBP. Contrairement aux implémentations précédentes, qui exigeaient des assets de contenu Evergine précompilés, le nouveau runtime permet de créer dynamiquement des textures directement à partir d’images téléchargées depuis Internet, issues d’un stockage cloud ou importées par les utilisateurs. Cette avancée élargit considérablement les possibilités de développement d’applications.

Intégrer la bibliothèque Evergine.Runtimes.Images dans votre projet est très simple : il suffit d’ajouter le package NuGet correspondant et de suivre l’exemple d’implémentation fourni :

Pour plus de détails techniques, consultez la documentation officielle d’Evergine.

Evergine.Runtimes.Videos

Parallèlement aux améliorations concernant les images, cette release introduit la bibliothèque Evergine.Runtimes.Videos, conçue pour simplifier et unifier la tâche complexe du chargement et de la lecture de vidéos en temps réel sur toutes les plateformes. Le rendu vidéo en temps réel pose des défis importants en raison des différences entre les mécanismes et API propres à chaque plateforme. Après une étude approfondie, l’équipe Evergine a retenu FFmpeg comme bibliothèque multiplateforme idéale pour standardiser le chargement et la lecture de vidéos.

FFmpeg est un framework multimédia de référence, capable de décoder, encoder, transcoder, multiplexer, démultiplexer, diffuser en streaming, filtrer et lire pratiquement n’importe quel format multimédia. Réputé pour son efficacité et sa polyvalence, FFmpeg offre des performances robustes et optimisées dans des environnements matériels et logiciels variés.

Basée sur FFmpeg, la nouvelle bibliothèque Evergine.Runtimes.Videos a été rigoureusement testée avec des formats vidéo courants comme MP4 (H.264), WMV, MOV, et FLV. En outre, ce runtime prend en charge le décodage sur CPU comme le décodage accéléré par GPU, ce qui réduit considérablement le temps de décodage et permet la lecture simultanée de plusieurs vidéos haute résolution sans dégradation des performances.

L’illustration suivante montre le runtime vidéo d’Evergine fonctionnant sur une plateforme Windows configurée avec le décodage accéléré par GPU via le standard DXVA2 :

Remarque : exemple vidéo généré avec Sora d’OpenAI.

Si la prise en charge vidéo de cette release est pour l’instant limitée à Windows x64, l’équipe de développement d’Evergine travaille activement à étendre cette fonctionnalité à d’autres plateformes dans les prochaines mises à jour.

Pour intégrer ce nouveau runtime puissant dans votre projet, ajoutez le package NuGet Evergine.Runtimes.Videos et utilisez le nouveau composant VideoPlayer disponible dans Evergine Studio.

Remarque : composant VideoPlayer dans Evergine Studio

Pour une documentation technique complète et des détails d’implémentation, consultez la documentation officielle d’Evergine.

L’équipe Evergine reste engagée à améliorer et enrichir en continu les bibliothèques Runtimes, afin de simplifier le chargement dynamique d’assets pour les développeurs.

Jorge Canton
Auteur
Jorge Cantón
Plain Concepts Research