Coder Social home page Coder Social logo

axe's Introduction

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

axe's People

Contributors

nosw avatar

Stargazers

Yifan Tan avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.