The best way to describe myself is a CG hobbyist professional. My day job is mostly related to distributed systems and backend engineering I am full time graphics engineer at Spline working on super exciting CG projects.
I still try to fill my free time tinkering on small CG projects just for fun. I am generally interested in rendering beautiful images often using offline rendering. I like to understand how complex materials work and I tend to spend too much time profiling and optimizing the code I write.
Here are some of the projects I made over the past 6 years:
Peter Shirley's Raytracing in One Weekend books was the starting point to my little adventure. I've always played around with ray tracers and computer graphics but these books allowed me to build a decent render while learning the basics along the way. Eventually I rewrote the renderers in CUDA (several times) increasing its performance along the way.
I got the inspiration of this project from ephtracy's amazing Aerialod path tracing renderer for heightmaps. I used CUDA again and what was new with this project is that I used a voxel representation for the scene and an optimized variant of the DDA algorithm.
For this project I wanted to focus on optimizing my CUDA renderer and was looking for an easy way to support very large scenes while sticking to the basic primitives (I didn't yet have support for triangle meshes at this point). I found Michael Fogleman DLA project which was perfect as it only required supporting points (which are basically small spheres in my renderer). Once I got that working it was straightforward rendering point clouds.
For this project I finally got the chance to add support for triangle meshes along with loading .obj files. Initial implementation didn't have a proper acceleration structure and that is why I only rendered low poly models. I compensated that by adding support for more Beer law absorption for glass.
For this project I wanted to render a proper trianglemesh scene. This particular scene if from Benedikt Bitterli's rendering resources, with the actual obj scene nicely provided by Asif as part of his GLSL-PathTracer. Once I got the scene rendered properly, I focused on optimizing the renderer which led me to eventually implementing more advanced BVH build algorithms (specifically triangle splitting and SBVH).
For this project I wanted to implement subsurface scattering, I used this great computergraphics.stackexchange answer as a basis for my renderer, then I experiemented with various models.
This was the scene that was on the cover of the 2nd edition of Physically Based Rendering book. For this particular project, I used YoctoGL which is a nice C++ library which provides a lot of code that can greatly speedup rendering development. For this particular case I mostly used it to load .pbrt file and support some of the advanced materials I didn't yet implemented before.
For this project I went back to Raytracing in One Weekend books' code and added support for triangle meshes. For this particular implementation I wanted to focus more on adding interesting features without worrying to much of low level optimizations. For now everything is on CPU, which makes it much easier to debug when things don't work as expected. Eventually, I rewrote the path tracer from scratch based off the Advanced Graphics course from Utrecht University. As part of that, I added support for multi-threading which made rendering so much faster allowing me to explore more complex materials, including Disney's principled BRDF and volumetric absorption with and without scattering (subsurface scattering).