Flex Engine est un moteur de jeu personnel sur lequel j'ai commencé à travailler au début de 2017. Je l'utilise comme aire de jeux pour en savoir plus sur les techniques de rendu et de simulation en temps réel. Flex Engine n'est pas un moteur de jeu commercial et il n'est pas destiné à un usage public.
Flex de construction
Voir build.md
Caractéristiques notables
- Backend de rendu Vulkan (VulkanRenderer.CPP)
- Compilateur / éditeur de langage de script dans le jeu et machine virtuelle (virtualmachine.cpp)
- Recompilation de shader basée sur la somme de contrôle conditionnelle (shadercompiler.cpp)
- Surveillance de la modification des fichiers pour les textures, maillages, préfabs, shaders, fichiers de configuration, etc. (ResourceManager.cpp)
- Éditeur de scène avec sérialisation (basescene.cpp)
- Outils d'éditeur (Transform Gizmo, éditeur de propriétés, éditeur de KeyBinding, etc.) (éditorial.cpp)
- Outils de capture / inspection de profilage de base
- Prise en charge de Windows & Linux
- Rendu:
- Cubes de marche générateur de terrain et rendu
- Gerstner Wave Ocean Renderer
- Lumières de zone rectangulaire (diffuse directe uniquement et spéculaire)
- Modèle d'ombrage basé sur physique
- Éclairage basé sur l'image
- Occlusion ambiante de l'espace d'écran
- Cartographie de l'ombre en cascade stable
- Anti-aliasing temporel
- Génération et rendu de la génération et rendu de police du champ de distance signé (SDF)
- Simulation de particules à base de GPU
Terrain procédural généré sur le GPU
Simulation de l'océan Gerstner Wave
Cartographie de l'ombre en cascade
Deux millions de particules ont simulé et rendu entièrement sur le GPU
La superposition du profileur montrant une panne
Quelques fenêtres de l'éditeur
Occlusion ambiante de l'espace d'écran (SSAO)
Gbuffer (haut-gauche à inférieur droit): position, albédo, normal, image finale, profondeur, métallique, AO, rugosité
Voir dans l'éditeur


Voir plus de captures d'écran ici
Dépendances
Flex Engine utilise les bibliothèques open source suivantes:
- Bullet - Détection de collision et simulation corporelle rigide
- Freetype - chargement de police
- GLFW - Création de fenêtres, manipulation des entrées
- GLM - Opérations mathématiques
- IMGUI - Interface utilisateur
- Openal - Chargement audio et lecture
- STB - Chargement d'image
- CGLTF - Chargement du maillage
- Volk - Meta-chargeur Vulkan
Licence
Flex Engine est autorisé sous la licence MIT. Voir Licence.MD pour plus de détails.
Remerciements
Un énorme merci à vous remettre aux individus et organisations suivants pour leurs ressources incroyablement utiles:
- Baldur Karlsson de github.com/baldurk/renderdoc
- Alexander Overvoorde de Vulkan-Tutorial.com
- Sascha Willems de github.com/saschawillems/vulkan
- Joey de Vries de LearnOpengl.com
- Andrew Maximov pour le modèle de pistolet et les textures artisaverb.info/pbt.html
- Freepbr.com pour les textures PBR de haute qualité
- Tous les auteurs et contributeurs aux bibliothèques open source mentionnées ci-dessus
Bloguer
Restez (un peu) à jour sur ce projet sur mon blog sur ajweeks.com/blog