Flex Engine es un motor de juego personal en el que comencé a trabajar a principios de 2017. Lo uso como patio de recreo para aprender sobre las técnicas de representación y simulación en tiempo real. Flex Engine no es un motor de juego comercial ni está destinado a uso público.
Edificio flexible
Ver build.md
Características notables
- Vulkan Rendering Backend (Vulkanrenderer.cpp)
- Compilador de lenguaje de secuencias de comandos en el juego/editor y máquina virtual (virtualMachine.cpp)
- Recompilación de sombreador basado en la suma de verificación condicional (shaderCompiler.cpp)
- Monitoreo de modificación de archivos para texturas, mallas, prefabricados, sombreadores, archivos de configuración, etc. (ResourceManager.cpp)
- Editor de escenas con serialización (BaseScene.cpp)
- Herramientas del editor (Transform Gizmo, Editor de propiedades, Editor de KeyBinding, etc.) (Editor.cpp)
- Herramientas básicas de captura/inspección de perfiles
- Soporte para Windows y Linux
- Representación:
- Marching Cubes Terrain Generator & Renderer
- Gerstner Wave Ocean Renderer
- Luces de área rectangulares (solo directo difuso y especular)
- Modelo de sombreado basado en físicos
- Iluminación basada en imágenes
- Oclusión ambiental del espacio-espacio
- Mapeo de sombras en cascada estable
- Anti-aliasing temporal
- Generación de fuentes de campo de distancia firmada (SDF)
- Simulación de partículas basada en GPU
Terreno de procedimiento generado en la GPU
Simulación del océano de Wave Gerstner
Mapeo de sombras en cascada
Dos millones de partículas simuladas y renderizadas por completo en la GPU
Profiler Overlay que muestra un desglose el tiempo de la CPU de un solo cuadro
Algunas ventanas del editor
Oclusión ambiental del espacio-espacio (SSAO)
GBUFFER (superior izquierda a abajo derecha): posición, albedo, normal, imagen final, profundidad, metálica, AO, aspereza
Ver al editor


Ver más capturas de pantalla aquí
Dependencias
Flex Engine utiliza las siguientes bibliotecas de código abierto:
- Bullet - Detección de colisión y simulación de cuerpo rígido
- Freetype - Carga de fuentes
- GLFW - Creación de ventanas, manejo de entrada
- GLM - Operaciones matemáticas
- IMGUI - Interfaz de usuario
- Openal - Carga de audio y reproducción
- STB - Carga de imágenes
- CGLTF - Carga de malla
- Volk - Vulkan Meta -Loader
Licencia
Flex Engine tiene licencia bajo la licencia MIT. Vea la licencia.md para más detalles.
Expresiones de gratitud
Se debe dar un gran agradecimiento a las siguientes personas y organizaciones por sus recursos increíblemente útiles:
- 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 para el modelo de pistola y texturas artisaverb.info/pbt.html
- Freepbr.com para las texturas PBR de alta calidad
- Todos los autores y colaboradores de las bibliotecas de código abierto mencionadas anteriormente
Blog
Permanecer (algo) al día sobre este proyecto en mi blog en AJWeeks.com/Blog