CS 410 FINAL EXAM TOPICS Hardware – Chapter 1: Applications of computer graphics, hardware: random scan and raster scan CRT's, which was used first, why?, advantages/disadvantages of each, frame buffers, monochrome, luminance, grayshades, bitplanes/color depth, resolution, pixels, aspect ratio, indexed color, Color Lookup Tables (CLUT's), true color, calculating memory requirements for various frame buffer configurations and relationships between color depth, CLUT width and number of entries in indexed color modes, RGB color, primary and secondary colors (combinations of min and max levels of r,g,b). OpenGL Basics – Chapter 2 (2.2.1 - 2.7): Grew out of SGI’s GL, now controlled by an Architecture Review Board (ARB) with members from various companies, libraries (OpenGL core, GLU, GLUT) and what each does, functions, state, primitives, function format (various parameter types including v), constants, program structure, callbacks, coordinate systems: world coordinates, screen coordinates, orthographic projection and glOrtho, viewports and glViewport, creating primitives and setting attributes. Interactivity and Animation – Chapter 3: (3.2, 3.5, 3.6, 3.10): input modes, which is used in GLUT, callbacks and what each is used for and how to register: display, reshape, keyboard, special, idle, mouse, motion, passivemotion; how to create menus, entries and submenus. Raster Graphics (8.1 – 8.4, 3.11 – 3.12, 3.4, 8.11.1 – 8.11.3): Buffers: front, back, and role of each; display lists: creating, using; alpha transparency, blending, blending function, source & destination factors. 3D Vector Graphics – Chapter 4: Scalars, Vectors, Points, coordinate-free geometry, coordinate systems & frames, representations of points and vectors, homogeneous coordinates and significance of 4th coord., matrices and how matrix multiplication is used to combine transformations, to perform a change in coordinates, and to apply transformations to representations of a point or vector, common transformations: rotation, translation, scaling, shear – what each does and matrix that performs it (rotation about z only, and no shear), fixed points, how to rotate about an arbitrary fixed point, order of transformations, OpenGL transformations: matrix mode & role of model view and projection matrices, current transformation matrix and how impacted by glRotate, glTranslate, glScale, glLoadIdentity, glLoadMatrix, glMultMatrix, glPushMatrix, glPopMatrix. Viewing and Projection - Ch. #5 (5.2-5.6): Viewing and Projection of 3D scenes, positioning and orienting the virtual camera (be able to do with basic transformations and with gluLookAt), orthographic and perspective projection, clipping volume and its shape in each case (know 2 names for shape in perspective case), formulas for projected coordinates in terms of original ones for simple orthographic and simple perspective projection, perspective projection matrix and how to use to find projected coordinates (including perspective division), OpenGL commands for setting the clipping volume (be able to do perspective with glFrustum and with gluPerspective), the OpenGL rendering pipeling: OpenGL matrix modes and what each is used for, coordinates before and after each matrix (world, eye, clip, in order); hidden surface elimination / z buffering, culling – elimination of polygon back faces. Texture Mapping - Ch. #8 (8.6-8.8): Texture mapping, image restrictions, texels, texture space and texture coordinates, creating 2D textures and mipmaps in OpenGL, texturing parameters regarding filtering (including mixed mipmap modes) and wrapping, texture functions (decal/modulate), texture objects - their benefits, and how to create and use them in OpenGL, idea of anisotropy and anisotropic filtering and its benefits (see handout), idea of Multisampling/FullScreenAntiAliasing and its benefits (see handout), multitexturing (idea of & applications of). Lighting and Shading - Ch. #6 (6.1 - 6.9): Idea of normal vectors, idea of dot product of two vectors and its applications: length of a vector and angle between two vectors, unit or normalized vectors, idea of cross product of two vectors and its application: know what mathematical steps are needed to calculate a normal to a polygon given its first 3 points, global and local lighting models and their capabilities and limitations: raytracing and the Phong model, point lights, spot lights, and ambient light, positional lights, directional lights, ambient, diffuse, and specular intensity, reflection coefficients for each, Lambert’s Law, Lambertian surfaces & diffuse reflection, surface normal N, light vector L, significance of L.N, angle of reflection R, shiny surfaces & specular reflection, view vector V, significance of R.V, the half-angle H and its role in the modified Phong (Blinn) model, shininess (exponent), attenuation factors (constant, linear, quadratic), additional spotlight properties, global ambient light, OpenGL functions related to lighting and materials and GL_COLOR_MATERIAL, glNormal3f, front and back faces, flat vs smooth shading and how to set in OpenGL, normals needed for each and how obtained, Gouraud vs Phong smooth shading: how implemented & pros/cons of each (see handout and slides). Modeling – Sections 4.5 & 10.1-10.3: Representing an object with arrays of vertex coordinates, normals, texture coordinates, colors, etc., avoiding duplicates using indexing, indexed face sets, using OpenGL vertex arrays to avoid numerous OpenGL function calls, OpenGL functions to enable and set up vertex arrays (includes color, normal, texture coord. arrays) and how to use them to draw an object depending on whether indexing is used or not (glDrawElements vs glDrawArrays – see handout & examples). Programmable Shaders – Chapter 9 (9.1 – 9.5, 9.7 – 9.11, 9.13): The fixed-function pipeline and role of vertex processor and fragment processor (what each does and need to emulate in programmable shaders), basic ideas of writing shaders in GLSL including built in support for vectors, matrices and their operations, built-in variables for accessing OpenGL state and specifying inputs and outputs, different kinds of variables used in shader programs and what each is for (uniform, attribute, varying), sampler variables and what they’re used for, applications of vertex shaders (vertex animation, morphing, particle systems) and fragment shaders (image processing, per-fragment lighting, bump mapping).