Writing a raytracer

Wow, it’s been a while since I worked on my website… about 3 years!  So it’s about time for me to start contributing again.

If you’re a new visitor, my name is Dagan Potter.   I’ve been working in feature animation, visual effects, and computer graphics for a little while now (over a decade and a half).

I decided to start this site with a focus on more educational material.  My inspiration was sparked at home, on a sick day.  Boredom took over, and in an attempt to keep myself busy and from feeling lousy, I started coding up a little raytracer.  As I was writing it, I recalled my start in the CG industry and remembered the relative difficulty in finding useful reference material for rendering.  Things have changed a great deal since then.   One can find plenty of books/websites/repositories/etc. full of information.  That said, I figured I would document the process of writing a very simple renderer and break down some of the math and concepts behind doing so.

SlopRay is born!

I have since used SlopRay as a teaching tool for many of my artists.  It has been extended in numerous ways and continues to be a fairly effective, albeit basic, teaching tool.

The idea is to be as clear and general as possible.  I figure that writing it in Python will be close to writing in pseudo-code, with the added advantage of having examples that actually run.  I don’t want to spend a lot of time explaining the particulars of programming languages or anything else that isn’t directly related to rendering.  There will be performance issues due to this choice…  That’s ok… This exercise isn’t about writing the fastest renderer out there.  It’s about writing a simple, modular, “plug-in” based raytracer.  Will the code be sloppy?  Yes.  Hence the name!  Will it adhere to all things pythonic?  Most likely not.  Will it render pictures?  That it will.

I will be spreading these posts out over some time so don’t worry if there is some delay (I do have a day job, after all).

Here’s a sneak peek of things to come…

 

Leave a Reply

Your email address will not be published. Required fields are marked *