I am not my desk
Daniel Tenedorio



When I started grappling with ray tracing and the time complexity that comes with it, I felt like my computer hardware had taken a slap to the face. My 2.4 Celeron laptop, or, as I like to call it, "The Beast," was suddenly insufficient for my everyday computing needs. With great sadness, I retired all 15 pounds of her to my bookshelf, and resigned myself to the knowledge that I would have to spend these many hours sitting at my desk.



I enjoyed implementing environment mapping for the class, so I decided to take my own environment map for this project. I borrowed my roommate's digital camera, got a cheap tripod, and checked out Paul Debevec 's HDR Shop software. With the help of some tutorials, I was able to figure out how to assemble one. I was not able to take the full range of exposures recommended to create the image, due to the fact that I was using a simple digital camera with limited settings, but I was able to get a decent environment map out of the scene:


I also especially liked the texture mapping section of the class. I resolved to code every type of texturing I could find, and I used each type in this project. I was surprised to learn how nice it was to have the ability to cylindrically or spherically map a texture onto on arbitrary object, and have it work well most of the time.


+ + + + +
+ + +


As an alternative to learning a modeling package, I decided to try to implement many kinds of primitives in my renderer so I could use them directly instead of a huge triangle mesh. In addition to the triangle, sphere, and bilinear path intersection code we already had, I created objects for cones, cylinders, and discs, each with many customizable parameters. For example, the glass of water on the far end of the table comprises three cones and two discs, one of which is actually a ring.






To simluate the appearance of the objects being outside, I wanted some kind of large area light source. I experimented with placing a rectangular light source above the scene, but I found that this created shadows that were too pronounced. So I ended up using ambient occlusion to simulate even diffuse lighting everywhere.


Large area light

Ambient occlusion
I liked the interplay of reflecting objects I was seeing so far, so I added glossy reflection to the teapot, meaning that it reflects an image, but it is somewhat blurred. I liked the effect that this created and plan on checking it out more.


Glossiness!

Computer renderers do not use cameras, and therefore are not saddled with the limitations of physical focusing devices. Nevertheless, simulating an area of focus can result in a nice cinematic effect:


Depth of Field

Once I decided to try making the desk surface glass, I realized that it looked too flat and did not carry color in the way to which my eye was accustomed. In addition to Snell's and Fresnel's Laws, which specify the amount and angle of light that reflects off a specular surface, I decided to implement Beer's Law, which specifies the way light loses intensity as it travels through a medium.


Beer's Law

Unfortunately, I found that Beer's Law did not play well with my Monte Carlo algorithm to randomly determine whether a ray of light should reflect off a specular surface or refract through, as occurred in the image at the top of this page.

I had a lot of fun creating this image, and I definitely plan on making improvements to the renderer in the future. It is based off the Miro codebase at present, but I plan to rewrite it from scratch sometime soon!