diff --git a/Gemfile b/Gemfile index 5768c91..8775f3b 100644 --- a/Gemfile +++ b/Gemfile @@ -8,7 +8,7 @@ source "https://rubygems.org" # # This will help ensure the proper Jekyll version is running. # Happy Jekylling! -gem "jekyll", "~> 4.2.2" +gem "jekyll", "~> 4.4.1" # This is the default theme for new Jekyll sites. You may change this to anything you like. gem "minima", "~> 2.5.1" # If you want to use GitHub Pages, remove the "gem "jekyll"" above and @@ -18,6 +18,7 @@ gem "minima", "~> 2.5.1" group :jekyll_plugins do gem "jekyll-feed", "~> 0.12" gem "jekyll-seo-tag" + gem "jekyll-polyglot" end # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem @@ -30,11 +31,11 @@ end # Performance-booster for watching directories on Windows gem "wdm", "~> 0.1.1", :install_if => Gem.win_platform? - -gem "csv", "~> 3.3" - -gem "base64", "~> 0.2.0" - -gem "bigdecimal", "~> 3.1" - -gem "webrick", "~> 1.9" + +gem "csv", "~> 3.3" + +gem "base64", "~> 0.2.0" + +gem "bigdecimal", "~> 3.1" + +gem "webrick", "~> 1.9" diff --git a/Gemfile.lock b/Gemfile.lock index 439ed01..4a1dc8b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -24,32 +24,57 @@ GEM ffi (1.17.1-x86_64-linux-gnu) ffi (1.17.1-x86_64-linux-musl) forwardable-extended (2.6.0) + google-protobuf (4.30.2) + bigdecimal + rake (>= 13) + google-protobuf (4.30.2-aarch64-linux) + bigdecimal + rake (>= 13) + google-protobuf (4.30.2-arm64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.30.2-x86-linux) + bigdecimal + rake (>= 13) + google-protobuf (4.30.2-x86_64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.30.2-x86_64-linux) + bigdecimal + rake (>= 13) http_parser.rb (0.8.0) i18n (1.14.7) concurrent-ruby (~> 1.0) - jekyll (4.2.2) + jekyll (4.4.1) addressable (~> 2.4) + base64 (~> 0.2) colorator (~> 1.0) + csv (~> 3.0) em-websocket (~> 0.5) i18n (~> 1.0) - jekyll-sass-converter (~> 2.0) + jekyll-sass-converter (>= 2.0, < 4.0) jekyll-watch (~> 2.0) - kramdown (~> 2.3) + json (~> 2.6) + kramdown (~> 2.3, >= 2.3.1) kramdown-parser-gfm (~> 1.0) liquid (~> 4.0) - mercenary (~> 0.4.0) + mercenary (~> 0.3, >= 0.3.6) pathutil (~> 0.9) - rouge (~> 3.0) + rouge (>= 3.0, < 5.0) safe_yaml (~> 1.0) - terminal-table (~> 2.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) jekyll-feed (0.17.0) jekyll (>= 3.7, < 5.0) - jekyll-sass-converter (2.2.0) - sassc (> 2.0.1, < 3.0) + jekyll-polyglot (1.9.0) + jekyll (>= 4.0, >= 3.0) + jekyll-sass-converter (3.1.0) + sass-embedded (~> 1.75) jekyll-seo-tag (2.8.0) jekyll (>= 3.8, < 5.0) jekyll-watch (2.2.1) listen (~> 3.0) + json (2.10.2) kramdown (2.5.1) rexml (>= 3.3.9) kramdown-parser-gfm (1.1.0) @@ -66,22 +91,40 @@ GEM pathutil (0.16.2) forwardable-extended (~> 2.6) public_suffix (6.0.1) + rake (13.2.1) rb-fsevent (0.11.2) rb-inotify (0.11.1) ffi (~> 1.0) rexml (3.4.1) - rouge (3.30.0) + rouge (4.5.1) safe_yaml (1.0.5) - sassc (2.4.0) - ffi (~> 1.9) - terminal-table (2.0.0) - unicode-display_width (~> 1.1, >= 1.1.1) + sass-embedded (1.86.0) + google-protobuf (~> 4.30) + rake (>= 13) + sass-embedded (1.86.0-aarch64-linux-gnu) + google-protobuf (~> 4.30) + sass-embedded (1.86.0-aarch64-linux-musl) + google-protobuf (~> 4.30) + sass-embedded (1.86.0-arm-linux-gnueabihf) + google-protobuf (~> 4.30) + sass-embedded (1.86.0-arm-linux-musleabihf) + google-protobuf (~> 4.30) + sass-embedded (1.86.0-arm64-darwin) + google-protobuf (~> 4.30) + sass-embedded (1.86.0-x86_64-darwin) + google-protobuf (~> 4.30) + sass-embedded (1.86.0-x86_64-linux-gnu) + google-protobuf (~> 4.30) + sass-embedded (1.86.0-x86_64-linux-musl) + google-protobuf (~> 4.30) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) thread_safe (0.3.6) tzinfo (1.2.11) thread_safe (~> 0.1) tzinfo-data (1.2025.2) tzinfo (>= 1.0.0) - unicode-display_width (1.8.0) + unicode-display_width (2.6.0) wdm (0.1.1) webrick (1.9.1) @@ -102,8 +145,9 @@ DEPENDENCIES base64 (~> 0.2.0) bigdecimal (~> 3.1) csv (~> 3.3) - jekyll (~> 4.2.2) + jekyll (~> 4.4.1) jekyll-feed (~> 0.12) + jekyll-polyglot jekyll-seo-tag minima (~> 2.5.1) tzinfo (~> 1.2) diff --git a/_config.yml b/_config.yml index f2e34de..3ba8048 100644 --- a/_config.yml +++ b/_config.yml @@ -24,6 +24,11 @@ description: >- # this means to ignore newlines until "baseurl:" baseurl: "" # the subpath of your site, e.g. /blog url: "https://mrscriptx.github.io" # the base hostname & protocol for your site, e.g. http://example.com +languages: ["en", "fr"] +default_lang: "en" +exclude_from_localization: ["javascript", "assets", "iamges", "_sass", "css", "public", "sitemap"] +parallel_localization: true + page_excerpts: true excerpt_separator: diff --git a/_posts/devlog/2021-05-09-creer-un-moteur-de-rendu.markdown b/_posts/devlog/2021-05-09-creer-un-moteur-de-rendu.markdown index 737ab9b..8995daa 100644 --- a/_posts/devlog/2021-05-09-creer-un-moteur-de-rendu.markdown +++ b/_posts/devlog/2021-05-09-creer-un-moteur-de-rendu.markdown @@ -3,6 +3,7 @@ layout: post title: "Créer un moteur de rendu 3D" date: 2021-05-09 22:32:00 +0100 categories: devlog +lang: fr --- Je l'ai fait ! Enfin j'y suis arrivé. Après des centaines d'heures de code et de réflexions. Des pauses de plusieurs mois et des semaines intensives, je peux le dire : j'ai réalisé un moteur de rendu. Le chemin pour y arriver fut très long et très difficile, surtout pour un développeur junior comme moi. Laissez-moi vous raconter cette aventure. diff --git a/_posts/devlog/2021-07-17-compute-normals.markdown b/_posts/devlog/2021-07-17-compute-normals.markdown index 206dc89..4135a52 100644 --- a/_posts/devlog/2021-07-17-compute-normals.markdown +++ b/_posts/devlog/2021-07-17-compute-normals.markdown @@ -3,6 +3,7 @@ layout: post title: "Calculer les normales pour l'éclairage" date: 2021-07-17 18:47:00 +0100 categories: devlog +lang: fr --- Récemment, je me suis penché sur la question de l'éclairage pour mon moteur de rendu. Qui dit éclairage, dit forcément normales. Calculer des normales en soi n'est pas compliqués, mais selon la méthode de calcul, on se retrouve avec des résultats très différents. Dans un monde parfait, les normales sont fournies par l'artiste à l'origine du modèle 3D. Après tout, il est le seul à savoir comment sa création réagit à la lumière. En revanche, dans le cas d'une création procédurale, c'est un peu plus compliqué. diff --git a/_posts/devlog/2022-06-03-dear-imgui-moteur-maison.markdown b/_posts/devlog/2022-06-03-dear-imgui-moteur-maison.markdown index f57bb52..4c7dc76 100644 --- a/_posts/devlog/2022-06-03-dear-imgui-moteur-maison.markdown +++ b/_posts/devlog/2022-06-03-dear-imgui-moteur-maison.markdown @@ -3,6 +3,7 @@ layout: post title: "Intégrer Dear ImGui dans un moteur de rendu" date: 2022-06-03 12:00:00 +0100 categories: devlog +lang: fr --- Dernièrement, j'étais coincé sur un problème de fuite de mémoire. Le cauchemar de tous les développeurs C++. Je me suis vite rendu compte que quand même, ça serait plus simple si j'avais une interface graphique dans mon jeu. Le souci, c'est qu'intégrer une interface, c'est beaucoup de travail. Je devrais démarrer un chantier juste pour trouver cette fuite de mémoire. Non ! Il y a forcement plus simple. Ce plus simple, c'est Dear ImGui. diff --git a/_posts/devlog/2025-03-26-le-futur-de-la-programmation.md b/_posts/devlog/2025-03-26-le-futur-de-la-programmation.md index f42208f..b6a79ff 100644 --- a/_posts/devlog/2025-03-26-le-futur-de-la-programmation.md +++ b/_posts/devlog/2025-03-26-le-futur-de-la-programmation.md @@ -4,6 +4,7 @@ title: Le futur de la programmation système date: 2025-03-28 12:00:00 +0100 banner: /assets/img/2025-03/the_futur_of_programming.png categories: devlog +lang: fr --- On entend beaucoup parler de Rust ces derniers temps, notamment grâce aux controverses sur son intégration dans le noyau Linux. diff --git a/_posts/porfolio/2022-06-26-r3dengine.md b/_posts/porfolio/2022-06-26-r3dengine-en.md similarity index 99% rename from _posts/porfolio/2022-06-26-r3dengine.md rename to _posts/porfolio/2022-06-26-r3dengine-en.md index 56081db..b0748f0 100644 --- a/_posts/porfolio/2022-06-26-r3dengine.md +++ b/_posts/porfolio/2022-06-26-r3dengine-en.md @@ -5,6 +5,7 @@ date: 2022-06-26 12:00:00 +0100 categories: porfolio banner: /assets/img/2022-06/r3d_voxel_wireframe.png label: R3D Engine +lang: fr --- R3D Engine est un moteur de rendu 3D développé en C++ et basé sur l’API Vulkan. diff --git a/_posts/porfolio/2022-06-26-r3dengine-fr.md b/_posts/porfolio/2022-06-26-r3dengine-fr.md new file mode 100644 index 0000000..b0748f0 --- /dev/null +++ b/_posts/porfolio/2022-06-26-r3dengine-fr.md @@ -0,0 +1,72 @@ +--- +layout: post +title: R3D Engine +date: 2022-06-26 12:00:00 +0100 +categories: porfolio +banner: /assets/img/2022-06/r3d_voxel_wireframe.png +label: R3D Engine +lang: fr +--- + +R3D Engine est un moteur de rendu 3D développé en C++ et basé sur l’API Vulkan. +Ce projet me permet d’explorer l’infographie de bas niveau tout en perfectionnant mes compétences en architecture logicielle. + + + +Le projet est né de ma curiosité grandissante pour le monde du bas niveau et les jeux vidéo, notamment Minecraft. +Je me suis naturellement orienté vers le C++, mon langage de prédilection. +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 😄). + +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. +À cela s’ajoute *Dear ImGui*, qui fournit une interface utilisateur intégrée au moteur. +Enfin, j’utilise *GLM* pour tout ce qui concerne les calculs matriciels et vectoriels (essentiel dans un moteur 3D 🤓). + +## Fonctionnalités actuelles + +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*. +Il prend en charge les trois types d’éclairage les plus couramment utilisés dans les jeux vidéo : +- Éclairage directionnel +- Éclairage ambiant +- Points lumineux + +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). +C’est en répondant aux besoins de ce prototype que j’améliore continuellement le moteur en y intégrant de nouvelles optimisations. + +## Le parcours du combattant + +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 😢. +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. + +## Système de build + +Au départ, je compilais le projet avec Visual Studio (un grand classique, me direz-vous). +Mais en découvrant [xmake](xmake-link), j’ai décidé d’adopter cet utilitaire, qui offre plusieurs avantages non négligeables. + +Le système de build repose sur Lua, ce qui permet d’éviter les complexités de *CMake* ou de *MSBuild* (encore pire 😅). +De plus, [xmake](xmake-link) prend en charge la plupart des gestionnaires de paquets C++ (vcpkg, meson, etc.). + +## Découvrez mon projet + +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. + +- [Créer un moteur de rendu 3D](/devlog/2021/05/09/creer-un-moteur-de-rendu.html) +- [Calculer les normales pour l'éclairage](/devlog/2021/07/17/compute-normals.html) +- [Intégrer Dear ImGui dans un moteur de rendu](/devlog/2022/06/03/dear-imgui-moteur-maison.html) + +Vous pouvez également voir une démonstration du moteur ! +Cela se passe sur ma chaîne YouTube 📹. + +- [vulkan directional lighting](https://youtu.be/abdZcInc1OI) +- [Voxel engine terrain generation and optimization](https://youtu.be/pQtwTTGwCJA) + +### Screenshots + +![Exemple 1](/assets/img/2022-06/moving_light_02.png) +*Exemple de gestion de la lumière dans R3D Engine* + +![R3D Voxel](/assets/img/2022-06/r3d_voxel.png) +*R3D Voxel dans toute sa splendeur* + +[xmake-link]: https://xmake.io/ diff --git a/about.markdown b/about.markdown index 469db3f..880a47e 100644 --- a/about.markdown +++ b/about.markdown @@ -3,6 +3,7 @@ layout: page title: À propos permalink: /about/ excerpt: Vivre c'est voyager. Voyager vers une destination inconnue dans un monde qui regorge d'histoires et de rêves. Avoir bien vécu, c'est avoir une histoire à raconter, une leçon à enseigner, un héritage à transmettre. J'aime apprendre, comprendre et explorer. C'est mon voyage que je vous laisse découvrir si vous le souhaitez. +lang: fr --- Vivre c'est voyager. Voyager vers une destination inconnue dans un monde qui regorge d'histoires et de rêves. Avoir bien vécu, c'est avoir une histoire à raconter, une leçon à enseigner, un héritage à transmettre. J'aime apprendre, comprendre et explorer. C'est mon voyage que je vous laisse découvrir si vous le souhaitez. diff --git a/devlog.markdown b/devlog.markdown index a0aa42b..1abb914 100644 --- a/devlog.markdown +++ b/devlog.markdown @@ -3,4 +3,5 @@ layout: archive permalink: /devlog title: Devlog filter: devlog +lang: fr --- diff --git a/index.markdown b/index.markdown index b8f068e..5abf9f6 100644 --- a/index.markdown +++ b/index.markdown @@ -5,4 +5,5 @@ layout: home banner: /assets/img/thomas-stoop-thomasstoop-stroll.jpg label: Bienvenue +lang: fr --- diff --git a/porfolio.markdown b/porfolio.markdown index a3f178c..70edb4e 100644 --- a/porfolio.markdown +++ b/porfolio.markdown @@ -3,4 +3,5 @@ layout: archive permalink: /porfolio title: Porfolio filter: porfolio +lang: fr --- \ No newline at end of file