Due: Oct 18
You can use either the format provided last time or the alternate format (described here). You may have to modify the format, especially if you use the original XML one.
A basic Ray Tracer which (ideally) builds off of your RayTracing-Part1 assignment. It will be worth 85/100 points to get these basics:
- Arbitrary camera placement, film resolution, and aspect ratio
- Arbitrary scenes with spheres, triangles (possible with vertex normals), and aribitrary background colors
- Arbitrary materials, including diffuse and specular shading, reflections, and refractions
- Point and directional lights
- Ambient lighting
- Recursion to a bounded depth
To get the full 100 points you need to add additional features from the list below (ask me if you have something in mind not on the list). Its okay if you have to extend the scene format in anyway you want, just make sure you include a sample scene that shows off your new, cool features!
The number in front is how many points a feature is worth. Their will be partial credit for features that “sort of” work.
Scene specifications / Primitives
- (5) Cones and Cylinders
- (5) Boxes and Planes
- (5) Constructive Solid Geometry (union, difference, and intersection of primitives)
- (10) Transformations on primitives (support 4×4 transformations or procedural ones!)
- (20) Procedurally generated terrain/heightfields
- (5) Area lights that produce soft shadows
- (10) Ambient Occlusion
- (20) Image-based lighting
- (5) Jittered supersampling
- (5) Adaptive supersampling
- (5) Motion Blur
- (5) Depth of Field
- (20) Physically-based camera lens simulation
- (5) Texture mapping
- (5) Bump mapping
- (5) Procedural texturing or bump mapping (checkerboard, wood, marble, mandelbrot set, etc..)
- (5) User interface that shows the raytraced image being updated
- (10) An acceleration structure: BVH, OctTree, etc. (measure the performance impact on different scenes!)
- (15) Parallelize the raytracer (and analyze the performance gains as you add more processors!)
- (100) GPU Implimentation using CUDA
You should create a webpage with:
- A ZIP file of all your source code
- At least two sample renderings from your raytracer
- A writeup of what features you implemented, and any interesting details of your implementation
- A submission for the art contest (optional)
-You should be able to leverage your previous raytracer. Any extra credit work you did their should roll easily into this assignment. Try to be strategic about what extra features you choose to implement.
-A BVH is an easy way to render large, impressive scenes in a reasonable amount of time
-If your running out of time focus on the easier options such as boxes, planes, CSG and supersampling. That way you get some easy things completed well rather than rushing through something you don’t have time to finish.