1st Edition

Computer Graphics From Pixels to Programmable Graphics Hardware

By Alexey Boreskov, Evgeniy Shikin Copyright 2013
    576 Pages 322 B/W Illustrations
    by Chapman & Hall

    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
    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
    Hierarchical z-buffer
    Priority algorithms
    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
    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
    Binary space partitioning (BSP) tree
    Bounding volume hierarchy (BVH)
    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
    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
    OpenGL ES 2

    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
    Volumetric/layered fog
    Billboards, particle systems, soft particles
    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
    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



    Alexey Boreskov (Moscow State University, Russia) (Author) , Evgeniy Shikin (Moscow State University, Russia) (Author)