Ten sample through each pixel:
10 samples through each pixel
With more samples, the image eventually converges to this:
1000 samples through each pixel.
There are still some bugs to work out: the above image had to be auto-leveled to correct the brightness. It starts out way to dark, for some reason.
Shamus Young was messing around with Perlin Noise, which turned out to be normal noise. I dug around in an old VM to find this image:
Blue and white marble effect. Sort of.
The massive sphere in the background is procedurally textured with the Perlin Noise function, that is described in this paper: http://mrl.nyu.edu/~perlin/paper445.pdf
It’s not the best example I ever produced, but it’s the only build of my old raytracer that I could find. Shame on me for poor version control.
The source code for it, in Java, is on Ken Perlin’s website here: http://mrl.nyu.edu/~perlin/noise/
To be honest, it’s a very long time since I’ve looked at that stage of my ray tracer. I ditched the procedural generation of textures because they took way too long, but the basic idea is that you use the “noise” function, which takes X Y Z coords as arguements, and it returns the “next” noise point from the initial permutation list. Or something. These days I comment my own code a lot better, precisely because I can’t remember how this stuff works anymore.
When you’ve got the returned noise amount, you can do cool shit with it. I found a couple of functions around that could turn it into a marble style texture, but you can do a lot more with it.