Welcome to my showcase of projects from Oregon State University's Vulkan Graphics Programming course!
Important
Please refer to individual project directories for complete implementation details and all modified files.
Each project folder contains:
- Descriptions of my approach and implementation
- Images showcasing the rendered results
- All files that I added or edited
| Project | Description |
|---|---|
| Project 1️⃣ | Create Your Own 3D Object in Vulkan |
| Project 2️⃣ | Keytime Animation of an OBJ Object with Vulkan and GLM |
| Project 3️⃣ | Drawing Using an Index Buffer |
| Project 4️⃣ | Instancing |
| Project 5️⃣ | Push Constants for Robot Animation |
| Final Project | Vulkan Ray Tracing |
- Vulkan API
- SPIR-V Shaders
- VMA (Vulkan Memory Allocator)
- GLFW (Windowing)
- GLM (Mathematics Library)
- NVIDIA Ray Tracing Extensions (VK_KHR_ray_tracing)
- Low-level graphics API programming
- Vulkan rendering pipeline:
- Physical and logical device management
- Graphics pipeline data structures
- Command buffers and queues
- Swap chain and presentation
- Memory management:
- Data buffers and vertex buffers
- Descriptor sets and push constants
- VMA for efficient memory allocation
- Advanced rendering techniques:
- Instancing for efficient object rendering
- Texture mapping and sampling
- Multisampling and antialiasing
- Multipass rendering
- Shader development:
- SPIR-V shader compilation
- Vertex, fragment, and compute shaders
- Specialization constants
- Synchronization & optimization:
- Pipeline barriers and memory barriers
- Dynamic state variables
- Getting information back from GPU
- Ray tracing implementation:
- Acceleration structures (BLAS/TLAS)
- Ray tracing pipeline
- Ray generation, closest hit, and miss shaders
- NVIDIA VK_KHR_ray_tracing extensions
- Real-time animation:
- Keytime animation with GLM
- Dynamic transformations