Suggestions for pursuing writing a renderer

So I have finally started to dive into some papers/tutorials on raytracing in my limited amounts of free time, and have started to consider writing a raytracer (yeah, I know, like the world really needs another half baked raytracer, but…)

Now I am at the point of considering if I were to attempt to write one, if I should go with Biased or Unbiased, Photon Map/Recursive Raytracing (maybe some bidirectional stuff) v. MLT (metropolis light transport)/Bidirectional tracing/Spectral Rendering.

Obviously the advantages of biased/recursive/etc. is speed on less complex scenes and slightly less complicated maths (though this really isn’t an issue), but the disadvantage is cutting corners to accuracy and eliminating spectral rendering (or is spectral rendering possible with this method? haven’t seen any papers on this, but maybe…). The unbiased/spectral/MLT method obviously has the opposite points for the most part besides just having a cool factor.

So any opinions on the matter, especially from those who have written raytracers or are just enthusiasts ;)?

Oh, and before anybody cough Cyborg Dragon cough asks why I don’t just improve the Blender internal raytracer instead of potentially writing my own, I have many reasons, one of which is I just need a big C/C++ coding project to keep my mind from being completely rotted by the extremely easy, yet perverse Matlab that’s being forced down my throat (Or would I even dare unleash the evil upon the world that would be raytracer written in Matlab? Is it possible? hmmm…:confused:).

hmm, a raytracer in matlab? i’ve never actualy used matlab, but it should in theory be possible, and probably incredibly featurefull due to the nature of matlab, although probably very slow.

when considering wheather to write a renderer, i would recomend not to do so untill you have at least 2 weeks free time which you are willing to devote to not having any life whatsoever. if your somebody who likes math and gets obsesed by problems, the renderer will probably consume your life due to the numerous algorithmic and mathematical problems and bugs that sprout out of seemingly nowhere.

if you do decide to continue, i would recomend starting out attempting to make a small completely useless raytracer without a sceneloader just to get the hang of it. then if accuracy and gi tickles your interest, create a completely new renderer using what you have learned in your previous renderer and then add different types of sampling types. the easiest to implement is pure non-importance sampled pathtracing. then move on to MLT. if you enjoy gi but need speed for animations and dont understand the other types of math you can create a photon mapper which is the most algorithmicaly complicated but fairly simple mathematicaly compared with the others.

whatever you want to do, i recomend you read the global illumination compendium.