A 3D rendering engine and game testbed written in C++ supporting OpenGL 4.6, Vulkan, and DirectX 11 (Windows).
- Modern OpenGL 4.6 Renderer: Uses shaders, VAOs, and modern pipeline practices.
- Directional Lighting: Configurable ambient, diffuse, and directional lighting.
- Data-Driven Levels: Levels are loaded from JSON files (
levels/main.level.json). - Model Support: Loads
.gltf/.glband.objmodels. - Entity Component System (ECS): Uses
enttfor efficient entity management. - Physics: Basic AABB collision and gravity.
- Input System: Abstracted input handling supporting keyboard and mouse.
This project uses Sighmake for build configuration.
- Visual Studio 2022 (MSVC)
- Sighmake (included or in path)
- Vulkan SDK
- GCC/Clang
- Sighmake
- Vulkan SDK - Install with:
sudo rm /etc/apt/sources.list.d/lunarg-vulkan-focal.list wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-noble.list https://packages.lunarg.com/vulkan/lunarg-vulkan-noble.list sudo apt update sudo apt install vulkan-sdk
- Run
Generate SLN.batto generate the Visual Studio Solution. - Open the solution in Visual Studio.
- Build and Run (Release x64 recommended).
- Run
./sighmake project.buildscriptto generate build files. - Run
maketo build. - Run
./run_vulkan.shto launch.
Levels are defined in JSON format. Example configuration for lighting:
"lighting": {
"ambient": { "r": 0.2, "g": 0.2, "b": 0.2 },
"diffuse": { "r": 0.8, "g": 0.8, "b": 0.8 },
"direction": { "x": 0.0, "y": -1.0, "z": -0.5 }
}| Component | Function |
|---|---|
| Engine/ | Core engine code (Graphics, Input, Physics, ECS). |
| Game/ | Game-specific logic and entry point. |
| assets/ | Shaders (.vert, .frag) and other raw assets. |
| levels/ | JSON level definitions. |
| models/ | 3D models and textures. |
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
