This is my implementation of a Vulkan Renderer.
It's all in a monolithic structure due to the fact that Vulkan is a C API and it's easier for learning purposes. I will work on an absracted verison in the future when I'm more comfortable with the vulkan spec and concepts.
Many thanks to vulkan-tutorial.com.
These are some clips taken of the my renderer for a few different models.
cyber-room-example.mp4
fantasy-inn.mp4
viking-room.mp4
If you'd like to run this on your machine (Windows and MacOS tested).
- Download and install the VulkanSDK
- Clone repo and all submodules
- The build system uses CMake, so open the project in any CMake compatible IDE's (Visual Studio/CLion) or use cmake to generate the project structure relevant to you (Refer to CMake documentation).
- Just build and run. For best performance remember to build in release mode.
- To change the example render model/texture. Change comments for the following lines:
// Cyber Room
const std::string MODEL_PATH = "../models/cyber_room.obj";
const std::string TEXTURE_PATH = "../textures/cyber_room.png";
// Fantasy Inn
//const std::string MODEL_PATH = "../models/fantasy_game_inn.obj";
//const std::string TEXTURE_PATH = "../textures/fantasy_game_inn.png";
// Viking Room
//const std::string MODEL_PATH = "../models/viking_room.obj";
//const std::string TEXTURE_PATH = "../textures/viking_room.png";
- Object-Oriented Abstraction -> Link to branch
- Mipmap Generation
- Multisampling
All these amazing models and textures aren't created by me. You can find the sources and creators with the following links: