A raytracer made with POV-Ray sounds really weird, doesn't it? What is it anyways? POV-Ray is already a raytracer
in itself, how can we use it to make a raytracer? What the...?
The idea is to make a simple sphere raytracer which supports colored spheres (with diffuse and specular lighting),
colored light sources, reflections and shadows with the POV-Ray SDL (Scene Description Language), then just render the
image created this way. That is, we do not use POV-Ray itself to raytrace the spheres, but we make our own raytracer
with its SDL and use POV-Ray's raytracing part to just get the image on screen.
What obscure idea could be behind this weirdness (besides a very serious case of YHBRFTLW...)? Why do not just use
POV-Ray itself to raytrace the spheres a lot faster and that is it?
The idea is not speed nor quality, but to show the power of the POV-Ray SDL. If you know how to make such a thing
as a raytracer with it, we can really grasp the expressive power of the SDL.
The idea of this document is to make a different approach to POV-Ray SDL teaching. It is intended to be a different
type of tutorial: Instead of starting from the basics and give simple and dumb examples, we jump right into a high-end
SDL code and see how it is done. However, this is done in a way that even beginners can learn something from it.
Another advantage is that you will learn how a simple sphere raytracer is done by reading this tutorial. There are
lots of misconceptions about raytracing out there, and knowing how to make one helps clear most of them.
Although this tutorial tries to start from basics, it will go quite fast to very "high-end" scripting, so
it might not be the best tutorial to read for a completely new user, but it should be enough to have some basic
knowledge. Also more advanced users may get some new info from it.
Note: in some places some mathematics is needed, so you would better not be afraid of
If some specific POV-Ray SDL syntax is unclear you should consult the POV-Ray documentation for more help. This
tutorial explains how they can be used, not so much what is their syntax.