now gnu-ized, gcc-4.7.4 or gcc-10.2.0
A raytracer does not require custom code for (shadows, mirrors) like GL: it uses physics to simulate light to make realistic images, leaving one to specify only what is in the scene. (at a cost of speed)
Rayshade is a 1990's raytracer, a great one back then (and still useful).
Rayshade has an excellent easy to read yet informative User's Guide that other's could not help but copy from.