Vulkan API learning repository.
Within this repository aditional libaries are used:
- GLFW - window and input handling.
- GLM - C++ mathematics library for graphics software.
- tinyobjectloader - Loading models from *.obj files.
- stb image - Loading images to be used as textures.
Project which follows "Vulkan Tutorial" by Alexander Overvoorde available on vulkan-tutorial website and github repository.
Main topics covered in tutorial:
- Instance and physical device selection
- Validation Layers
- Logical device and queue families
- Swap chains
- Shader Modules
- Fixed functions and render passes
- Descriptor pool and sets
- Command buffers
- Image view and sampler
- Depth buffering
Calculating shadows based on 'Vulkan_Tutorial' project and Mr. Sascha Willems "Vulkan-Example" repository available here.
Shadow creation is divided into two render passes:
- First one- 'offscreen' render pass is used to calculate depth map from light's point of view (ortographic projection to simulate sunlight). Calculated depth map is stored into texture and used in second render pass.
- Second one- 'scene' render pass uses depth texture to determine if specified fragment is placed within or not in shadow.
Logic of shadow mapping technique is well described in learningopengl.com website and opengl-tutorial.org
Camera movement:
- W/A/S/D keys to move camera forward/left/backward/right.
- Mouse to rotate camera around.
Prepared build: Visual Studio [Debug|Release] x86