cs6620 Project 7

Abe Stephens

Required Images


The samples per pixel (spp) refers to one dimension of jittered sampling. So 5spp is actually a total of 25 samples across each pixel in the filter's support.
  1spp.

0.184112 (4 threads)
0.45884 (1 thread)
5spp and Lanczos Sinc Filter:

21.4829 (4 threads)
47.1653 (1 thread)
5spp Tent Filter:

20.9514 (4 threads)
45.3691 (1 thread)

Creative Images


5spp. No shadowing in the Perlin Hypertexture.
This result shows the normals on the Perlin Hypertexture.  I added a considerable amount of curl to the function.  I think it resulted in a bit of a Dr. Seuss like quality.
This was one of my initial renderings of the hypertexture. The volume is color mapped based on density. At this point the surrounding materials are using the volume bounds for shadowing rather then sending rays through the volume.

Design:

Performance Template

I implemented the perlin surfaces with shaders that only modulated between the two colors using the noise equations. Diffuse and specular shading was delegated to other classes passed to the material as template parameters. The perlin volume renderer was implemented in three parts. The material consists of a domain, an effect, and a volume renderer.  I wrote a Box domain that implemented the ODF and a Hair effect which implemented the DMF described in Perlin & Hoffert, Hypertexture.  Siggraph '89. The volume renderer took these two types as template parameters. This design allows me to switch in and out different effects based on the Perlin functions over different domains. I also implemented a user interface for controlling all of the parameters of the shaders (pictured below).
Difficulty: The required scene wasn't too difficult after I solved a few hard to find bugs. I spent way too much time working on self shadows for the hypertexture and the results aren't as compelling as I might have liked. This will require more work.