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.
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.
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.
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