Growth

This is where I show off the growth of my projects.

The only growth I have to show right now is that these web pages have been placed on-line, and that I wrote a ray-tracer a few semesters back. Oh well, they're better than nothing.

Ray Tracer from Computer Science 555

WARNING:I just need to say that these models are cheesy. I kind of want to do a pool table or something, but I'm spending all my time working on other projects. I think a matte green plane with a bunch of colored and appropriately reflective/specular balls, a mirror looking over the balls with two nearly-clear planes and one reflective plane.... Nag me about it and I'll render it, otherwise the images below meet the requirements of the class.

I had a bit of a problem in the ray tracer -- it stopped working when I tried to move the eye from <0,0,-5>, or set the 'up' direction to anything other than <0,1,0>. I have now worked all that garbage out. In fact, it is pretty cool.

The Images

My first good image with the finished ray-tracer (.gif) (.jpg)

Another image, looks like this thing works! (.gif) (.jpg)

Now I have soft shadows, but I forgot to divide back out the multiple rays -- or I could just turn down the lights a little bit. (.gif) (.jpg)

This image demonstrates everything that was supposed to be in the project. It took about four minutes to render on a Pentium 2 300Mhz, went through 1.1 million rays (about 1% were shadow and 40% were reflective), and had just over 4 million intersection tests. Good thing the bounding slabs were in place! (.gif) (.jpg)

Things I Did Different from others in the class

One of the things I did that caused a bit of a problem was depth of reflection. At first the rays were just bounced up to a certain number of times, but I found that some rays were more important than others. I assigned importance values to the rays, with an initial value of 1000, meaning it should be in full detail. If the ray was reflected and the surface had a specular component of .8, then the specular ray value was at 800, or if it was jittered into two rays, they were set at 400. When the importance values dropped too low, I didn't bounce the ray any more. This let the inter-reflective rays drop out once they stopped changing intensity.

A problem came with stack overflows, which still happen if I set the initial importance too high or minimum value too low. I got around this by just increasing the stack size in the binary, but I would rather have placed all the rays into a large set. Then I could run this on the Marylou10 (the 188 Node Supercomputer) and demonstrate load balancing for the parallel processing class. ... I wish I had more time in my life.

Things I Tried To Do

Although I haven't done it successfully, I can stick lenses directly in front of the camera to produce lens-flare and focusing blur into the image. Unfortunately when I try to do them, the whole image goes white or blue, depending on the type of lens I use. Since it is time to turn it in, it isn't up here.

(Maybe someday I'll get back to this, but knowing my life, it won't be anytime soon.)

Valid XHTML 1.0! Best with any browser campaign