You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
R3D Engine est un moteur de rendu 3D basé sur l'API Vulkan, développé en C++. Le projet a pour objectif de découvrir le monde de l'infographie de bas niveau et d'améliorer mes compétences en architecture logicielle.
10
+
R3D Engine est un moteur de rendu 3D développé en C++ et basé sur l’API Vulkan.
11
+
Ce projet me permet d’explorer l’infographie de bas niveau tout en perfectionnant mes compétences en architecture logicielle.
11
12
12
-
Le moteur possède une interface graphique utilisant Dear ImGui, avec une console et un observateur de variable. Les trois types d'éclairage classique sont également supportés : l'éclairage directionnel, l'éclairage ambiant et les points lumineux. Les textures sont également supportées, ainsi que les fichiers au format OBJ.
13
+
<!--more-->
13
14
14
-
Le projet utilise à présent [xmake](xmake-link), un utilitaire de build similaire à cmake basé sur du Lua. L'avantage de ce nouvel outil assez récent, c'est qu'il est bien plus simple d'utilisation, notamment pour les projets cross-plateforme.
15
+
Le projet est né de ma curiosité grandissante pour le monde du bas niveau et les jeux vidéo, notamment Minecraft.
16
+
Je me suis naturellement orienté vers le C++, mon langage de prédilection.
17
+
J’ai choisi *Vulkan* plutôt qu’OpenGL, car c’était la nouvelle API en vogue à ce moment-là (oui, j’ai pris le hype train 😄).
15
18
16
-
Le projet est disponible sur [GitHub](https://github.com/MrScriptX/R3D_Engine). Il existe aussi quelques articles sur mon blog qui vont plus en détail sur la réalisation du projet.
19
+
Le moteur repose sur deux dépendances principales : *Vulkan* pour le rendu graphique et *GLFW* pour la gestion des entrées utilisateur et des fenêtres.
20
+
À cela s’ajoute *Dear ImGui*, qui fournit une interface utilisateur intégrée au moteur.
21
+
Enfin, j’utilise *GLM* pour tout ce qui concerne les calculs matriciels et vectoriels (essentiel dans un moteur 3D 🤓).
Actuellement, le moteur permet de créer des scènes dynamiques, soit en instanciant des objets mathématiques, soit en important des fichiers au format *OBJ*.
26
+
Il prend en charge les trois types d’éclairage les plus couramment utilisés dans les jeux vidéo :
27
+
- Éclairage directionnel
28
+
- Éclairage ambiant
29
+
- Points lumineux
30
+
31
+
Grâce à ce moteur, j’ai pu développer un prototype de jeu, disponible dans le dépôt : [R3D Voxel](https://github.com/MrScriptX/R3DVoxel).
32
+
C’est en répondant aux besoins de ce prototype que j’améliore continuellement le moteur en y intégrant de nouvelles optimisations.
33
+
34
+
## Le parcours du combattant
35
+
36
+
J’ai dû entièrement refactoriser le moteur après avoir réalisé que ma première architecture présentait des limitations incompatibles avec mes besoins 😢.
37
+
En étudiant le fonctionnement de moteurs comme *Unity* ou *Unreal Engine*, j’ai pu définir un objectif clair en termes de fonctionnalités et d’architecture.
38
+
39
+
## Système de build
40
+
41
+
Au départ, je compilais le projet avec Visual Studio (un grand classique, me direz-vous).
42
+
Mais en découvrant [xmake](xmake-link), j’ai décidé d’adopter cet utilitaire, qui offre plusieurs avantages non négligeables.
43
+
44
+
Le système de build repose sur Lua, ce qui permet d’éviter les complexités de *CMake* ou de *MSBuild* (encore pire 😅).
45
+
De plus, [xmake](xmake-link) prend en charge la plupart des gestionnaires de paquets C++ (vcpkg, meson, etc.).
46
+
47
+
## Découvrez mon projet
21
48
49
+
Le projet est disponible sur [GitHub](https://github.com/MrScriptX/R3D_Engine).
50
+
51
+
Il existe aussi quelques articles sur mon blog qui vont plus en détail sur la réalisation du projet.
52
+
53
+
-[Créer un moteur de rendu 3D](/devlog/2021/05/09/creer-un-moteur-de-rendu.html)
54
+
-[Calculer les normales pour l'éclairage](/devlog/2021/07/17/compute-normals.html)
55
+
-[Intégrer Dear ImGui dans un moteur de rendu](/devlog/2022/06/03/dear-imgui-moteur-maison.html)
56
+
57
+
Vous pouvez également voir une démonstration du moteur !
0 commit comments