3rd Edition

Essential Mathematics for Games and Interactive Applications

By James M. Van Verth, Lars M. Bishop Copyright 2016
    624 Pages 250 B/W Illustrations
    by A K Peters/CRC Press

    Expert Guidance on the Math Needed for 3D Game Programming
    Developed from the authors’ popular Game Developers Conference (GDC) tutorial, Essential Mathematics for Games and Interactive Applications, Third Edition illustrates the importance of mathematics in 3D programming. It shows you how to properly animate, simulate, and render scenes and discusses the mathematics behind the processes.

    New to the Third Edition
    Completely revised to fix errors and make the content flow better, this third edition reflects the increased use of shader graphics pipelines, such as in DirectX 11, OpenGL ES (GLES), and the OpenGL Core Profile. It also updates the material on real-time graphics with coverage of more realistic materials and lighting.

    The Foundation for Successful 3D Programming
    The book covers the low-level mathematical and geometric representations and algorithms that are the core of any game engine. It also explores all the stages of the rendering pipeline. The authors explain how to represent, transform, view, and animate geometry. They then focus on visual matters, specifically the representation, computation, and use of color. They also address randomness, intersecting geometric entities, and physical simulation.

    An Introduction to Creating Real and Active Virtual Worlds
    This updated book provides you with a conceptual understanding of the mathematics needed to create 3D games as well as a practical understanding of how these mathematical bases actually apply to games and graphics. It not only includes the theoretical mathematical background but also incorporates many examples of how the concepts are used to affect how a game looks and plays.

    Web Resource
    A supplementary website contains a collection of source code, supporting libraries, and interactive demonstrations that illustrate the concepts and enable you to experiment with animation and simulation applications. The site also includes slides and notes from the authors’ GDC tutorials.

    Representing Real Numbers
    Preliminary Concepts
    Floating-Point Numbers
    IEEE 754 Floating-Point Standard
    Real-World Floating Point
    Code

    Vectors and Points
    Vectors
    Points
    Lines
    Planes
    Polygons and Triangles

    Linear Transformations and Matrices
    Linear Transformations
    Matrices
    Systems of Linear Equations
    Matrix Inverse
    Determinant
    Eigenvalues and Eigenvectors

    Affine Transformations
    Affine Transformations
    Standard Affine Transformations
    Using Affine Transformations
    Object Hierarchies

    Orientation Representation
    Rotation Matrices
    Euler Angles
    Axis–Angle Representation
    Quaternions

    Interpolation
    Interpolation of Position
    Interpolation of Orientation
    Sampling Curves
    Controlling Speed along a Curve
    Camera Control

    Viewing and Projection
    View Frame and View Transformation
    Projective Transformation
    Culling and Clipping
    Screen Transformation
    Picking
    Management of Viewing Transformations

    Geometry and Programmable Shading
    Color Representation
    Points and Vertices
    Surface Representation
    Rendering Pipeline
    Shaders
    Vertex Shaders
    Fragment Shaders
    Basic Coloring Methods
    Texture Mapping
    Texture Coordinates
    The Steps of Texturing
    Limitations of Static Shading

    Lighting
    Basics of Light Approximation
    Measuring Light
    Types of Light Sources
    Surface Materials and Light Interaction
    Lighting and Shading
    Textures and Lighting
    Advanced Lighting

    Rasterization
    Displays and Framebuffers
    Conceptual Rasterization Pipeline
    Determining the Fragments: Pixels Covered by a Triangle
    Determining Visible Geometry
    Computing Fragment Shader Inputs
    Rasterizing Textures
    From Fragments to Pixels

    Random Numbers
    Probability
    Determining Randomness
    Random Number Generators
    Special Applications

    Intersection Testing
    Closest Point and Distance Tests
    Object Intersection
    A Simple Collision System

    Rigid-Body Dynamics
    Linear Dynamics
    Numerical Integration
    Rotational Dynamics
    Collision Response
    Efficiency

    Biography

    James M. Van Verth is a software engineer at Google, where he works on GPU support for the Skia 2D Graphics Library. He has worked for Insomniac Games, NVIDIA, and Red Storm Entertainment and, for the past 17 years, he has been a regular speaker at GDC, teaching the tutorials "Math for Game Programmers" and "Physics for Game Programmers." He received a BA in math/computer science from Dartmouth College, an MS in computer science from the State University of New York at Buffalo, and an MS in computer science from the University of North Carolina at Chapel Hill.

    Lars M. Bishop is an engineer in the Handheld Developer Technologies group at NVIDIA. Prior to joining NVIDIA, he was the chief technology officer at Numerical Design Limited, leading the development of the Gamebryo3D cross-platform game engine. He received a BS in math/computer science from Brown University and an MS in computer science from the University of North Carolina at Chapel Hill.

    Praise for Previous Editions:
    "It’s the book with all the math you need for games."
    —Neil Kirby, Researcher, Alcatel-Lucent

    "Even though I’ve worked with these systems for years, this book showed me new ways of looking at several topics that make them easier to remember and use. For someone new to 3D programming, it is extremely useful—it gives them a solid background in pretty much every area they need to understand."
    —Peter Lipson, Toys for Bob, Inc.