CS 6620.001 "Ray Tracing for Graphics" Fall 2014

Welcome to my ray tracing site for the course CS 6620.001, being taught at the University of Utah in Fall 2014 by Cem Yuksel.

Welcome fellow students! I have lots of experience tracing rays, and with graphics in general, and so I'll be pleased to help by giving constructive tips throughout (and I'll also try very hard to get the correct image, or say why particular images are correct as opposed to others). If you shoot me an email with a link to your project, I'm pretty good at guessing what the issues in raytracers are from looking at wrong images.

Hardware specifications, see bottom of page.

Timing information will look like "(#t #s ##:##:##)" and corresponds to the number of threads used, the number of samples (per pixel, per light, possibly explained in context), and the timing information rounded to the nearest second.


Project 6.75 - More Preliminary Photon Mapping

I decided to sort out all the problems in photonmapping, and I learned more things. Here are some of the bugs I found and killed:

Lucy, (16t ?s 00:12:35):

Rendering of 'Lucy' model in a Cornell box.

This is an image from before I did too much work. There are a number of problems.

Here's a visualization of an issue related to sampling the KD-tree. The photon adding was slightly messed up. Here's the raw photon map and then different maximum radii. Timing unknown, but pretty fast:

Four visualizations of photonmap generation.

I discovered that the sampling of the photons wasn't what I wanted. Not necessarily incorrect, mind you (although I didn't work out whether it was or not), but just somewhat strange. I altered it to be more logical.

One nagging issue for the past renders was that the photonmap looks "too dark". I thought about it, and realized that the easiest way to (dis)prove this is to render the caustic from a transparent object with the refractive index of air using photonmapping. So, I implemented an AABB primitive (it was mostly done, but rendering them wasn't quite working right), set it to be completely transparent, and 'lo, the caustics were indeed too dark! I quickly traced it down to a missing factor of \\(2\\) when calculating the flux (my emissive materials emit on both sides).

I played around with it a bit, but the first one I actually let sit for a good long while produced this simply beautiful render in about \(40\) minutes with 50 samples:

Rendering of bunny in a Cornell box.

Here's a much larger version (1920x1080) rendered using the same data (16t 50s 02:25:10). Be sure to view the original!

Rendering of bunny in a Cornell box (higher resolution).

Proceed to the Previous Project or Next Project.


Hardware

Except as mentioned, renders are done on my laptop, which has: