An implementation of https://raytracing.github.io/books/RayTracingInOneWeekend.html
This implementation does not use any smart pointers nor reference counted types. It does use dynamic dispatch.
This is the final render with some slight differences to the book's, nameley randomly sized spheres and I keep the "bubble trick" sphere: