Dave Cope's Homepage
   Main | Personal | Photo Gallery | Projects | Linux | Employment Info. | Links | Misc. | About e-mail  

Dave's Extended Ray-tracer

Rendering of a mountain range Rendering of a porsche

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 assignment.

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 implement.

  • Photon-mapping - I would like to implement photon mapping to allow global illumination.
  • 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 space.



  • Cloud Animation
  • Water Animation
  • Fly-through Animation

Final Scenes:

  • Mountains
  • Meadow

This site was designed and coded by Dave Cope - © 1998-2003