Real-time Renderer

A Vulkan Renderer with Modern Features

Individual Project

|

01.2026 - 04.2026

Project Brief

Vulkan Real-Time Renderer is a graphics programming project developed through Carnegie Mellon University’s 15-472 Real-Time Graphics course. Students build upon a basic Vulkan framework and implement several graphics features and carry out tests.

Throughout the project, I implemented scene viewing and animation systems, PBR materials, environment lighting, tone mapping, multiple light types, shadow rendering, deferred shading, SSAO, and SSDO. I also created custom Blender scenes and performance test cases to evaluate the visual quality and efficiency of different rendering approaches. By the final stage, the project had evolved from a simple scene viewer into a compact rendering engine covering most of the core systems behind modern real-time graphics.

Project Info

Context: Individual Project

Category: Computer Graphics Software

Tools Used: Vulkan API, C++

My Role: System programming, graphics feature programming

——— Project Development ———

A1 — Building a Scene Viewer

In the first stage of the project, I built the foundation of my Vulkan renderer: a scene viewer capable of loading and displaying complete 3D scenes. I added interactive cameras, scene cameras, animation playback, object culling, debugging views, and basic performance profiling.


A2 — Materials and PBR Rendering

For the second stage, I focused on making the renderer produce much richer and more realistic-looking images. I added environment lighting, reflective materials, physically based materials, HDR rendering, exposure controls, and multiple tone-mapping options.


A3 — Lighting and Shadows

The third stage focused on lighting and shadows. I expanded the renderer to support different types of lights and made them work with both simple and physically based materials. I then added dynamic shadows and experimented with softer shadow techniques to make lighting feel more natural.


Final — Deferred Rendering, SSAO & SSDO

For the final stage, I rebuilt the lighting pipeline around deferred rendering, allowing the renderer to handle complex scenes with many lights more efficiently. I compared it directly against my previous forward-rendering approach and tested how the two systems behaved under heavier lighting workloads.

I then added screen-space ambient occlusion to improve contact shadows and depth perception, followed by SSDO, which goes one step further by approximating indirect lighting and allowing nearby colored surfaces to influence each other.

By the end of the project, the renderer had grown from a simple scene viewer into a complete real-time graphics project covering scenes, animation, materials, lighting, shadows, performance optimization, and screen-space rendering effects.

——— The End ———

Create a free website with Framer, the website builder loved by startups, designers and agencies.