CSE581
Reading Guide

Interactive Computer Graphics: A Top-Down Approach Using OpenGL (5th Edition) by Ed Angel

ChapterSectionsComments
1 GRAPHICS SYSTEMS AND MODELS
In general Read for general information and terminology, especially about the basic hardware for computer graphics.
The discussions concerning 3D viewing is very important for when we get to 3D (labs 2-4).
1.1Read for general information
1.2 Read for terminology (stuff in bold)- you should know these terms, especially terms concerning the frame buffer (1.2.1) and the CRT (1.2.2).
1.3 Read for general information
1.4Read for terminology and geometry of pinhole camera (1.4.1) - this is the foundation of 3D viewing. Also has a little about the human visual system and the perception of color
1.5 Read for terminology and geometry of pinhole camera
1.6This material on the synthetic camera is very important for later in the course (3D viewing).
Rest of chapterRead for general information
2 GRAPHICS PROGRAMMING
In general We are not going to worry about the material concerning Serpinski's Gasket or about picking.
It's very important you understand how transformations are organized and handled in OpenGL. This chapter starts to introduce that information.
2.1interesting, but not necessary for this class
2.2Read for information on OpenGL
2.2.2Read for terminology (very relevant), specifically the various coordinate systems
2.3Very important for OpenGL (and, therefore, this class), especially that OpenGL is a state machine
2.4Very important, especially the OpenGL pipeline
2.5Read for general idea. It introduces how color is handled. It also introduces the matrices used in OpenGL.
2.6Very important, especially 2.6.3 on matrix modes in OpenGL
2.7Very important info on windows in OpenGL
2.8Read/try if you like, but not necessary for this class
2.9-2.10Read for OpenGL, not for Serpinsky's Gasket
2.11Generally interesting, but not very relevant for this course
3 INPUT AND INTERACTION
In generalThis chapter presents several concepts that are important in understanding OpenGL including:
  • events and callback routines (3.2, 3.5)
  • display lists (3.4)
  • matrix stacks (3.4)
  • menus (3.6)
  • graphic data structures (3.9)
