
Prise en charge expérimentale de WebGPU Native

Dans la dernière version d’Evergine, nous avons le plaisir d’annoncer l’intégration expérimentale de WebGPU. Cette API révolutionnaire est conçue pour offrir de meilleures performances et des fonctionnalités plus avancées que son prédécesseur, WebGL.
Qu’est-ce que WebGPU ?
WebGPU est une API graphique moderne qui offre aux développeurs un accès bas niveau au GPU, ce qui permet des techniques de rendu avancées et des capacités de calcul étendues.

Contrairement à WebGL, qui repose sur OpenGL (une API aujourd’hui dépréciée au profit d’alternatives plus efficaces comme Vulkan et Metal), WebGPU dépasse les limites des API traditionnelles en offrant une interface plus simple et plus efficace pour la programmation graphique.
L’un des principaux avantages de WebGPU par rapport à WebGL est sa prise en charge des compute shaders. Cette capacité améliore les performances des applications à forte charge graphique et ouvre de nouvelles possibilités pour créer des effets visuels et des simulations complexes. WebGPU est conçu selon des paradigmes de programmation modernes, ce qui permet aux développeurs d’écrire un code à la fois performant et maintenable.
Les avantages de WebGPU par rapport à WebGL
WebGPU présente plusieurs avantages notables, qui en font une avancée importante pour la programmation graphique :
- Accès plus bas niveau au GPU : WebGPU offre aux développeurs un contrôle plus fin des ressources GPU, pour des tâches de rendu et de calcul plus efficaces.
- Prise en charge des compute shaders : contrairement à WebGL, WebGPU prend en charge les compute shaders, ce qui permet des calculs et des effets plus complexes directement sur le GPU.
- Meilleures performances : grâce à une architecture plus efficace, WebGPU peut exploiter les capacités du matériel moderne, pour un rendu et un traitement plus rapides.
Qu’est-ce que WebGPU Native ?
WebGPU Native est une version de l’API WebGPU conçue pour créer des applications sur les plateformes desktop et mobiles. Cette intégration est une étape importante pour renforcer les capacités graphiques d’Evergine. En commençant par la prise en charge du desktop, nous posons les bases d’une future extension au web.
Cette intégration constitue notre première étape vers une prise en charge future du web. En développant d’abord sur desktop, nous offrons aux développeurs un environnement de débogage plus simple et la possibilité d’explorer les capacités de WebGPU dans un cadre maîtrisé.
Intégration avec Evergine
WebGPU.NET, binding C# pour WebGPU
WebGPU.NET est notre binding C# , développé spécifiquement pour intégrer WebGPU à Evergine. Ce binding est public et permet aux développeurs d’exploiter facilement la puissance de WebGPU.
Traduction des shaders HLSL vers WGSL avec Naga
Pour garantir la cohérence du développement des shaders, nous mettons en place une couche de traduction de HLSL vers WGSL à l’aide de Naga. Cette bibliothèque prend du SPIR-V en entrée pour compiler les shaders en WGSL, un nouveau langage conçu spécifiquement pour WebGPU. Cette approche permet à HLSL de rester le langage principal de développement des shaders dans Evergine, tout en rendant la traduction transparente pour les utilisateurs.
Phase expérimentale actuelle
À ce stade, notre intégration est encore expérimentale. Elle prend toutefois déjà en charge des fonctionnalités essentielles comme le rendu des meshes et matériaux standard, le skinning, le morphing et les tâches de calcul de base. Ces capacités permettent aux développeurs de créer des applications dynamiques et visuellement attrayantes, capables d’exploiter toute la puissance des GPU modernes.
Commencer à utiliser le template expérimental WebGPU
Pour commencer à utiliser l’intégration expérimentale de WebGPU, vous pouvez créer un nouveau projet vanilla dans Evergine et y ajouter un profil WebGPU comme d’habitude :

Conclusion : l’avenir de l’intégration de WebGPU
À l’avenir, nous souhaitons intégrer pleinement WebGPU dans les environnements web à l’aide de WASM et d’Emscripten, afin d’étendre la portée des applications Evergine. Les prochaines évolutions renforceront la prise en charge des capacités existantes du moteur, avec notamment une meilleure intégration des compute shaders, du PostProcessing et des systèmes de particules, ainsi que des améliorations générales de la stabilité.
Alors que nous continuons à innover et à enrichir notre offre, nous invitons les développeurs à explorer cette nouvelle intégration prometteuse et à nous faire part de leurs retours.
À moyen terme, nous avons l’intention de déprécier l’intégration OpenGL/WebGL d’Evergine à mesure que les navigateurs et le marché adoptent WebGPU comme standard.
