Paper, Order, or Assignment Requirements Computer Graphics (COMS30115) Course Work Sri Subramanian, Diego Martinez and Florent Berthaut, February 2015 Introduction This document is a guide to the course work for those undertaking the Computer Graphics course. The requirements of the course work are: 1. To write a raytracing application. 2. Use it to generate a series of images that demonstrate the raytracers capabilities. 3. Write a report describing the work done (~10 pages including images.) Objective The objective of this coursework is to demonstrate an understanding of the concepts that underpin raytracing. The easiest way to do this is to create a raytracer from scratch. The recommended textbook (Kevin Suffern, Ray Tracing from the Ground Up) includes the source code for a complete raytracer. Simply copying this code will not demonstrate understanding. Using parts of it or code from other sources, modified to suit your own original code with appropriate attribution and explanation either in comments or the report can demonstrate understanding. Deadline The generated images and report should be submitted through the online submission system before 8th May 2015. Assessment The course work is marked out of 100. The marks available for each aspect of the work are included in this document. Some sections provide you with a choice. Think carefully about the images you want to generate, this will inform your choices. Implementing additional options, even partially, will not gain any additional marks in those sections, but may allow more interesting images to be generated for which some marks are available. a) Framework (10 marks) The extension of the basic framework of the coursework is worth a total of 10 marks. There are two parts within this section. Both are required. a. Camera Model (5 marks) In order to generate useful images, particularly animation, an ability to move the camera about the scene is necessary. Add a camera class that can generate primary rays based on eye position, look at and up vector. Add basic multi-sample anti-aliasing. b. Transform(5 marks) The ability to translate, rotate and scale primitives or groups of primitives is a useful mechanism for defining complex scenes. Add a transformation stack to the code. b) Primitives (20 marks) Primitive support is worth a total of 20 marks. There are two parts within this section. Each is worth 10 marks. Both are required. a. Plane + Triangle (10 marks) The triangle is the most ubiquitous of graphics primitives. As a result, many modelling packages are able to export triangle or triangle mesh only versions of the scene. By allowing each vertex to have a normal assigned to it and interpolating these across the triangle, better approximations of curved surfaces is possible. b. Quadratic (10 marks) Quadratics surfaces include a range of useful primitives. Spheres, ellipsoid, cylinders and cones can all be represented by a quadratic surface. c) Material (20 marks) Simple material support is worth a total of 20 marks. There are two parts within this section. Each is worth 10 marks. Both are required. a. Specular Material (10 marks) A specular material has a component that is a function of the light direction and the view direction, with a phong or cook-torrance distribution. Specular materials also show reflections of other objects with the scene. b. Transparent material (10 marks) Transparent materials permit the viewer to see through them. The viewing rays are refracted according to the refractive index on each side of surface. A simple transparent surface has a fixed transparent coefficient; a complex transparent surface has reflective and transparent coefficients that vary with the viewing angle. d) Lighting (20 marks) Complex material support is worth a total of 20 marks. There are two parts within this section. Both are required. a. Point lights (10 marks) Point light sources have a position and optionally a direction. When they have direction, they also have an intensity distribution about that direction. Without a direction, the intensity is constant in all directions. The direction to a point light from a surface is a function of both the light position and the position on the surface. b. Shadows (10 marks) Shadows are caused when a light source is blocked by an object between it and the surface being illuminated. Purely directional light sources are considered to be infinitely far away. Point light sources are only blocked by objects between them and the surface being illuminated. It is sufficient to identify that a shadow is present, it is not necessary to identify the closest object causing it. e) Advanced Rendering (30 marks) Advanced rendering support is worth a total of 30 marks. Each part in this section is worth 30 marks. Choose one. If you implement more than one, only the marks for the highest scoring part will be selected. Some marks will be awarded for the results produced using the raytracer. The more interesting or illustrative the images the more marks will be awarded. a. Image Textures (30 marks) Add support for image files to be used as 2D textures. b. Noise Based Textures (30 marks) Add support for 3D Perlin noise based textures. c. Constructive Solid Geometry (30 marks) Add support for closed volume primitives to be combined into more complex primitives using the union, intersection and difference operators. d. Octree Partitioning (30 marks) Add support for a scene pre-processing step that constructs an octree based partition of a scene and uses this to accelerate intersection processing. Be sure to include performance results in your report. e. Depth of Field (30 marks) Extend primary ray generation to include a flat lens model to permit depth of field effects to be rendered. f. Ambient Occlusion (30 marks) Extend the raytracer to support ambient occlusion.