|CS 3451 Intro To Graphics||Greg Turk||Spring 2012 (Expanded substantially as Personal Project)||Java/Processing||No||Code N/A|
|CS 7490 Advanced Image Synthesis||Greg Turk||Spring 2016||Java/Processing||No||Github Repo|
My ray tracer implementation also started as an assignment in a class I took, the undergraduate Computer Graphics course at Tech, and included the usual functionality from a Whitted-style ray tracer, such as shadow rays, reflection, spheres, triangle polygons, and point lights. I figured out and implemented many functions beyond the scope of the assigment, including :
Refraction (based on Fresnel Equations)
Generalized Guadric Surfaces (defined by 10 coefficients)
Quads and Meshes of Triangles or Quads
Texture Mapping on the outside and inside of surfaces/meshes.
Using Inverted Transformation Matrices to direct rays for each object (so a file with OpenGL style transformations mapping objects in space can be easily rendered)
In Spring Semester 2016 I took Greg Turk's Advanced Image Synthesis class, and expanded my ray tracer to include the following :
Distribution Ray Tracing
Depth of Field effects
Spotlights (shadows are soft at edges)
Iterative Refinement (render only some evenly-spaced fraction of pixels as large tiles, and then iteratively get finer resolution until every pixel is displayed)
Acceleration via Bounding Volume Hierarchies
Perlin-noise and Worley-noise based Textures
I first became aware of ray tracers in the late 80's, when I was a student "the first time", and I've always been fascinated by them, so given the opportunity to actually implement one, I was very motivated, and still love working on it. High on my list of ideal jobs would be working in some capacity with ray tracers.