This project is a simple Vulkan-based renderer that displays rotating 3D cubes with different visual effects. It demonstrates core Vulkan concepts such as pipeline setup, texture mapping, and transformation matrices.
The application renders:
- A textured cube with a repeating fractal pattern
- A distorted/reflection cube showing transformed environment mapping
- Vulkan graphics pipeline setup
- Vertex + fragment shaders
- Texture mapping
- Uniform buffers for transformations
- 3D cube rendering
- Multiple objects in a single scene
- Basic camera/view transformations
my-vulkan-project/
├─ src/ # Source code (main Vulkan logic)
├─ shaders/ # GLSL shaders (vertex & fragment)
├─ assets/ # Textures and resources
├─ CMakeLists.txt # Build configuration
├─ README.md # Project documentation
└─ .gitignore
Make sure you have the following installed:
- Vulkan SDK (LunarG)
- CMake (>= 3.16)
- C++ compiler (GCC / Clang / MSVC)
- GPU with Vulkan support
- Graphics drivers up to date
git clone https://github.com/YOUR_USERNAME/YOUR_REPO.git
cd YOUR_REPO(Customize this if you have controls implemented)
ESC— ExitMouse / Keys— Camera movement (if implemented)
The program initializes:
- Vulkan instance
- Physical & logical device
- Swapchain
- Render pass
- Graphics pipeline
A cube is defined using:
- Vertex buffer (positions, UVs)
- Index buffer
- Vertex shader handles transformations (model, view, projection)
- Fragment shader applies textures and visual effects
Images are loaded into GPU memory and sampled in the fragment shader.
Each cube uses transformation matrices:
- Rotation
- Translation
- Projection
This project is useful for understanding:
- Vulkan pipeline architecture
- Descriptor sets and uniform buffers
- GPU memory management
- Rendering multiple objects
- Shader-based effects
- Add camera movement (FPS-style)
- Implement lighting (Phong / PBR)
- Load 3D models (OBJ/GLTF)
- Add ImGui UI
- Improve shader effects
This project is open source. Add a license here if needed (e.g., MIT).
- Vulkan SDK (LunarG)
- Khronos Vulkan documentation
- Vulkan Tutorial (https://vulkan-tutorial.com)