πΈ Flora Engine
Work In ProgressMoteur de gΓ©nΓ©ration procΓ©durale de mondes en voxels
Contexte & ProblΓ©matique
Passionné par les jeux comme Minecraft et les systèmes de génération procédurale, j'ai voulu comprendre comment créer des mondes cohérents à partir d'algorithmes.
Journal de dΓ©veloppement
# Chronologie du développement, des premiers tests aux dernières avancées
Apprentissage de OpenGL
CrΓ©ation du projet .NET, configuration de Silk.NET pour les bindings OpenGL. Premiers tests : afficher un quad (rectangle) colorΓ© Γ l'Γ©cran.
Le fameux "Hello World" du rendu 3D avec Silk.NET
Le pipeline OpenGL de base : shaders, VAO, VBO, et pourquoi tout Γ§a est nΓ©cessaire.
Premiers cubes
"Implémentation" de la 3D et d'une caméra pouvant se déplacer et explorer la scène.
Premiers cubes
Vue wireframe des cubes
L'utilisation de matrices pour la transformation de la 3D Γ un rendu 2D.
Ajout de relief avec la fonction sinus
GΓ©nΓ©ration d'un chunk de terrain avec l'utilisation de la fonction sinus pour le relief.
Chunk avec son terrain
ModΓ©lisation du terrain sur DESMOS
Bruit de perlin et occlusion ambiante
Utilisation de bruit de perlin pour la génération et première tentative d'ajout d'effets de lumière sur le terrain (spoiler : ça ne sera pas la seule).
Rendu du terrain avec l'utilisation de bruit de perlin (Projet Lizard est l'ancien nom de Flora).
Utilisation de bruit de perlin, meshing dit "naΓ―f", occlusion ambiante.
Meshing et frustum
Amélioration du système de rendu en implémentant du greedy meshing et du frustum culling (Les images sont sans occlusion ambiante).
Culled meshing (naΓ―f) : 130k triangles (avec frustum).
Greedy meshing : 58k triangles (avec frustum aussi), soit moitiΓ© moins.
Algorithme de greedy meshing, frustum culling.
Ajouts de d'autres blocs
CrΓ©ation d'un atlas de texture et ajout de plusieurs types de blocs diffΓ©rents (donc texture diffΓ©rentes).
Terrain avec des textures prises depuis un pack Minecraft (ne sont pas sur le GitHub Γ cause des licences).
Terrain avec les texture de dΓ©veloppement (celles sur le GitHub).
Galerie
Grand rendu du terrain pour voir le nouveau gΓ©nΓ©rateur (Flora utilise le mΓͺme, mais les textures sont diffΓ©rentes).
Sphere pour tester l'occlusion ambiante et le meshing.
Rendu des normals (calcul de lumière).
Rendu des UVs (calcul des textures) en culled meshing.
Stack technique
Langage & Runtime
C# 12β Langage principal.NET 8β Runtime cross-platform
Graphismes
Silk.NETβ Bindings OpenGLOpenGLβ API de renduGLSLβ Shaders
Algorithmes
Simplex Noiseβ GΓ©nΓ©ration de terrainGreedy Meshingβ Optimisation
Prochaines Γ©tapes (pas d'ordre)
Hall of Shame
# Les bugs les plus mΓ©morables
Sympa le terrain
Le monde en bleu
Textures? Jamais entendu parler