Stonemonkey: Sorry, haven't got the source, just the exe from when you made it.
Shockwave: It's even faster now, and is getting better!
Everyone especially Voltage

: I've been spending my time lately special-casing functions, i.e. merging my interpolation functions into my square functions and having one square function for each size of square. This is alot faster because I can take advantage of knowing the square size which means I can use numeric constants instead of variables, and also it saves function calls. Not to mention there are less variables passed to each function that IS called, so this is working pretty well

.
I have a little more work because I'm going to rewrite the interpolation for the 2x2 squares to make them faster, and I'm also going to optimize my shadow checks by storing the last object that casted a shadow's id and checking it FIRST for shadows in the next intersection. I forgot what this was called, but as far as I know it works very well.
After that I'll implement planes, followed by textures, and then I'll either do cylinders or just move straight to CSG.