Soul Engine
The engine started out as a side project for rendering grass with a tesselation and geometry shader back in 2012. Once I started questioning how I wanted to shade the grass, I took the learning journey into physically based rendering. It was after that learning experience I shrugged off the rasterization prototype and started developing the engine as a library with a path tracer. From there, the project grew to include more and more systems until it eventually became the basis for all my future side-projects.

One of the early core philosophies was to embrace parallelism in all its forms. With a wrapper around the boost.fiber library, I built a task-based scheduler that would efficiently distribute work across all CPU cores.
The rendering system, using CUDA and blit to a framebuffer, was designed to be dynamic, predictive, and self-balancing. The system achieved real-time path tracing with interactive frame rates far before hardware acceleration started to play a role in the equation. To negotiate with the downsides of a software based approach, the ray budget would adapt accordingly based on scene complexity, user configurable heuristics, and data masks of the screen. The cost of a low budget was higher sampling noise, but that was desired to maintain a consistent frame-rate across different workloads and hardware. The work done here would fit right in with a modern denoiser.
The engine work is currently on hiatus as I prioritize tooling and support libraries for the project. The engine is open source and available on GitHub and one day it will see commits trickle back in.