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. (html of guide is in rayshade-4.0-ftp-and-guide.tar.gz...