16 novembre 2021

Découvrez Evergine… plus que jamais !

Nous sommes ravis de partager toutes les nouveautés que nous avons développées l'an dernier dans notre moteur graphique. Nous avons lancé WaveEngine il y a 10 ans avec une excellente équipe de professionnels, nous avons beaucoup appris tout au long de ce parcours et nous sommes maintenant prêts à faire passer ce projet au niveau supérieur. C'est pourquoi nous avons décidé de renommer cette technologie Evergine, avec une vision claire.

Notre mission est de créer un excellent moteur graphique basé sur le langage C# afin d'apporter au secteur industriel les dernières avancées de l'informatique graphique, de permettre aux entreprises de faire évoluer ou de créer des produits à contenu 3D plus facilement qu'auparavant, et de les proposer sur un large éventail d'appareils et de plateformes.

Avec Evergine, nous avons créé une plateforme graphique unifiée qui prend en charge les API graphiques les plus répandues, comme DirectX, Vulkan, OpenGL, Metal et WebGL. Elle fonctionne sur les plateformes desktop, mobiles et web, tire parti des dernières avancées en matière de performances de .Net 6.0 et intègre les technologies d'interface utilisateur les plus utilisées, comme WPF, Windows Forms, SDL, GTK, Cocoa et la récente technologie WinUI lancée par Microsoft.

Vous pouvez télécharger Evergine :

 

Points forts d'Evergine

  • Nouveau launcher
  • Nouveaux templates .Net 6 avec C# 10
  • Prise en charge des projets Visual Studio 2022
  • Nouvelle API de RayTracing
  • Nouveau site de documentation
  • Nouveau système de packages
  • Débogage d'applications web WASM
  • Nouveaux prefabs d'entités
  • Nouvel outil de graphe de post-traitement
  • AMD FidelityFX Super Resolution
  • Prise en charge des applications WinUI
  • Nouveaux add-ons à venir
  • Nouvelle extension ImGUI
  • Nouvelle API de requêtes GPU

 

Plateforme graphique unifiée

Evergine offre une plateforme graphique unifiée s'appuyant sur les API graphiques les plus récentes, comme DirectX, Vulkan, OpenGL, Metal et WebGL. Les nouvelles fonctionnalités et améliorations sont disponibles simultanément sur toutes les plateformes, et votre code s'exécute sur desktop, mobile et web.

API prises en charge evergine

 

Evergine adopte un nouveau système de numérotation des versions : nous avons sauté la version 4.0 et utilisons désormais le Calendar Versioning.

[Année].[Mois].[Jour].[Build]

Permettre à nos clients d'utiliser les meilleures et les plus récentes versions d'Evergine est l'un de nos principaux objectifs, et ce système aidera à vérifier si la version utilisée est potentiellement obsolète.

Notre première version d'Evergine est la 2021.11.17.X

 

.Net 6 et C# 10

Evergine est le premier moteur graphique à prendre officiellement en charge .Net 6 et C# 10. De nouveaux templates de projet ciblant la nouvelle version LTS .Net 6 sont disponibles depuis le nouveau launcher d'Evergine.

Cette transition a commencé il y a 2 ans, lorsque nous avons adopté .Net Core, et l'an dernier, nous avons été l'un des premiers moteurs graphiques à prendre en charge .Net 5. Tout ce travail nous a permis de passer facilement à .Net 6 une semaine seulement après la sortie de cette nouvelle technologie par Microsoft.

Avec .Net 6 et Visual Studio 2022, vous accédez automatiquement aux fonctionnalités les plus avancées de C# et du runtime .Net, comme une consommation mémoire réduite, un code plus rapide, le hot reload, l'IL trimming, des opérations d'E/S plus rapides, les Record structs ou la prise en charge d'ARM64.

 

Nouveau Launcher

Le launcher a été presque entièrement réécrit dans Evergine, avec pour objectif de créer un nouveau point de départ réunissant en un seul endroit toutes les ressources nécessaires pour créer des applications avec Evergine.

Vous pouvez désormais installer plusieurs versions d'Evergine en un clic et configurer facilement différentes sources, y compris une source de packages locale.

Nous avons publié notre canal nightly interne comme nouvelle source : vous pouvez donc maintenant essayer toutes les fonctionnalités expérimentales via ce canal.

