Raytracing Gallery

These are just a few of the more notable renders created using a raytracer I've been working on. The raytracer itself has gone through a number of iterations; starting from a basic Java applet that could only render spheres and planes, it has developed into a C++ pathtracer capable of loading a variety of 3d model formats. The following images are arranged in roughly chronological order; you can tell which images are pathtraced by the recognizable graininess (reduced only by an increase in samples per pixel).

As a gundam fan, I couldn't resist rendering this image. The model is from http://zefai.sakura.ne.jp (the artist has created a bunch of high quality models like this). Back in my middle school days, I did a bit of 3d mapping (creating levels for games). One of the levels was actually a model of my house, and I decided to touch the model up a bit and feed it to my raytracer. This is a shot of my room (although the wide angle makes it look a lot bigger than it really is). Another view of my room, with different lighting. Ok, so this is an actual photo, but I thought it would be an interesting comparison to the previous render (the colors are definitely off since I sort of chose them haphazardly when converting the model). </3 As you can probably tell, this was an overnight render (around 300 samples per pixel in ~5 hours). I was going for a metallic reflective look for the dragon's material. This was also after I implemented area lights; they result in softer shadow edges (penumbras). Almost identical to the previous render, but with a refractive glass material (with an index of refraction of 1.5) Another cornell box, this time with a nice model of a P-51 Mustang (my favorite WWII-era fighter). I eventually started looking into more photorealistic raytracing (path tracing in this case). This was my first "correct" pathtraced render; it's a low poly stanford bunny in a variant of the classic cornell box. Notice the color of the walls bleeding onto the bunny. Just for comparison with the previous pathtraced image; this is with only direct lighting. When I became interested in real-time raytracing, I rewrote the raytracer in c++ for obvious reasons. This was the scene that I used while experimenting with reprojection techniques (reusing image data from previous frames in an animation); it consists of the stanford dragon in front of four stanford bunnies. This is a subtractive difference image between a fully raytraced image (top left) and a reprojected image (bottom left); black means 0 difference in color, while white is the greatest difference. By reprojecting the pixel data from previous frames, rendering time can be greatly reduced (~30% of the pixels in the reprojected scene had to be fully raytraced). As you can see from the difference image, any disparities are concentrated around object edges, since a single pixel reprojection is averaged among several others (since a pixel in one frame is unlikely to project exactly to another pixel in the next frame). And some more spheres... Spheres again, but this time with some refraction. This is another old render from my Java raytracer. I think I made this right after I implemented reflections. Well I had to start from somewhere! This was the first image I rendered; it's simply a spherical light above an infinite plane.