A Vulkan-based 3D rendering engine built with C++20
Salamander is a 3D rendering engine built with Vulkan using C++20. Developed as a university project for the Graphics Programming 2 course at Howest University, it demonstrates the capabilities of the Vulkan framework while adhering to modern design practices.
Deferred rendering pipeline with HDR and tone mapping for realistic lighting.
Directional and omni lights with shadow mapping and Image-Based Lighting (IBL).
Double buffering, depth prepass, and mipmap generation for improved performance.

The engine features automatic exposure adjustment that dynamically adapts to scene brightness, simulating how a real camera or the human eye responds to changing light conditions.
Development of Salamander started in February 2025 as a part of university course called Graphics Programming 2. It thought me a lot about how modern graphics APIs work and what it takes to render simple triangle on the GPU, as well as graphics techniques commonly used in rendering nowadays, such as HDR/tone mapping, IBL, shadow mapping. Later on I started expanding project myself. Proper refactoring, new graphics features as automatic camera exposure and etc.
Despite these challenges, Salamander became not only a lesson to me, but a modern rendering platform, that will be expanded and maybe released one day.
Efficient resource management
Flexible pipeline creation
GPU addresses for efficient geometry
Complex lighting scenarios
Complex material support
Improved texture quality
Realistic light adaptation