O Flex Engine é um mecanismo de jogo pessoal em que comecei a trabalhar no início de 2017. Eu o uso como um playground para aprender sobre técnicas de renderização e simulação em tempo real. O Flex Engine não é um motor de jogo comercial nem se destina a uso público.
Flex de construção
Consulte Build.md
Recursos notáveis
- Back -end de renderização vulkan (vulkanrenderer.cpp)
- Compilador/editor de idiomas de script no jogo e máquina virtual (virtualmachine.cpp)
- Recompilação de shader baseada em verificação condicional (shadercompiler.cpp)
- Monitoramento de modificação de arquivos para texturas, malhas, prefabs, shaders, arquivos de configuração etc. (ResourceManager.cpp)
- Editor de cena com serialização (BASESCENE.CPP)
- Editor Ferramentas (Transform Gizmo, editor de propriedades, editor de keybinding, etc.) (editor.cpp)
- Ferramentas básicas de captura/inspeção de criação de perfil
- Suporte para Windows & Linux
- Renderização:
- Gereador e renderizador de terreno de cubos em marcha
- Renderizador de Oceano de Wave Gerstner
- Luzes de área retangular (apenas difusas e especulares somente direta)
- Modelo de sombreamento baseado em fisicamente
- Iluminação baseada em imagem
- Oclusão ambiente em espaço de tela
- Mapeamento de sombra em cascata estável
- Anti-aliasing temporal
- A geração e renderização de fontes de campo de distância assinada (SDF)
- Simulação de partículas baseada em GPU
Terreno processual gerado na GPU
Simulação Ocean Gerstner Wave
Mapeamento de sombras em cascata
Dois milhões de partículas simuladas e renderizadas inteiramente na GPU
Sobreposição do perfil mostrando um colapso no tempo da CPU de um único quadro
Algumas janelas do editor
Oclusão ambiente em espaço de tela (SSAO)
Gbuffer (superior esquerdo ao canto inferior direito): posição, albedo, normal, imagem final, profundidade, metálica, AO, rugosidade
Vista no editor


Veja mais capturas de tela aqui
Dependências
O Flex Engine usa as seguintes bibliotecas de código aberto:
- Bullet - Detecção de colisão e simulação corporal rígida
- Freetype - Carregamento de fontes
- GLFW - criação de janelas, manuseio de entrada
- GLM - operações matemáticas
- Imgui - Interface do usuário
- Open - carregamento de áudio e reprodução
- STB - Carregamento de imagem
- CGLTF - Carregamento de malha
- Volk - META -LOUGADOR VULKAN
Licença
O Flex Engine é licenciado sob a licença do MIT. Consulte License.md para obter detalhes.
Agradecimentos
Um enorme agradecimento deve ser dado aos seguintes indivíduos e organizações por seus recursos incrivelmente úteis:
- 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 o modelo de pistola e texturas artisaverb.info/pbt.html
- Freepbr.com para as texturas de PBR de alta qualidade
- Todos os autores e colaboradores das bibliotecas de código aberto mencionadas acima
Blog
Fique (um pouco) atualizado sobre este projeto no meu blog em Ajweeks.com/blog