Monday, September 13, 2010


In an effort to stay on top of things and to take advantage of my current "dedication wind" I decided to get into the code today and implement the shadows portion. The changes where not too hard to implement.

Everything is brute force at the moment, but hey, it works! Im looking to implement a radius parameter into my point light to mimic faux area lights. In the meantime here is a little image

Next up... i dont really know. I want to implement multi-threading as well as specular shading. I also need to add more primitives because im getting kind of sick of these spheres.

Sunday, September 12, 2010

Materials (Matte) and PointLight

I had to take a break in development because we had a very demanding project at work. That and I have also been playing around with the beta version of a very strong and cool raytracer.
After the small hiatus I finally got around to add light and material support. Here is a small image.

Next up: shadows and specular reflections

Monday, August 9, 2010

Depth Of Field

Finally after a long pause in development I made the time to figure out why my depth of field implementation was crashing the whole renderer. After a little bit of work spent on getting the code to compile on my linux station, I was ready to track down and kill all the bugs that where killing my renderer. Eventually i found it somewhere in the initializations of my camera's sampler member. Once that was sorted out i managed to get the following little image. Next up? Materials and lights!

Friday, August 14, 2009

Camera Projection

After a long time of procastinating I finaly got around to implementing the Camera object. It was not as hard as I thought it would be. As I was moving my camera around I realized I had some horrible (and dumb) bugs on my Vector3d class. Eventually i got it figured out. Enjoy these 3 images.

Next, implementing depth of field!

Monday, May 18, 2009

Lets get progressive

One of the features that good old BMRT(R.I.P.) used to have was a default progressive refinement interactive display. I always thought that this is a very useful display method (specially for lighting) as it allows the user judge the final image as it is refining. No need to render the whole image when you know the modification to the lights you just made is way off!

I decided to try and replicate suck interactive display. It proved to be a neat little exercise. I'm sure there are ways to improve this algorithm but for now I must move over to implementing the camera class and hopefully soon enough the shading portion.

In the mean time I leave you all with this little video. Cheers

Progressive Interactive Display
(the video looks like crap, ill try to improve the quality later)

Tuesday, May 5, 2009

Go RenderRan! Go!

When i first started this renderer I was writing the images directly to disk. Opening the image with a viewer program every time I rendered something got old (and boring really quick). Since I wanted to simplify things I used the QT toolkit to create a simple window that would display the image that had been saved on disc, once the render was done. This made things a lot better, but the big problem was that i could not see the image being generated, I had to wait until the image was done to view it. So if the render was completely wrong, I didn't know it until the whole image was finished. This was a little frustrating so I decided to make the raytracer work with buckets like most "real" renderers do. Figuring out the bucketing algorithm was easy, but getting the QT window to update dynamically as the buckets where being rendered took a bit of digging around. Eventually I got it to work, so, here you have it... buckets!!

The renderer runs quite faster than it appears in this video,
but the recording software seems to slow it down

Saturday, May 2, 2009

Putting It All In To Perspective

I finally arrive to the part of the book that deals with perspective projections. At this point the perspective is achieved in a hard-coded way and there is no real interface to control the field of view. The reason for this is that I have not yet created the camera classes to handle the transformation of the view or the field of view of the projection.

First perspective projection rendered by RenderRan

Same as previous image but with a tighter FOV