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.

Download Report

Source Code

You can check out my code here.

Github Link
Previous
Previous

Bububububbles - Unity 2D & 3D Game

Next
Next

Swift and Metal Crowd Simulation: Citopia