
Prise en charge de la physique sur le web

Evergine est un moteur graphique multiplateforme développé avec les technologies .NET. Pour porter le moteur sur la plateforme web, notre équipe s’appuie sur les technologies les plus récentes, comme .NET 6 et Blazor, qui nous permettent de compiler le moteur en WebAssembly (WASM) pour l’exécuter nativement dans le navigateur.
Pour le rendu avec WebGL dans Evergine, Emscripten et son émulation EGL sont des outils puissants qui facilitent le processus. Vous pouvez ainsi utiliser le même code que celui de votre intégration OpenGL existante, ce qui réduit la quantité de code à maintenir.

Passons maintenant à la physique. Evergine utilise Bullet Physics comme principal moteur physique. Bullet Physics est une excellente bibliothèque open source maintenue par Erwin Coumans et largement utilisée dans l’industrie graphique.

Pour utiliser Bullet dans Evergine, il faut consommer la bibliothèque C++ depuis notre moteur C#. C’est là qu’intervient BulletSharpPInvoke. Ce wrapper C# effectue des appels natifs à la bibliothèque Bullet à l’aide de PInvokes. Il est essentiel, car il permet d’utiliser la même base de code sur toutes les plateformes prises en charge par Evergine (Windows, Android, web…).
Enfin, il faut compiler les bibliothèques Bullet pour chaque plateforme à prendre en charge. Pour la plateforme web, nous avons adapté les scripts CMake fournis afin d’utiliser la chaîne d’outils Emscripten et produire les bibliothèques Bullet finales en WASM. Il est ainsi possible d’utiliser la même bibliothèque physique sur toutes les plateformes prises en charge par Evergine, désormais y compris le web.
En conclusion, en utilisant Bullet Physics et en l’adaptant pour fonctionner avec Evergine sur la plateforme web, vous pouvez proposer à vos utilisateurs des applications web plus interactives. C’est d’autant plus enthousiasmant qu’Evergine prend désormais en charge WebXR, ce qui permet des expériences web plus immersives. Il s’agit d’une prouesse technique impressionnante qui profitera aux développeurs utilisant Evergine pour leurs projets.

