Personal Projects

[2021-ongoing] Glaze

Realtime Path tracing Renderer

Similar to my previous project spectre-light, but using the GPU and Vulkan raytracing to obtain a realtime Image (and has a lot of extra features!). The underlying algorithm follows the same basic concept, even though the implementation is completely different due to the GPU architecture. Contains both an interactive and a CLI renderer, but requires a GPU with raytracing capabilities.

Code Video

[2017-2018] Spectre-light

Physically-based Rendering Engine

Physically based renderer implemented from scratch, mainly to properly learn how rendering works under the hood. No libraries were used, everything has been written from scratch.

This renderer is not a realtime one: it uses a raytracing approach and to calculate the radiance in the scene, with a path tracing unbiased integrator. The renderer itself is fairly complex, as Multiple Importance Sampling and two different types of acceleration structures (BVH-AAC and Kd-Trees) are used to speed up rendering times. Ultimately, a full HD picture with around 1M triangles requires a couple of minutes of rendering time.

Code

[2018] Kademlia

Implementation of the famous Distributed Hash Table

Started as a simple academic project, the implementation of this DHT turned out to be more complex than expected. The kademlia paper itself is not particularly clear in how to solve certain situations, and C++ is definitely NOT the language one would use for anything so dependent on async events. Furthermore, for reason that I could not remember, I decided to implement SHA1 by myself instead of using the one provided by openssl. Nonetheless the final result is nice, so I decided to leave it public. Rust port SOON™.

Code