felipeagc / motor

Vulkan game engine in C99

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Motor

Github actions

Motor is a vulkan game engine implemented in C99.

No screenshots yet, because there's nothing to show.

Implemented features

  • Abstract rendering API (possibility to support multiple graphics APIs through a single interface)
  • Custom config file format
  • Flexible control over memory allocation
  • On the fly GLSL compilation (through shaderc)
  • Asset hot-reloading
  • GLTF Model loading
  • IBL cubemap generation
  • PBR
  • Normal mapping

Rendering API

The engine uses an rendering API described in renderer.h. It abstracts vulkan details such as descriptor set allocation, pipeline creation, scratch buffer allocation.

The vulkan implementation of the API is located here. The API is implemented in only 2 .c files (excluding the libraries it uses). Those .c files include the .inl files, which are just a way to separate the implementation of specific systems into their own files.

It should be pretty simple to see how things are done, the renderer is pretty self-contained, except for the use of data structures like MtHashMap and the dynamic arrays in array.h.

About

Vulkan game engine in C99


Languages

Language:C 70.7%Language:C++ 28.6%Language:HLSL 0.5%Language:Meson 0.1%