Andrew's Raytracer for Natural Scene Rendering
Winter 2004 CS488 Final Project
Andrew Clinton
For my final project, I created a raytracer suited to rendering natural
scenes. This demanded a number of very interesting
extensions to the core raytracer, including subdivision surfaces, procedural
textures, displacement mapping, tree generation, and enhanced ray tracing
features such as area lights and focal blur. Most of the features are
demonstrated below with example images.
The project was inspired by recent work devoted to ray tracing displacement
maps, as well as the desire to capture the complexity of nature in computer
generated scenes.
Reflection/Refraction
Fresnel Reflection
Fresnel reflection adds additional reflective contributions at grazing angles.
Focal Blur
Left image shows focal blur with 5 samples per pixel. Right image shows focal blur with 100 samples per pixel.
Area Lights
Circular area lights are like a fluorescent tube in a circular shape.
Procedural Textures
Row 1: Perlin noise, Fractal Perlin Noise, Gradient
Row 2: Checker, Radial, Worley Cell (Voronoi)
Row 3: Fractal Voronoi, 4-colour Perlin, 4-colour Voronoi
Texture Combiners and Bump Maps
Textures can be combined arbitrarily using a texture interpolant and keyed maps. Here two Perlin textures are blended using a Perlin texture interpolant.
Subdivision Surfaces
Subdivision surfaces implement the Loop scheme with controllable number of patches and maximum subdivision level.
Displaced Subdivision Surfaces
Displacements are derived from the value of a procedural texture.
Displaced Cow
The subdivision surface can be derived from an arbitrary input mesh. Here a cow model is subdivided and displaced using the Voronoi texture.
Procedural Tree Modelling
Trees are constructed recursively according to a subset of the Weber and Penn tree model.
Final Scene
Final Scene (High Quality)
This version was rendered a day after the project deadline. If you choose to do a raytracer project, make sure you allocate time for rendering! :)