Computer Graphics

Book description

This text explores all major areas of modern computer graphics, starting from basic mathematics and algorithms and concluding with OpenGL and real-time graphics. Requiring only basic knowledge of analytic geometry, linear algebra, and C++, the book guides students through the OpenGL pipeline and gives them a firm foundation in today's high-performance graphics. Using one consistent example, it leads them step by step from simple rendering to animation to lighting and bumpmapping. Source code and examples are available on the book's CRC Press web page.

Table of contents

  1. Cover
  2. Half Title
  3. Series Page
  4. Title Page
  5. Copyright Page
  6. Contents
  7. Foreword
  8. List of Figures
  9. List of Tables
  10. 1 Introduction: Basic concepts
    1. 1.1 Coordinate spaces, transformations
    2. 1.2 Graphics pipeline
    3. 1.3 Working with the windowing system
    4. 1.4 Colors: Color models
    5. 1.5 Raster algorithms
    6. 1.6 Hidden surface removal
    7. 1.7 Lighting models and shading
  11. 2 Transforms in 2D
    1. 2.1 Vectors and matrices
    2. 2.2 Transforms in 2D
    3. 2.3 Basic linear transformations
      1. 2.3.1 Scale transformation
      2. 2.3.2 Reflect transformation
      3. 2.3.3 Rotate transformation
      4. 2.3.4 Shear transformation
      5. 2.3.5 Composite transformations
    4. 2.4 Homogeneous coordinates
  12. 3 Geometric algorithms in 2D
    1. 3.1 Line from two points
    2. 3.2 Classification of a point relative to the line
    3. 3.3 Classification of a circle relative to the line
    4. 3.4 Classification of an Axis-Aligned Bounding Box (AABB) relative to the line
    5. 3.5 Computing the area of triangle and polygon
    6. 3.6 Intersection of two lines
    7. 3.7 Intersection of two line segments
    8. 3.8 Closest point on the line to the given point
    9. 3.9 Distance from point to line segment
    10. 3.10 Checking whether the given polygon is convex
    11. 3.11 Check whether the point lies inside the given polygon
    12. 3.12 Clipping line segment to a convex polygon, Cyrus-Beck algorithm
    13. 3.13 Clipping a polygon: Sutherland-Hodgman algorithm
    14. 3.14 Clipping a polygon to a convex polygon
    15. 3.15 Barycentric coordinates
  13. 4 Transformations in 3D, projections, quaternions
    1. 4.1 3D vectors and matrices: Dot and vector (cross) products
    2. 4.2 Linear transformations – scale, reflection, rotation and shear
    3. 4.3 Reflection relative to a plane
    4. 4.4 Rotation around an arbitrary vector (direction)
    5. 4.5 Euler transformation
    6. 4.6 Translation, affine transformation and homogeneous coordinates
    7. 4.7 Rigid-body transformation
    8. 4.8 Normal transformation
    9. 4.9 Projections
      1. 4.9.1 Parallel (orthographic) projection
      2. 4.9.2 Perspective projection
    10. 4.10 Coordinate systems in 3D, translations between different coordinate systems
    11. 4.11 Quaternions: Representation of orientation in 3D using quaternions, quaternion interpolation
  14. 5 Basic raster algorithms
    1. 5.1 Raster grid, connectivity of raster grid, 4-connectivity and 8-connectivity
    2. 5.2 Bresenheim’s line algorithm
    3. 5.3 Bresenheim’s circle algorithm
    4. 5.4 Triangle filling
    5. 5.5 Flood fill algorithm
  15. 6 Color and color models
    1. 6.1 CIEXY Z color space
    2. 6.2 RGB color space
    3. 6.3 CMY and CMYK color spaces
    4. 6.4 HSV and HSL color spaces
      1. 6.4.1 HSV color model
      2. 6.4.2 HSL color model
    5. 6.5 Gamma correction
    6. 6.6 Yuv and YCBCR color spaces
      1. 6.6.1 Y′uυ color space
      2. 6.6.2 Y′CbCr color space
    7. 6.7 Perceptually uniform color spaces, L*u*v* and L*a*b* color spaces
    8. 6.8 sRGB color space
  16. 7 Basics freeglut and GLEW for OpenGL rendering
    1. 7.1 freeglut initialization
    2. 7.2 Window creation
    3. 7.3 Processing events
    4. 7.4 Using the GLEW library
    5. 7.5 Wrapping freeglut in a C++ class
  17. 8 Hidden surface removal
    1. 8.1 Basic notions
      1. 8.1.1 Front-facing and back-facing polygons
      2. 8.1.2 Depth complexity
      3. 8.1.3 Coherence
      4. 8.1.4 Occluders
    2. 8.2 Ray casting
    3. 8.3 z-buffer
    4. 8.4 Hierarchical z-buffer
    5. 8.5 Priority algorithms
      1. 8.5.1 Painter’s algorithm
      2. 8.5.2 Using BSP-trees for HSR
    6. 8.6 Portals
    7. 8.7 Potentially-Visible Sets (PVS), computing PVS via portals
    8. 8.8 Hardware occlusion queries and their usage
  18. 9 Modern OpenGL: The beginning
    1. 9.1 History of OpenGL
    2. 9.2 Main concepts of OpenGL
    3. 9.3 Programmable pipeline
      1. 9.3.1 Vertex processing
      2. 9.3.2 Rasterization
      3. 9.3.3 Fragment processing
      4. 9.3.4 Per-fragment operations
    4. 9.4 Our first OpenGL program
    5. 9.5 First OpenGL program using C++ classes
    6. 9.6 Parameter interpolation
    7. 9.7 Matrix operations
    8. 9.8 Rotating the object by mouse
    9. 9.9 Working with meshes
    10. 9.10 Working with textures
    11. 9.11 Instancing
    12. 9.12 Framebuffer object and rendering into a texture
    13. 9.13 Point sprite in OpenGL
  19. 10 Working with large 2D/3D data sets
    1. 10.1 Bounding volumes
      1. 10.1.1 Axis-Aligned Bounding Box (AABB)
      2. 10.1.2 Sphere
      3. 10.1.3 k-DOP
      4. 10.1.4 Oriented Bounding Box (OBB)
    2. 10.2 Regular grids
    3. 10.3 Nested (hierarchical) grids
    4. 10.4 Quad-trees and Oct-trees
    5. 10.5 kD-tree
    6. 10.6 Binary Space Partitioning (BSP) tree
    7. 10.7 Bounding Volume Hierarchy (BVH)
    8. 10.8 R-trees
    9. 10.9 Mixed structures
  20. 11 Curves and surfaces: Geometric modeling
    1. 11.1 Representation of curves and surfaces
    2. 11.2 Elements of differential geometry, tangent space, curvature
      1. 11.2.1 Differential geometry of curves
      2. 11.2.2 Differential geometry of surfaces
    3. 11.3 Bezier and Hermite curves and surfaces
      1. 11.3.1 Bezier curves
      2. 11.3.2 Hermite curves
      3. 11.3.3 Bezier surfaces
      4. 11.3.4 Hermite surfaces
    4. 11.4 Interpolation
    5. 11.5 Splines
      1. 11.5.1 B-splines
      2. 11.5.2 NURBS
      3. 11.5.3 Catmull-Rom splines
    6. 11.6 Surfaces of revolution
    7. 11.7 Subdivision of curves and surfaces
      1. 11.7.1 Curve subdivision
      2. 11.7.2 Surface subdivision
  21. 12 Basics of animation
    1. 12.1 Coordinates interpolation
    2. 12.2 Orientation interpolation
    3. 12.3 Key-frame animation
    4. 12.4 Skeletal animation
    5. 12.5 Path following
  22. 13 Lighting models
    1. 13.1 Diffuse (Lambert) model
    2. 13.2 Phong model
    3. 13.3 Blinn-Phong model
    4. 13.4 Ward isotropic model
    5. 13.5 Minnaert lighting
    6. 13.6 Lommel-Seeliger lighting
    7. 13.7 Rim lighting
    8. 13.8 Distance attenuation
    9. 13.9 Reflection, Fresnel coefficient and its approximations
    10. 13.10 Strauss lighting model
    11. 13.11 Anisotropic lighting
      1. 13.11.1 Ward anisotropic model
    12. 13.12 Bidirectional Reflection Distribution Function (BRDF)
    13. 13.13 Oren-Nayar model
    14. 13.14 Cook-Torrance model
    15. 13.15 Ashikhmin-Shirley model
    16. 13.16 Image-Based Lighting (IBL)
    17. 13.17 Spherical harmonics and their usage for lighting
  23. 14 Advanced OpenGL
    1. 14.1 Implementation of lighting models
      1. 14.1.1 Lambert model
      2. 14.1.2 Phong lighting model
      3. 14.1.3 Blinn-Phong lighting model
      4. 14.1.4 Strauss lighting model
      5. 14.1.5 Normalized Phong and Blinn-Phong models
      6. 14.1.6 Oren-Nayar lighting model
      7. 14.1.7 Cook-Torrance lighting model
      8. 14.1.8 Ashikhmin-Shirley lighting model
    2. 14.2 Geometry shaders
    3. 14.3 Transform feedback
    4. 14.4 Multiple Render Targets (MRT)
    5. 14.5 Uniform blocks and uniform buffers
    6. 14.6 Tessellation
    7. 14.7 OpenGL ES 2
    8. 14.8 WebGL
  24. 15 GPU image processing
    1. 15.1 Sampling, aliasing, filters
    2. 15.2 Sepia effect
    3. 15.3 Effects based on color transformations
    4. 15.4 Edge detect filters
    5. 15.5 Emboss filter
    6. 15.6 Blur filters, Gaussian blur, separable filters
    7. 15.7 Old-film effect
    8. 15.8 Sharpness filter
    9. 15.9 Image denoising, bilateral filter
  25. 16 Special effects in OpenGL
    1. 16.1 Reflections
    2. 16.2 Volumetric/Layered fog
    3. 16.3 Billboards, particle systems, soft particles
    4. 16.4 Bumpmapping
    5. 16.5 Reflection and refraction, environment mapping
    6. 16.6 Fur rendering
    7. 16.7 Parallax, relief and cone step mapping
    8. 16.8 Sky rendering, Perez all-weather model
    9. 16.9 Screen-Space Ambient Occlusion (SSAO)
    10. 16.10 Modeling depth of field
    11. 16.11 High Dynamic Range (HDR) rendering
    12. 16.12 Realistic water rendering
    13. 16.13 Deferred rendering
    14. 16.14 Light prepass rendering
    15. 16.15 Ambient cubes
    16. 16.16 Reflective shadow maps
    17. 16.17 Splatting indirect illumination
  26. 17 Basics of GPGPU
    1. 17.1 What is GPGPU?
    2. 17.2 Basics of OpenCL
    3. 17.3 Basics of CUDA
    4. 17.4 Basics of linear algebra in OpenCL
    5. 17.5 OpenCL – OpenGL interoperability
  27. 18 Elements of procedural texturing and modeling
    1. 18.1 Fractals, Mandelbrot and Julia sets
    2. 18.2 Fractal mountains
    3. 18.3 L-systems
    4. 18.4 Perlin noise, turbulence, fBm
    5. 18.5 Modeling marble, water, clouds with Perlin noise
    6. 18.6 Cellular textures
  28. 19 Non-Photorealistic Rendering (NPR)
    1. 19.1 Cartoon rendering
    2. 19.2 Extended cartoon rendering
    3. 19.3 Gooch lighting model
    4. 19.4 Watercolor rendering
  29. Index

Product information

  • Title: Computer Graphics
  • Author(s): Alexey Boreskov, Evgeniy Shikin
  • Release date: October 2013
  • Publisher(s): Chapman and Hall/CRC
  • ISBN: 9781482215571