Back to Projects

Vulkan Real-Time Renderer

VulkanC++GLSL / SPIR-VPBR
Vulkan Real-Time Renderer - PBR Materials Showcase
PBR materials with varying roughness

PBR Materials

Mirror reflections with environment mapping

Mirror Reflections

Frustum culling visualization

Frustum Culling

Instanced rendering wave visualization
Massive instanced grid rendering
Math animated grid ripple

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:

Dynamic lighting systemsGPU particle systemsSimulation systemsSkeletal skinningAdditional shading modelsAdvanced post-processing

Technologies

C++Vulkan APIGLSL / SPIR-VCompute ShadersPhysically Based Rendering