A Vulkan renderer I use to learn how to program (graphically).
This project is a rewrite of my older Vulkan project, vulkaning, which I wrote in Rust. The reason for this rewrite is it allows me to directly take advantage of C++'s larger software ecosystem.
- Basic rendering pipeline
- Basic material system
- Depth testing
- Loading and rendering 3D models
- Camera controls (arcball)
- Cubemapped skybox
- Frustum culling
- Mipmapping
- Multisample anti-aliasing (MSAA)
- Metallic-roughness workflow
- Specular-glossiness workflow
- Image-based lighting (IBL)
- Albedo mapping
- Normal mapping
- Ambient Occlusion (AO) mapping
- Emission mapping
- Shadow mapping
- Height/displacement mapping
- PBR material inspector
- Profiling stats
- GPU buffer visualizer
- Skeletal animation
Requirements:
- CMake 3.28 or later
- C++20 compiler
- Vulkan 1.3 or later
- Make for building and running the project
git clone --recurse-submodules https://github.com/kowoa/kovra.git
cd kovra
make run