Le nouveau launcher propose de nouvelles sections, comme Samples, Learning et Support, pour que les développeurs trouvent facilement toutes les ressources utiles.

Launcher evergine

Nouvelle documentation

Nous avons créé un nouveau guide de documentation complet couvrant tous les sujets importants pour commencer à utiliser Evergine. L'amélioration de la documentation était l'une des demandes les plus fréquentes sur notre page GitHub de feedback, et voici le résultat.

Documentation evergine

Prise en charge du RayTracing

Evergine s'intègre facilement aux applications desktop et aux sites web, tout en vous donnant accès aux dernières avancées des technologies graphiques, comme RTX de Nvidia.

La technologie RTX exploite les nouvelles séries de cartes graphiques pour effectuer le rendu de contenus 3D par raytracing en temps réel, une bonne alternative pour améliorer le réalisme du rendu par rapport à la technologie traditionnelle de rastérisation.

La technologie de raytracing est prise en charge dans Evergine dans le cadre de son API bas niveau, au-dessus de DirectX 12 et Vulkan.

Effets evergine

Système de packages

La réutilisabilité est un concept très répandu dans le développement logiciel et, en tant que développeurs, nous cherchons toujours des moyens d'isoler des parties de notre code pour créer des bibliothèques, des extraits de code ou des assets utilisables dans différents projets. Dans l'univers .NET, il est très courant de créer des packages NuGet pour partager des bibliothèques.

Evergine est lui-même distribué au format NuGet, ce qui nous permet de fournir de nombreux comportements, composants et services intégrés. En revanche, ce n'est pas aussi simple si vous souhaitez partager des assets comme des textures, des effets ou des matériaux depuis le dossier Content d'un projet Evergine. Pour résoudre ce problème, nous avons travaillé sur un nouveau système de packages qui vous permettra de distribuer des assets réutilisables dans de nombreux projets.

Actuellement, le template de projet par défaut utilise ce nouveau système de packages pour distribuer tous les assets de base sous le nom de package Evergine.Core.

Packages evergine

Débogage d'applications web WASM

Nous avons développé un ensemble de technologies reposant sur le nouveau .Net 6 et le SDK Blazor Webassembly, intégrées à un tout nouveau template WebGL, ce qui nous a permis d'offrir aux développeurs une fonctionnalité qui manquait jusqu'à présent : déboguer dans Visual Studio du code C# compilé en webassembly !

Il vous suffit de créer un nouveau projet depuis le nouveau Evergine Launcher, de choisir le template WebGL2.0 et d'ouvrir la solution dans Visual Studio. Après avoir configuré le projet comme indiqué dans le README, placez un point d'arrêt dans le code, appuyez sur Play et observez la magie opérer.

débogage webassembly

La prise en charge du débogage Webassembly représente sans aucun doute un grand bond en avant pour la productivité de développement, en améliorant la qualité, la sécurité et les performances de chaque application web Evergine.

Nouveaux prefabs d'entités

Evergine intègre une première version de notre nouveau système de Prefabs, avec un socle de fonctionnalités, pendant que nous travaillons à y ajouter de nouvelles fonctionnalités intéressantes. Dans cette première version, nous prenons en charge la création et l'instanciation de prefabs.

Prefabs evergine

Outil de graphe de post-traitement

Evergine intègre un nouvel asset de graphe de post-traitement qui vous permet de définir un graphe des effets de post-traitement utilisés dans votre rendu.

Tous les nœuds du graphe de post-traitement reposent sur des Compute shaders pour garantir les meilleures performances de rendu, et ils peuvent être facilement modifiés dans l'outil d'effets d'Evergine Studio.

Nous avons également inclus un graphe de post-traitement par défaut avec les effets les plus utilisés, ainsi que son code source, pour vous aider à créer de nouveaux effets de post-traitement basés sur des compute shaders.

éditeur de graphe de post-traitement

AMD FidelityFX Super Resolution (FSR)

FidelityFX Super Resolution utilise des technologies d'upscaling spatial de pointe ultra-optimisées développées par AMD pour augmenter le framerate de vos applications.

