Axe is a cross multi-platform game engine(a slowly-developed weekend project, not for production), aiming at code readability and learning:
- c++11/17/20, OOP, STL, template, multi-threading, reflection, CMake cross-platform(Windows, Linux, ...)
- underlying details about modern graphics apis (Vulkan, D3D12) and shader language: hlsl, glsl
- software architecture of modern game engine (abstraction, layering, compile/edit/runtime/loop -time designs)
- various graphics features: forward, deferred pipeline, shadow, GI, ...
- ...
Learn by coding!
Platform | Compiler | Graphics API |
---|---|---|
Windows | Clang>=15, MSVC>=17(2022) | Vulkan>=1.3, Direct3D 12 |
Linux | Clang>=15, GCC>=11 | Vulkan>=1.3 |
- CMake>=3.20
- Python>=3.9
- VulkanSDK>=1.3 (start on linux, start on windows)
- Windows 10/11 SDK containing Direct3D 12 if on Windows
run the python script that wraps cmake&build commands: (NOTE: cmake
added to PATH is required)
# Use --[msvc(default)|clang|gcc] to specify an available compiler, e.g.,
> python3 generate_project.py --clang
> python3 generate_project.py --gcc
> python3 generate_project.py --msvc # VS2022 is required
Axe still uses #include style, instead of c++20 module :(. See "When can we begin to use modules?" for more details.
Axe is basically designed according to the architecture shown right. Thanks to the powerful standard libraries, and lots of high-quality open source third-party libraries, it can be built directly from the core layer. Runtime of Axe has # well-designed layers of one-way dependency:
- 00Core
- 02Rhi(Rendering Hardware Interface)
- (WIP) wrap multi modern rendering apis with WebGPU style, supporting D3D12, Vulkan
- (WIP) Dynamic Descriptor Management.
- (WIP) Memory Management based on VulkanMemoryAllocation.
- (WIP) Multi-threaded Command Buffer Generation
- 03Resource
- (WIP) Multi-threaded and asynchronous resource loading
- (WIP) Cross-compile Shader based on DirectXShaderCompiler, glslang/shaderc and SPIRV-Cross.
- (WIP) Universal scene description based on USD of pixar
- (WIP) Universal material description based on MaterialX
- 04RenderGraph
- 06Pipeline
- (WIP) Modern deferred rendering pipeline based on visibility buffer
- (WIP) Global Illumination system with an unlimited number of light sources and minimal memory footprint
- (WIP) Integrated with shadertoy seamlessly
- 08System
- (WIP) Animation System based on ...
- (WIP) Physics System based on ...
- (WIP) ECS(Entity-Component-System) base on entt
- (WIP) GUI system based on Dear imgui
- 10Scene
- (WIP) Partitioning, Culling ...
- 12GamePlay
- (WIP) Lua Scripting System based on ...
- (WIP) Camera ...
- 14App
- .
See Documents/Runtime.md and Documents/AssetSystem.md for more details.
See Documents/ThirdParty.md for more details.
MIT License