3.1Read for general info
3.2Read for terminology, especially 3.2.1 Physical Input Devices, 3.2.2 Logical Devices, and 3.2.3 Input Modes. Event programming, mentioned in 3.2.3 is what OpenGl uses and it is important that you understand what that means.
3.3Read for general info
3.4Read mostly for general info but read 3.4.1 to see OpenGL display lists and the OpenGL matrix stack. It's important to understand these. Also read about text and fonts in OpenGL (3.4.2-3.4.3)
3.5Read more on display lists as used in modeling
3.6Read for examples of processing mourse events, callbacks, and window management.
3.7Read this for handling menus events.
3.8Read this for general info, but we won't get into this in this course.
3.9Read this - a nice example of an OpenGL application
3.10Read this - you will have to build graphic data structures for Lab #1.
3.11Read about double buffering - this will be used in other labs
3.12Read about program design - this might prove useful in writing your programs.
3.13Read for general information.
4 GEOMETRIC OBJECTS AND TRANSFORMATIONS
In generalThis chapter is very important to understanding 3D computer graphics. Geometric objects, transformation, and coordinate spaces are fundamental to anything graphics-related. A good chunk of it is basic high school geometry; I assume you can read that on your own. I'll go over the more advanced stuff, but I'm assuming you either remember basic geometry or can read the relevant sections of this chapter and pick it up quickly.
4.1Read for basic geometry - dot and cross products are particulary important (4.1.9)
4.2Read for general info - pretty basic (and short) about 3D primitives
4.3V ery important, especially understanding changing coordinate systems (4.3.2) and homogeneous coordinates (4.3.4). We'll be going over some of this in class
4.4Frames (spaces) are important to understand. The book uses the term 'frame' the same way I use 'space' (world frame v. world space). These spaces are important to understand in order to know how OpenGL works.
4.5Important (not difficult) material on representing graphical objects.
4.6Affine transformations are very important for basic graphics. Read this.
4.7Rotation, scale, and translation - very important basic transformations.
4.8Transformations in homogeneous coordinates - very important.
4.9Concatenation of transformations - very important.
4.10OpenGL transformation matrices - putting it all together - very important
4.11Interfaces to 3D applications - read for general info
4.12Quaternions are important - but not for us
5 VIEWING
In generalThis chapter presents important information about 3D viewing, especially the math behind perspective projection and how it's implemented in OpenGL.
5.1Read about 'classical' viewing for terminology.
5.2Read this short section about computer viewing for an overview.
5.3This is an important section that starts to introduce both the math and the OpenGl commands that implement 3D viewing
5.4This is an important section that covers the views and associated math of the viewing pipeline we'll use in this class: perspective and orthogonal.
5.5This presents the OpenGL commands that implement the basic viewing pipeline.
5.6This surveys the hidden-surface removal. Read for general idea and terminology.
5.7Read about interactive mesh displays for general info. We won't be using this in this class.
5.8We won't be using the parallel-projections presented here - just read for the general idea.
5.9This presents perspective projection in more mathematical detail. Read this to understand the math.
5.10Shadows are important in viewing - read about them here. We should get to these towards the end of the quarter.
6 LIGHTING AND SHADING
In generalThis chapter covers shading including the basic light source modeling, illumination calculations, and smooth shading. It's very important to understand the shading parameters so you can control the appearance of a scene without a lot of trial-and-error.
6.1 This section introduces some basic terminology and concepts about lighting. Read 'lightly'.
6.2This chapter presents the basic light source models. It's easy to read - important to understand.
6.3The Phong lighting model is the most fundamental lighting model used in computer graphics. It's not hard - important to understand.
6.4This presents some important vector math used in graphics.
6.5 This covers important methods of polygonal shading.
6.6 Read about recursive subdivision for a sphere for general information. We won't require this in this class but it's an interesting method. Feel free to try it in one of your programs.
6.7Light sources in OpenGL are are important. Read this so you can use it in your programs.
6.8Materials in OpenGL are important to understand.
6.9 This shows how to shade a sphere model. It's a nice example.
6.10Read for general information. This is outside the realm of this class.
7 FROM VERTICES TO FRAGMENTS
In generalThis chapter covers clipping, rasterization, and hidden-surface algorithms. This is good background knowledge for graphics but not much that impacts writing programs in OpenGL. We'll skip most of this chapter, but will cover some of the information on color (7.13) and clipping (7.4-7.7).
7.1Object-based approach versus image-based approach for the rendering pipeline. A z-buffer is object-based; ray-tracing is image-based. Read for general information.
7.2Looks at the 4 main tasks in the viewing pipeline of: modeling, geometry processing, rasterization, fragment processing.
7.3Short recap of clipping before perspective division
7.4Review of line-clipping
7.5And of polygon clipping.
7.6...and clipping other stuff.
7.7...and clipping in 3D.
7.8 review of rasterization - mainly the interpolation we've talked about in class.
7.9Review of Bresenham's line drawing algorithm. Good to know as a basic graphics algorithm.
7.10Looking at polygon rasterization and filling polygons. These are also good, basic algorithms to know.
7.11 Covers various hidden-surface algorithms. All good things to know, but not for this class.
7.12Covers the basics of anti-aliasing - also good to know.
7.13 Color, gamma correction, dithering and halftoning - good stuff - we'll refer to the material on color for this class.
8 DISCRETE TECHNIQUES
In generalCovers buffer (pixel) operations. It is important for texture and decals both of which will be incorporated into lab assignments (probably lab #3).
8.1Introduces the basic idea of buffers.
8.2Discussion the basics of digital images. Good foundational info.
8.3Talks about low-level writing operations for buffers. Too low-level for this class, but good information to know if you're to work in graphics at all.
8.4Talks about buffer operations in OpenGL. This is good to go over. We will be using the Stencil Buffer of OpenGL (as well as the Color and Depth Buffers we have been using).
8.5This goes over an example of the Maxwell triangle and some other simple examples.
8.6This goes over some mapping methods and it's good to know the different types (not for this class).
8.7Covers texture mapping and we will be doing this, probably in lab #3.
8.8Talks about texture mapping in OpenGL. Important for our lab.
8.9Texture generation - can be skipped.
8.10Environmental maps - are interesting, but can be skipped.
8.11Compositing is very useful in computer graphics although I don't think we'll be talking about this in our class.
8.12Multirendering and the accumulation buffer are beyond the scope of this class. You don't need to read this.
8.13Sampling and anti-aliasing are very important in computer graphics, but beyond the scope of this class. You don't need to read this.
9 PROGRAMMABLE SHADERS
In generalThis covers more advanced ways to deal with shading primitives. We may get to some of this at the end of the quarter if we have time. For now, you can ignore this chapter.
10 MODELING AND HIERARCHY
In generalThis covers modeling including hierarchical modeling (10.1-10.6), scene graphs and procedural models. We will use hierarchical models in this class; the other stuff we might cover some of this at the end of the course.
10.1Covers some preliminary information on instances. Read for terminology.
10.2Introduces hierarchical models. Read for general information.
10.3This material on a robot arm, and the next couple of sections, is what we need for lab #2 - if you understand this, lab #2 will be easy.
10.4Hierarchical models are represented as trees. This talks about how to travers a general tree model.
10.5The tree data structure discussed here we won't need, but it's good to read about for understanding more general ways of doing things.
10.6Gives an overview of animating hierarchical models.
10.7Looks at more robust data structures for graphical objects. Good to read if you want to program 'real' graphics applications.
10.8Scene graphs are just a data structure to represent objects in a scene. There are several 'standard' scene graphics (e.g., Open Inventor).
10.9This continues material on scene graphics and presents an API for scene graphs.
10.10Open scene graphics are beyond the scope of this class.
10.11Graphics and the internet are beyond the scope of this class.
10.12other tree structures are beyond the scope of this class.
11 PROCEDURAL MODELS
In generalProcedural models such as hyscially based models and particle systems are beyond the scope of this class. Take CSE683 for this material (and buy my book).
12 CURVES AND SURFACES
In generalCurves and surfaces. We probably won't cover this except for a high-level survey at the end of class.
13 ADVANCED RENDERING
In generalThis covers advanced rendering. We won't cover this except for a high-level survey at the end of class.