Skip to content

NoSW/Axe

Repository files navigation

Axe

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

Platform Compiler Graphics API
Windows Clang>=15, MSVC>=17(2022) Vulkan>=1.3, Direct3D 12
Linux Clang>=15, GCC>=11 Vulkan>=1.3

Requirements

How to build

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.

Features

Game Engine Architecture

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
    • (WIP) High performance math library for graphics based on glm
    • (WIP) High performance memory management base on mimalloc
    • (WIP) Cross-platform logging system based on spdlog
    • (WIP) Cross-platform windows management based on SDL
    • (WIP) Reflection of C++ based on ...
  • 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
  • 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.

Dependencies

See Documents/ThirdParty.md for more details.

License

MIT License

About

a game engine for learning

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages