A short story about me. I've using POVRay since late 80's. This year I decided to learn some C++ and programmed a simple physics simulator. Yeah, it worked but was a bit boring. Then I read POVRay forums and noticed a few posts about path tracing (someone there made a patch to convert POVRay into path tracer). The images looked a lot better than anything normal POVRay can produce so I got interested.
The algorithm looked quite simple so I wanted to try if I can do it also. Then I started programming ssRay which you can find here:
http://www.saunalahti.fi/~sevesalm/ssRay/ssRay.php
It is still lacks some fundamental features but the images look promising - IMO!
Now I'm trying to figure out how to handle light sources. Now light sources are just objects with emission. I simply trace the ray and if it hits emitting object, it returns...well...light. I was thinking that you could "scan" lightsources separately at each bounce for direct lighting. The problem is I don't know how to sample them.
For example:
- I hit a diffuse surface.
- I have a cube light source which is partially visible.
How do I take a random point on that cube to check the actual lighting without affecting bias. I guess I simply cannot generate a random point on the surface of the cube. And how about spherical light source or a general unbiased method?
Yeah, then I have to program transformations (I suck at matrices) and acceleration structures. Then I'm partially happy.

But anyway, this is a fun project and images made with LuxRender and Indigo Renderer just motivates to continue.