Skip to content

Real-time global illumination implementation using spherical harmonics, as my bachelor thesis project. Written in C++ and Vulkan. Active from March to June 2023.

Notifications You must be signed in to change notification settings

SiTronXD/vkHarmonicsVirtualLights

Repository files navigation

Harmonics Virtual Lights

A Vulkan implementation of the paper "Harmonics Virtual Lights: Fast Projection of Luminance Field on Spherical Harmonics for Efficient Rendering" (https://doi.org/10.1111/cgf.14564) for my bachelor thesis project. The technique approximates global illumination in real-time with virtual lights. The virtual light sources make use of spherical shapes and utilize spherical harmonics for efficient light projection and integration, rather than relying on traditional numerical schemes.

Screenshots

github-small github-small

Optimization

A lot of emphasis was placed on optimization throughout the thesis work. The initial execution times of the implementation were around 80 ms. Seven different optimization techniques were therefore implemented, yielding a speedup of 46.9x for a particular scene setup. None of the optimizations compromise input parameters, correctness of the algorithm or mathematical authenticity. The techniques are described in greater detail in my thesis report. Effects of each optimization on the performance can be found in the following figure: github-small

Vulkan features used

  • Version 1.3
  • Dynamic rendering
  • Synchronization 2
  • Push descriptors

Assets used

Libraries and APIs used

  • Dear ImGUI: GUI for debugging
  • EnTT: entity components system
  • fast_obj: OBJ mesh importing
  • GLFW: window management
  • GLM: vector and matrix math
  • stb: image importing
  • Vulkan: graphics and GPU management
  • Vulkan Memory allocator: GPU memory management

About

Real-time global illumination implementation using spherical harmonics, as my bachelor thesis project. Written in C++ and Vulkan. Active from March to June 2023.

Resources

Stars

Watchers

Forks

Languages