Vulkan Real-Time Renderer


PBR Materials

Mirror Reflections

Frustum Culling



Math Animated Grid (Ripple)
Overview
A custom real-time renderer written in C++ using the Vulkan API, built as an exploratory project to understand how modern rendering pipelines operate beneath game engines.
As a technical artist, I'm particularly interested in the intersection between visual systems, GPU performance, and tool creation. Building a renderer from scratch allows me to experiment directly with shading models, GPU pipelines, and rendering architecture.
The renderer continues to evolve as a graphics experimentation sandbox where I prototype rendering techniques and explore GPU-driven workflows.
Renderer Architecture
The renderer is structured around modular rendering pipelines and explicit GPU resource management.
Scene System
- Scene loading and mesh management
- Transform hierarchy for object relationships
- Keyframe transform animation support
Rendering Pipelines
- Lambertian pipeline
- PBR pipeline
- Mirror / reflection pipeline
GPU Resource Management
- Descriptor sets
- Uniform buffers
- Storage buffers
- Texture and cubemap resources
Compute Systems
- BRDF LUT generation
- Cubemap preprocessing
- Mipmap generation
Physically Based Rendering (PBR)
The renderer includes a physically based shading pipeline implementing a modern real-time BRDF model.
- •Environment reflections via cubemap sampling
- •Normal mapping with tangent-space calculations
- •Roughness and metallic workflows
- •BRDF lookup textures for efficient calculations
The PBR implementation follows commonly used real-time techniques inspired by research from Epic Games and Disney's PBR model.
Scene Traversal and Culling
To maintain real-time performance, the renderer uses spatial acceleration structures for scene traversal:
- •AABB (Axis-Aligned Bounding Boxes)
- •OBB (Oriented Bounding Boxes)
- •BVH hierarchy for efficient object rejection
The BVH structure allows the renderer to quickly reject objects that are not visible before issuing draw calls, significantly reducing unnecessary GPU work and helping maintain stable performance above 60 FPS.
Work In Progress
The renderer is actively evolving. Planned features include: