Dave's Extended Ray-tracer
During University, I took Introduction to Computer Graphics (CS488).
Although it was only an introductory course, we covered a lot of advanced
topics. For my final project I extended a raytracer I wrote for a previous
Because of my fascination with raytracing, I have continued to add features
to my raytracer. So far I added the following additional features.
- N-Dimensional Perlin Noise - My raytracer already had 3D perlin noise, but
I decided that I wanted 4D noise so I could create 3D textures that were
animated in time. As an interesting challenge I decided to make a
N-Dimensional noise function. The most interesting aspect to the problem was
figuring out how to perform interpolation in N-Dimensional space. I think I
came up with a pretty clean solution. In fact, I haven't seen any other code
that is capable of calculating Perlin noise in N-dimensions.
- Worley Cellular Texture Basis Function - I also implemented Worley's
cellular texture function. This allows some interesting textures that I
couldn't create with Perlin noise.
What's next? Well, there are still a number of things I would like to
- Photon-mapping - I would like to implement photon mapping to allow global
- Procedural texturing - I would like to improve existing procedural
texturing primitives, and add new ones.
- Performance Optimisations - Currently nodes in the scene (such as meshes) implement
spacial subdivision. However, I don't subdivide the scene itself. I would like
to use a space partitioning scheme to partition nodes into different regions of
- Cloud Animation
- Water Animation
- Fly-through Animation