Saturday, August 18, 2012

Semiramis Ray Tracer (2003)

In school, towards the end of my diploma, I was allowed to take a class outside my engineering field: computer graphics.  This class, CS488, was a blast.  I recall a warning during the first class indicating that the workload was somewhat intense, and that students have been known to take only that one class for a semester.  This scared me a bit in the start, but it was a calculated risk since I already had a somewhat solid grip on graphics basics at that point and I mostly saw the class and required coursework as a fun and stimulating way to deepen my knowledge of fundamentals.  It all worked out and in the end; my heaviest class that term was a cognitive psychology class, which by itself dwarfed the course load of all my other classes put together.

The second-last assignment in that class is to write a simple raytracer, using python to describe scenes which are thereafter rendered by a C/C++ back-end.  Once the basic requirements are met - simple lighting, shadows, scene hierarchies, etc. are working - students are free to add three (or more) features of their own accord.  I chose to add supersampling, reflections, and isosurface (blob) rendering using a simple solver.  Here are a few sample images.

The course-required images are somewhat less... erotic:

No comments:

Post a Comment