La technologie AMD FSR est prise en charge en tant que nœud compute dans le graphe de post-traitement par défaut, ce qui vous aidera à effectuer en temps réel le rendu de scènes complètes de haute qualité sur un large éventail d'ordinateurs.

Elle prend en entrée une image couleur rendue en basse résolution et lui applique un algorithme de super-résolution pour générer la sortie à la résolution finale. C'est intéressant pour le rendu de fichiers CAD complexes comportant des millions de petites pièces sans aliasing ; en mode qualité, le résultat est très proche de la résolution native.

AMD FSR evergine

Prise en charge de WinUI

WinUI est la technologie d'interface utilisateur la plus récente lancée par Microsoft pour faciliter la création d'applications modernes sur tous les appareils Windows. Elle s'appuie sur Fluent Design pour offrir des expériences intuitives, accessibles et puissantes, ainsi que les derniers modèles d'interface utilisateur.

Avec Evergine, vous pouvez désormais créer des applications 3D basées sur WinUI. Nous avons créé un exemple disponible sur https://github.com/EvergineTeam/UIWindowSystemsDemo.

WinUISample evergine

Extension ImGUI

ImGui est une interface utilisateur graphique très populaire, aux dépendances minimales, qui utilise une API directe et simple pour afficher des interfaces sur GPU.

Nous avons créé une extension interne sous l'espace de noms Evergine.ImGui, très utile pour afficher des informations de diagnostic.

Nous travaillons sur un nouvel outil interne de diagnostic basé sur ImGui pour afficher les statistiques internes des frames et d'autres informations utiles.

ImGui evergine

Add-ons à venir

Nous sommes sur le point de publier un excellent ensemble d'add-ons utilisant le nouveau système de packages. Tous ces add-ons devraient résoudre certains problèmes clés que rencontrent les entreprises lorsqu'elles créent des applications 3D industrielles à partir de leurs ressources habituelles.

  • Azure Remote Rendering : Azure Remote Rendering apporte vos contenus 3D de la plus haute qualité et vos expériences interactives à la réalité mixte. Ce service exploite la puissance de calcul d'Azure pour effectuer dans le cloud le rendu des modèles, même les plus complexes, et les diffuser en temps réel vers vos appareils, afin que les utilisateurs puissent interagir et collaborer sur des contenus 3D avec un niveau de détail impressionnant.
  • Noesis GUI : NoesisGUI est une bibliothèque d'interface utilisateur graphique multiplateforme légère, basée sur XAML et optimisée pour les GPU. Utiliser NoesisGUI avec Evergine vous permet de créer des interfaces utilisateur attrayantes à l'aide de puissants outils XAML comme Microsoft Expression Blend.
  • Formats CAD : importez vos modèles CAD/3D industriels dans votre application Evergine. Prend en charge les formats IFC, STEP, IGES, STL et OBJ.
  • MRTK : Evergine.MRTK est un projet qui fournit un ensemble de composants et de fonctionnalités permettant d'accélérer le développement d'applications XR multiplateformes dans Evergine. Evergine.MRTK fournit un ensemble de briques de base pour le développement Evergine sur des plateformes XR telles que :
    • Microsoft HoloLens 2
    • Casques Windows Mixed Reality
    • Casques OpenVR (HTC Vive / Oculus Rift)
  • Bing Maps 3D : profitez de tout l'intérêt de la cartographie 3D dans Evergine. L'add-on Bing Maps est un contrôle de carte pour Evergine qui vous permet d'utiliser les données cartographiques 3D de Bing Maps dans votre application.

 

Conclusion

Il s'agit d'une release majeure, avec des améliorations en matière de performances, de fonctionnalités et d'ergonomie, et nous annoncerons bien d'autres fonctionnalités dans les semaines et les mois à venir.

Cette release est le fruit d'un travail acharné et d'une excellente équipe de personnes talentueuses dans de nombreux domaines, avec une idée claire : créer la meilleure technologie graphique possible pour le secteur industriel.

Nous espérons que cet article vous a intéressé ; nous continuerons à collaborer avec davantage d'entreprises pour les aider à créer des solutions 3D exceptionnelles.

 

Au nom de l'équipe Evergine, merci.

Javier canton
Auteur
Javier Cantón
Plain Concepts Research