Vulkan Renderer - Convolution

Hobby

Implementing a multi-threaded renderer in Vulkan and researching new technologies. While learning Vulkan from scratch, I am also challenging myself with engine system implementation. Since this is a hobby project, code refactoring is done irregularly.

Build

Showcase Video

Development Document

Timeframe: Worked on irregularly

Used languages and libraries:

C++23, Vulkan, Tracy, Visual Studio, VS Code, Assimp, ImGUI

Features:

Ray Tracing (AO, reflections)

TAA, DLSS

Multi-threading (Main thread, RenderThread, Asynchronous CommandBuffer thread)

Bindless Textures

Dynamic Rendering, Timeline Semaphores

Screen Space Shadows

CSM

Clustered Shading (Work in progress)

GPU Driven Rendering

Depth Prepass

Deferred Shading

ECS, fast updates even with 100,000+ entities (Simple custom implementation)

Scene viewer, Scene system

Shader Hot Reloading

Unreal PBR

ACES, Uncharted, GT7 Tone Mapping

Mesh Loading Processing

Voxel-Based Global Illumination in OpenGL

Bachelor's thesis (2021.1)

Implementation of Voxel-Based Global Illumination in a physically-based deferred renderer in OpenGL

Build

Video

Timeframe: 2 months

Used languages and libraries:

C++17, OpenGL, CMake, Assimp, ImGUI, boost

Features:

Deferred Rendering

Physically-Based Lighting

Compute Shader

Geometry Shader

Cone Tracing

3D Textures

Visualization of Voxel Texture

Rubik's Cube

University Project (2021)

Rubik's Cube implementation in OpenGL.

Build

Video

Timeframe: 1.5 months

Used languages and libraries:

C++17, OpenGL, boost

Features:

Deferred Rendering

Animation

Normal mapping

Environment mapping

Blinn-Phong Lighting with Gamma correction

.obj reader

Sound

Calm Horizon

Global Game Jam (2021)

3D Adventure Game made in Unity together with three professional programmers from which I could learn a lot. Project was done remotely.

Build

Video

Timeframe: 2 days

Used languages and libraries:

C#, Unity, Git

Features:

Ship controls

Input

Camera

Transitions

Event system

UE4 Animation Plugin

University Project / Self-study (2020.2)

Basic DistanceMatching and RotationWarping implemented as a UE4 Animation Plugin. Heavily oriented on Epic's solution used in Paragon. Only supports character rotation between 0-45° currently.

Example without plugin

Example with plugin

Timeframe: 1 month

Used languages and libraries:

C++, Unreal Engine 4

Features:

Controlling animation speed based on character speed

Smoother transition for start and end animations

Rotating bones based on character rotation

Custom node in the UE4 animation system

Fluid Rendering

University Project (2020.1)

Portal-like fluid rendered in OpenGL.

Build

Timeframe: 3 weeks

Used languages and libraries:

C++, OpenGL

Features:

Fluid rendered with Signed Distance Function

Lighting for procedural objects

Creating billboards with a Geometry Shader

Environment Map Filtering

Self-study (2020.1)

Filtering an HDR Environment Map, creating a cubemap out of it, and mapping it onto a sphere in OpenGL.

Build

Timeframe: 3 weeks

Used languages and libraries:

C++, OpenGL

Features:

HDR Environment Map Sampling

Offscreen Render Pass

Monte Carlo Filtering

Cubemap generation from environment map

Basic Offline Raytracer

Self-study (2020.2)

Programmed an offline raytracer in C++ following a tutorial and ported it to CUDA.
Please build with VS2019

Render

Timeframe: 1 week

Used languages and libraries:

C++, CUDA, Visual Studio

Features:

Diffuse Material

Metal Material

Glass Material

Depth of Field