1st Edition
Computer Graphics From Pixels to Programmable Graphics Hardware
Complete Coverage of the Current Practice of Computer Graphics
Computer Graphics: From Pixels to Programmable Graphics Hardware explores all major areas of modern computer graphics, starting from basic mathematics and algorithms and concluding with OpenGL and real-time graphics. It gives students a firm foundation in today’s high-performance graphics.
Up-to-Date Techniques, Algorithms, and API
The book includes mathematical background on vectors and matrices as well as quaternions, splines, curves, and surfaces. It presents geometrical algorithms in 2D and 3D for spatial data structures using large data sets. Although the book is mainly based on OpenGL 3.3, it also covers tessellation in OpenGL 4.0, contains an overview of OpenGL ES 2.0, and discusses the new WebGL, which allows students to use OpenGL with shaders directly in their browser. In addition, the authors describe a variety of special effects, including procedural modeling and texturing, fractals, and non-photorealistic rendering. They also explain the fundamentals of the dominant language (OpenCL) and platform (CUDA) of GPGPUs.
Web Resource
On the book’s CRC Press web page, students can download many ready-to-use examples of C++ code demonstrating various effects. C++ wrappers for basic OpenGL entities, such as textures and programs, are also provided.
In-Depth Guidance on a Programmable Graphics Pipeline
Requiring only basic knowledge of analytic geometry, linear algebra, and C++, this text guides students through the OpenGL pipeline. Using one consistent example, it leads them step by step from simple rendering to animation to lighting and bumpmapping.
Key Features
- Covers the main aspects of modern computer graphics
- Explains how to create various special effects using OpenGL
- Describes a wide range of current topics, such as tessellation, spherical harmonics, and geometric shaders
- Contains practical exercises and examples as well as numerous illustrations, including several color images
- Offers full, cross-platform source code and examples on the book’s CRC Press web page
Figure slides available upon qualifying course adoption
Introduction: Basic Concepts
Coordinate spaces, transformations
Graphics pipeline
Working with the windowing system
Colors. Color models
Raster algorithms
Hidden surface removal
Lighting models and shading
Transforms in 2D
Vectors and matrices
Transforms in 2D
Basic linear transformations
Homogeneous coordinates
Geometric Algorithms in 2D
Line from two points
Classification of a point relative to the line
Classification of a circle relative to the line
Classification of an axis-aligned bounding box (AABB) relative to the line
Computing the area of triangle and polygon
Intersection of two lines
Intersection of two line segments
Closest point on the line to the given point
Distance from point to line segment
Checking whether the given polygon is convex
Check whether the point lies inside the given polygon
Clipping line segment to a convex polygon, Cyrus-Beck algorithm
Clipping a polygon: Sutherland-Hodgman algorithm
Clipping a polygon to a convex polygon
Barycentric coordinates
Transformations in 3D, Projections, Quaternions
3D vectors and matrices. Dot and vector (cross) products
Linear transformations—scale, reflection, rotation, and shear
Reflection relative to a plane
Rotation around an arbitrary vector (direction)
Euler transformation
Translation, affine transformation and homogeneous coordinates
Rigid-body transformation
Normal transformation
Projections
Coordinate systems in 3D, translations between different coordinate systems
Quaternions: Representation of orientation in 3D using quaternions, quaternion interpolation
Basic Raster Algorithms
Raster grid, connectivity of raster grid, 4-connectivity, and 8-connectivity
Bresenheim’s line algorithm
Bresenheim’s circle algorithm
Triangle filling
Flood fill algorithm
Color and Color Models
CIEXY Z color space
RGB color space
CMY and CMYK color spaces
HSV and HSL color spaces
Gamma correction
Y uv and Y CBCR color spaces
Perceptually uniform color spaces, L*u*v* and L*a*b* color spaces
sRGB color space
Basic freeglut and GLEW for OpenGL Rendering
freeglut initialization
Window creation
Processing events
Using the GLEW library
Wrapping freeglut in a C++ class
Hidden Surface Removal
Basic notions
Ray casting
z-buffer
Hierarchical z-buffer
Priority algorithms
Portals
Potentially visible sets (PVS), computing PVS via portals
Hardware occlusion queries and their usage
Modern OpenGL: The Beginning
History of OpenGL
Main concepts of OpenGL
Programmable pipeline
Our first OpenGL program
First OpenGL program using C++ classes
Parameter interpolation
Matrix operations
Rotating the object by mouse
Working with meshes
Working with textures
Instancing
Framebuffer object and rendering into a texture
Point sprite in OpenGL
Working with Large 2D/3D Data Sets
Bounding volumes
Regular grids
Nested (hierarchical) grids
Quad-trees and Oct-trees
kD-tree
Binary space partitioning (BSP) tree
Bounding volume hierarchy (BVH)
R-trees
Mixed structures
Curves and Surfaces: Geometric Modeling
Representation of curves and surfaces
Elements of differential geometry, tangent space, curvature
Bezier and Hermite curves and surfaces
Interpolation
Splines
Surfaces of revolution
Subdivision of curves and surfaces
Basics of Animation
Coordinates interpolation
Orientation interpolation
Key-frame animation
Skeletal animation
Path following
Lighting Models
Diffuse (Lambert) model
Phong model
Blinn-Phong model
Ward isotropic model
Minnaert lighting
Lommel-Seeliger lighting
Rim lighting
Distance attenuation
Reflection, Fresnel coefficient, and its approximations
Strauss lighting model
Anisotropic lighting
Bidirectional reflection distribution function (BRDF)
Oren-Nayar model
Cook-Torrance model
Ashikhmin-Shirley model
Image-based lighting (IBL)
Spherical harmonics and their usage for lighting
Advanced OpenGL
Implementation of lighting models
Geometry shaders
Transform feedback
Multiple render targets (MRT)
Uniform blocks and uniform buffers
Tessellation
OpenGL ES 2
WebGL
GPU Image Processing
Sampling, aliasing, filters
Sepia effect
Effects based on color transformations
Edge detect filters
Emboss filter
Blur filters, Gaussian blur, separable filters
Old-film effect
Sharpness filter
Image denoising, bilateral filter
Special Effects in OpenGL
Reflections
Volumetric/layered fog
Billboards, particle systems, soft particles
Bumpmapping
Reflection and refraction, environment mapping
Fur rendering
Parallax, relief and cone step mapping
Sky rendering, Perez all-weather model
Screen-space ambient occlusion (SSAO)
Modeling depth of field
High dynamic range (HDR) rendering
Realistic water rendering
Deferred rendering
Light prepass rendering
Ambient cubes
Reflective shadow maps
Splatting indirect illumination
Basics of GPGPU
What is GPGPU
Basics of OpenCL
Basics of CUDA
Basics of linear algebra in OpenCL
OpenCL—OpenGL interoperability
Elements of Procedural Texturing and Modeling
Fractals, Mandelbrot, and Julia sets
Fractal mountains
L-systems
Perlin noise, turbulence, fBm
Modeling marble, water, clouds with Perlin noise
Cellular textures
Non-Photorealistic Rendering
Cartoon rendering
Extended cartoon rendering
Gooch lighting model
Watercolor rendering
Bibliography