Introduction to Computer Graphics : A Practical Learning Approach book cover
1st Edition

Introduction to Computer Graphics
A Practical Learning Approach

ISBN 9781439852798
Published October 17, 2014 by Chapman and Hall/CRC
422 Pages 204 B/W Illustrations

FREE Standard Shipping
SAVE $21.00
was $105.00
USD $84.00

Prices & shipping based on shipping country


Book Description

Teach Your Students How to Create a Graphics Application

Introduction to Computer Graphics: A Practical Learning Approach guides students in developing their own interactive graphics application. The authors show step by step how to implement computer graphics concepts and theory using the EnvyMyCar (NVMC) framework as a consistent example throughout the text. They use the WebGL graphics API to develop NVMC, a simple, interactive car racing game.

Each chapter focuses on a particular computer graphics aspect, such as 3D modeling and lighting. The authors help students understand how to handle 3D geometric transformations, texturing, complex lighting effects, and more. This practical approach leads students to draw the elements and effects needed to ultimately create a visually pleasing car racing game. The code is available at


  • Puts computer graphics theory into practice by developing an interactive video game
  • Enables students to experiment with the concepts in a practical setting
  • Uses WebGL for code examples
  • Requires knowledge of general programming and basic notions of HTML and JavaScript
  • Provides the software and other materials on the book’s website

Software development does not require installation of IDEs or libraries, only a text editor.

Table of Contents

What Computer Graphics Is
Applications Domains and Areas of Computer Graphics
Color and Images
Algorithms to Create a Raster Image from a 3D Scene

The First Steps
The Application Programming Interface
The WebGL Rasterization-Based Pipeline
Programming the Rendering Pipeline: Your First Rendering
WebGL Supporting Libraries

How a 3D Model Is Represented
Polygonal meshes
Implicit surfaces
Parametric surfaces
Constructive solid geometry (CSG)
Subdivision surfaces
Data Structures for Polygon Meshes
The First Code: Making and Showing Simple Primitives

Geometric Transformations
Geometric entities
Basic geometric transformations
Affine transformations
Rotations in Three Dimensions
Viewing transformations
Transformations in the Pipeline
Upgrade your client: Our First 3D Client
The Code
Handling the Transformations Matrices with a Matrix Stack
Manipulating the View and the Objects
Upgrade your client: Create the Observer Camera

Turning Vertices into Pixels
Hidden Surface Removal
From Fragments to Pixels

Lighting and Shading
Light and Matter Interaction
Radiometry in a Nutshell
Reectance and BRDF
The Rendering Equation
Evaluate the Rendering Equation
Computing the Surface Normal
Light Source Types
Phong Illumination Model
Shading Techniques
Advanced Reection Models

Introduction: Do We Need Texture Mapping?
Basic Concepts
Texture Filtering: from per-Fragment Texture Coordinates to per-Fragment Color
Perspective Correct Interpolation: From per-Vertex to per-Fragment Texture Coordinates
Upgrade Your Client: Add Textures to the Terrain, Street and Building
Upgrade Your Client: Add the Rear Mirror
Texture Coordinates Generation and Environment Mapping
Texture Mapping for Adding Detail to Geometry
Notes on Mesh Parametrization
3D Textures and Their Use

The Shadow Phenomenon
Shadow Mapping
Upgrade Your Client: Add Shadows
Shadow Mapping Artifacts and Limitations
Shadow Volumes

Image-Based Impostors
Ray-Traced Impostors

Advanced Techniques
Image Processing
Ambient Occlusion
Deferred Shading
Particle Systems

Global Illumination
Ray Tracing
Multi-Pass Algorithms

Appendix A: NVMC Class
Appendix B: Properties of Vector Products



View More


"The book is presented in a very accessible fashion. The authors give many examples illustrating the notations and problems considered, making the learning easier. Every chapter ends with exercises, both theoretical and programming. The book is suitable for upper-level computer science/math/physics undergraduate students with at least basic programming skills and at least elementary understanding of linear algebra and calculus."
—Krzystof Gdawiec, in Zentralblatt MATH 1308, 2015