Skip to content

Interactive Computer Graphics A Top-Down Approach with Shader-Based OpenGL

Spend $50 to get a free DVD!

ISBN-10: 0132545233

ISBN-13: 9780132545235

Edition: 6th 2012

Authors: Edward Angel, Dave Shreiner

List price: $149.40
Blue ribbon 30 day, 100% satisfaction guarantee!
Out of stock
what's this?
Rush Rewards U
Members Receive:
Carrot Coin icon
XP icon
You have reached 400 XP and carrot coins. That is the daily max!

Customers also bought

Book details

List price: $149.40
Edition: 6th
Copyright year: 2012
Publisher: Addison Wesley
Publication date: 3/31/2011
Binding: Hardcover
Pages: 768
Size: 8.50" wide x 10.50" long x 1.50" tall
Weight: 3.124
Language: English

Edward Angel is a professor of computer science, electrical and computer engineering, and media arts at the University of New Mexico. He holds a PhD from the University of Southern California and a BS in engineering from the California Institute of Technology. He is also the director of Art, Research, Technology, and Science Laboratory (ARTS Lab) and the Arts Technology Center at the University of New Mexico. He is the author of Interactive Computer Graphics and OpenGL: A Primer .

Graphics Systems and Models
Applications of Computer Graphics
Display of Information
Simulation and Animation
User Interfaces
A Graphics System
Pixels and the Frame Buffer
The CPU and the GPU
Output Devices
Input Devices
Physical Input Devices
Logical Devices
Input Modes
Images: Physical and Synthetic
Objects and Viewers
Light and Images
Imaging Models
Imaging Systems
The Pinhole Camera
The Human Visual System
The Synthetic-Camera Model
The Programmer's Interface
The Pen-Plotter Model
Three-Dimensional APIs
A Sequence of Images
The Modeling Rendering Paradigm
Graphics Architectures
Display Processors
Pipeline Architectures
The Graphics Pipeline
Vertex Processing
Clipping and Primitive Assembly
Fragment Processing
Programmable Pipelines
Performance Characteristics
Summary and Notes
Suggested Readings
Graphics Programming
The Sierpinski Gasket
Programming Two-Dimensional Applications
The OpenGL Application Programming Interface
Graphics Functions
The Graphics Pipeline and State Machines
The OpenGL Interface
Coordinate Systems
Primitives and Attributes
Polygon Basics
Polygons in OpenGL
Approximating a Sphere
Curved Objects
RGB Color
Indexed Color
Setting of Color Attributes
The Orthographic View
Two-Dimensional Viewing
Control Functions
Interaction with the Window System
Aspect Ratio and Viewports
The main, display, and init Functions
Program Structure
The Gasket Program
Rendering the Points
The Vertex Shader
The Fragment Shader
Combining the Parts
The initShader Function
Polygons and Recursion
The Three-Dimensional Gasket
Use of Three-Dimensional Points
Use of Polygons in Three Dimensions
Hidden-Surface Removal
Adding Interaction
Using the Pointing Device
Window Events
Keyboard Events
The Idle Callback
Double Buffering
Window Management
Summary and Notes
Suggested Readings
Geometric Objects and Transformations
Scalars, Points, and Vectors
Geometric Objects
Coordinate-Free Geometry
The Mathematical View: Vector and Affine Spaces
The Computer Science View
Geometric ADTs
Affine Sums
Dot and Cross Products
Three-Dimensional Primitives
Coordinate Systems and Frames
Representations and N-Tuples
Change of Coordinate Systems
Example Change of Representation
Homogeneous Coordinates
Example Change in Frames
Working with Representations
Frames in OpenGL
Matrix and Vector Classes
Modeling a Colored Cube
Modeling the Faces
Inward- and Outward-Pointing Faces
Data Structures for Object Representation
The Color Cube
Displaying the Cube
Affine Transformations
Translation, Rotation, and Scaling
Transformations in Homogeneous Coordinates
Concatenation of Transformations
Rotation About a Fixed Point
General Rotation
The Instance Transformation
Rotation About an Arbitrary Axis
Transformation Matrices in OpenGL
Current Transformation Matrices
Rotation, Translation, and Scaling
Rotation About a Fixed Point
Order of Transformations
Spinning of the Cube
Updating in the Display Callback
Uniform Variables
Interfaces to Three-Dimensional Applications
Using Areas of the Screen
A Virtual Trackball
Smooth Rotations
Incremental Rotation
Complex Numbers and Quaternions
Quaternions and Rotation
Summary and Notes
Suggested Readings
Classical and Computer Viewing
Classical Viewing
Orthographic Projections
Axonometric Projections
Oblique Projections
Perspective Viewing
Viewing with a Computer
Positioning of the Camera
Positioning of the Camera Frame
Two Viewing APIs
The Look-At Function
Other Viewing APIs
Parallel Projections
Orthogonal Projections
Parallel Viewing with OpenGL
Projection Normalization
Orthogonal-Projection Matrices
Oblique Projections
An Interactive Viewer
Perspective Projections
Simple Perspective Projections
Perspective Projections with OpenGL
Perspective Functions
Perspective-Projection Matrices
Perspective Normalization
OpenGL Perspective Transformations
Perspective Example
Hidden-Surface Removal
Displaying Meshes
Displaying Meshes as a Surface
Polygon Offset
Walking Through a Scene
Projections and Shadows
Summary and Notes
Suggested Readings
Lighting and Shading
Light and Matter
Light Sources
Color Sources
Ambient Light
Point Sources
Distant Light Sources
The Phong Reflection Model
Ambient Reflection
Diffuse Reflection
Specular Reflection
The Modified Phong Model
Computation of Vectors
Normal Vectors
Angle of Reflection
Polygonal Shading
Flat Shading
Smooth and Gouraud Shading
Phong Shading
Approximation of a Sphere by Recursive Subdivision
Specifying Lighting Parameters
Light Sources
Implementing a Lighting Model
Applying the Lighting Model in the Application
Lighting in the Vertex Shader
Shading of the Sphere Model
Per-Fragment Lighting
Nonphotorealistic Shading
Global Illumination
Summary and Notes
Suggested Readings
From Vertices to Fragments
Basic Implementation Strategies
Four Major Tasks
Geometry Processing
Fragment Processing
Line-Segment Clipping
Cohen-Sutherland Clipping
Liang-Barsky Clipping
Polygon Clipping
Clipping of Other Primitives
Bounding Boxes and Volumes
Curves, Surfaces, and Text
Clipping in the Frame Buffer
Clipping in Three Dimensions
Bresenham's Algorithm
Polygon Rasterization
Inside Outside Testing
OpenGL and Concave Polygons
Fill and Sort
Flood Fill
Hidden-Surface Removal
Object-Space and Image-Space Approaches
Sorting and Hidden-Surface Removal
Scanline Algorithms
Back-Face Removal
The z-Buffer Algorithm
Scan Conversion with the z-Buffer
Depth Sort and the Painter's Algorithm
Display Considerations
Color Systems
The Color Matrix
Gamma Correction
Dithering and Halftoning
Summary and Notes
Suggested Readings
Discrete Techniques
Digital Images
Writing into Buffers
Writing Modes
Writing with XOR
Mapping Methods
Texture Mapping
Two-Dimensional Texture Mapping
Texture Mapping in OpenGL
Two-Dimensional Texture Mapping
Texture Objects
The Texture Array
Texture Coordinates and Samplers
Texture Sampling
Working with Texture Coordinates
Texture Generation
Environment Maps
Reflection Map Example
Bump Mapping
Finding Bump Maps
Bump Map Example
Compositing Techniques
Opacity and Blending
Image Compositing
Blending and Compositing in OpenGL
Antialiasing Revisited
Back-to-Front and Front-to-Back Rendering
Scene Antialiasing and Multisampling
Image Processing
Other Multipass Methods
Sampling and Aliasing
Sampling Theory
Summary and Notes
Suggested Readings
Modeling and Hierarchy
Symbols and Instances
Hierarchical Models
A Robot Arm
Trees and Traversal
A Stack-Based Traversal
Use of Tree Data Structures
Graphical Objects
Methods, Attributes, and Messages
A Cube Object
Implementing the Cube Object
Objects and Hierarchy
Geometric Objects
Scene Graphs
Open Scene Graph
Graphics and the Internet
Hypermedia and HTML
Java and Applets
Interactive Graphics and the Web
Other Tree Structures
CSG Trees
BSP Trees
Quadtrees and Octrees
Summary and Notes
Suggested Readings
Procedural Methods
Algorithmic Models
Physically Based Models and Particle Systems
Newtonian Particles
Independent Particles
Spring Forces
Attractive and Repulsive Forces
Solving Particle Systems
Soft Constraints
A Simple Particle System
Displaying the Particles
Updating Particle Positions
Language-Based Models
Recursive Methods and Fractals
Rulers and Length
Fractal Dimension
Midpoint Division and Brownian Motion
Fractal Mountains
The Mandelbrot Set
Procedural Noise
Summary and Notes
Suggested Readings
Curves and Surfaces
Representation of Curves and Surfaces
Explicit Representation
Implicit Representations
Parametric Form
Parametric Polynomial Curves
Parametric Polynomial Surfaces
Design Criteria
Parametric Cubic Polynomial Curves
Blending Functions
The Cubic Interpolating Patch
Hermite Curves and Surfaces
The Hermite Form
Geometric and Parametric Continuity
Bÿzier Curves and Surfaces
Bÿzier Curves
Bÿzier Surface Patches
Cubic B-Splines
The Cubic B-Spline Curve
B-Splines and Basis
Spline Surfaces
General B-Splines
Recursively Defined B-Splines
Uniform Splines
Nonuniform B-Splines
Catmull-Rom Splines
Rendering Curves and Surfaces
Polynomial Evaluation Methods
Recursive Subdivision of Bÿzier Polynomials
Rendering Other Polynomial Curves by Subdivision
Subdivision of Bÿzier Surfaces
The Utah Teapot
Algebraic Surfaces
Rendering of Surfaces by Ray Casting
Subdivision Curves and Surfaces
Mesh Subdivision
Mesh Generation from Data
Height Fields Revisited
Delaunay Triangulation
Point Clouds
Summary and Notes
Suggested Readings
Advanced Rendering
Going Beyond Pipeline Rendering
Ray Tracing
Building a Simple Ray Tracer
Recursive Ray Tracing
Calculating Intersections
Ray-Tracing Variations
The Rendering Equation
The Radiosity Equation
Solving the Radiosity Equation
Computing Form Factors
Carrying Out Radiosity
Parallel Rendering
Sort-Middle Rendering
Sort-Last Rendering
Sort-First Rendering
Volume Rendering
Volumetric Data Sets
Visualization of Implicit Functions
Isosurfaces and Marching Cubes
Mesh Simplification
Direct Volume Rendering
Assignment of Color and Opacity
Volume Ray Tracing
Texture Mapping of Volumes
Image-Based Rendering
A Simple Example
Summary and Notes
Suggested Readings
Sample Programs
Shader Initialization Function
Application Code
Sierpinski Gasket Program
Application Code
Vertex Shader
Fragment Shader
Recursive Generation of Sierpinski Gasket
Application Code
Vertex Shader
Fragment Shader
Rotating Cube with Rotation in Shader
Application Code
Vertex Shader
Fragment Shader
Perspective Projection
Application Code
Vertex Shader
Fragment Shader
Rotating Shaded Cube
Application Code
Vertex Shader
Fragment Shader
Per-Fragment Lighting of Sphere Model
Application Code
Vertex Shader
Fragment Shader
Rotating Cube with Texture
Application Code
Vertex Shader
Fragment Shader
Figure with Tree Traversal
Application Code
Vertex Shader
Fragment Shader
Teapot Renderer
Application Code
Vertex Shader
Fragment Shader
Vector Spaces
Affine Spaces
Euclidean Spaces
Gram-Schmidt Orthogonalization
Suggested Readings
Matrix Operations
Row and Column Matrices
Change of Representation
The Cross Product
Eigenvalues and Eigenvectors
Vector and Matrix Classes
Suggested Readings
Synopsis of Opengl Functions
Initialization and Window Functions
Vertex Buffer Objects
Setting Attributes and Enabling Features
Texture and Image Functions
State and Buffer Manipulation
Query Functions
GLSL Functions
OpenGL Function Index
Subject Index