[TOC]
A cross-platform Vulkan engine made for personal projects written completely in C. It's not a plug-and-play 3d engine, but a series of libraries and programs built to speed-up the creation of vulkan based applications and applications in general. The engine is on active development.
The engine is frequently being tested on Windows 11, Linux Mint (virtual machine and pc) with different compilers (MSVC
, gcc
), and hardware configurations (RX580 4GB GDDR5
, Radeon V Carrizo 500MB
).
- Python 3.9 is required to generate the project files
- It's better for me to stick with a few and simple examples:
triangle
andnoise
- Dismissed
flappy-circle
,application-sample
,serial-sample
- Texture examples to do
- Audio manipulation library to do (for gaia-universe-model soundtrack)
- ply export (to export gaia-universe-model data to something like blender)
- speed up shCopyBuffer, avoid mapping and unmapping memory every time
See the Related pages
for some basic documentation and tutorials. The engine collects many independent libraries, which are bound to their own documentation.
- By default double buffering.
- Depth buffer and multisample anti-aliasing support by default.
- Color and alpha blending optional support.
- Native scripting in C (see
Related pages
). - Immediate mode simple UI creation using
shgui
. - Timing features, ticks, and profiling.
- Serial communication with
shserial
. - Ply mesh loader using
plyimporter
. - Compute queues and pipelines (need to make an example).
- CMake project generation by running the
export-application.py
program (seeRelated pages
). - Serialization and parsing of
.smd
files (seeRelated pages
). - Vulkan API implementation using
shvulkan
. The responsibility of the developer stands on creating a pipeline building system and GPU calls. Command buffer synchronization for swapchain images and presentation is automatically handled by the engine.
Should you encounter any issues with the library and tools or wish to introduce new features, I welcome your contributions to the repository. You can contribute by either opening an issue or submitting a pull request.
Should you find value in the provided resources or have enjoyed using the project, your support in the form of a tip would be greatly appreciated. It goes a long way in sustaining and enhancing the development efforts. Thank you for considering!