Vulkan Hair Cards Rendering Engine
As someone fascinated by real-time graphics, I wanted to challenge myself beyond tutorials and existing engines—so I set out to build a custom Vulkan framework entirely from scratch. This personal project became a hands-on deep dive into modern rendering: from low-level swap-chain management and synchronization primitives to descriptor-set handling, I learned what it takes to build a graphics pipeline from the ground up.
Along the way, I explored advanced techniques like Weighted-Blended Order-Independent Transparency (WBOIT) to achieve smooth, realistic translucency without the overhead of per-pixel linked lists. I implemented a Physically-Based Rendering (PBR) shader to light opaque geometry with energy-conserving BRDFs, and experimented with Kajiya-Kay-Marschner hair shading for real-time, anisotropic lighting on hair strands—bringing a level of detail usually reserved for production engines. To make testing and iteration easier, I built an ImGui-driven user interface for toggling transparency and quickly visualizing rendering changes.
Front View
Side View
Top View
Project Report
For more details, check out my project report here.
Source Code
You can check out my code here.