3D game engine architecture - engineering real-time applications with wild magic

* About the Author* Preface*Chapter 1 Introduction*1.1 Drawing a Triangle*1.2 Drawing a Triangle Mesh*1.3 Drawing a Complicated Scene*1.4 Abstraction of Systems*Chapter 2 Core Systems*2.1 The Low-Level System*2.1.1 Basic Data Structures*2.1.2 Encapsulating Platform-Specific Concepts*2.1.3 Endianness*2.1.4 System Time*2.1.5 File Handling*2.1.6 Memory Allocation and Deallocation*2.2 The Mathematics System*2.2.1 Basic Mathematics Functions*2.2.2 Fast Functions*2.2.3 Vectors*2.2.4 Matrices*2.2.5 Quaternions*2.2.6 Lines and Planes*2.2.7 Colors*2.3 The Object System*2.3.1 Run-Time Type Information*2.3.2 Names and Unique Identifiers*2.3.3 Sharing and Smart Pointers*2.3.4 Controllers*2.3.5 Streaming*2.3.6 Cloning*2.3.7 String Trees*2.3.8 Initialization and Termination*Chapter 3 Scene Graphs and Renderers*3.1 The Core Classes*3.1.1 Motivation for the Classes*3.1.2 Spatial Hierarchy Design*3.1.3 Instancing*3.2 Geometric State*3.2.1 Transformations*3.2.2 Bounding Volumes*3.2.3 The Core Classes and Geometric Updates*3.3 Geometric Types*3.3.1 Points*3.3.2 Line Segments*3.3.3 Triangle Meshes*3.3.4 Particles*3.4 Render State*3.4.1 Global State*3.4.2 Lights*3.4.3 Textures*3.4.4 Multitexturing*3.4.5 Effects*3.4.6 The Core Classes and Render State Updates*3.5 Renderers and Cameras*3.5.1 Camera Models*3.5.2 Basic Architecture for Rendering*3.5.3 Single-Pass Drawing*3.5.4 The DrawPrimitive Function*3.5.5 Cached Textures and Vertex Attributes*3.5.6 Global Effects and Multipass Support*Chapter 4 Advanced Scene Graph Topics*4.1 Level of Detail*4.1.1 Billboards*4.1.2 Display of Particles*4.1.3 Discrete Level of Detail*4.1.4 Continuous Level of Detail*4.1.5 Infinite Level of Detail*4.2 Sorting*4.2.1 Binary Space Partitioning Trees*4.2.2 Portals*4.2.3 Sorting Children of a Node*4.2.4 Deferred Drawing*4.3 Curves and Surfaces*4.3.1 Parametric Curves*4.3.2 Parametric Surfaces*4.3.3 Curve Tessellation by Subdivision*4.3.4 Surface Tessellation by Subdivision*4.4 Terrain*4.4.1 Data Representations*4.4.2 Level of Detail*4.4.3 Terrain Pages and Memory Management*4.5 Controllers and Animation*4.5.1 Keyframe Animation*4.5.2 Morphing*4.5.3 Points and Particles*4.5.4 Skin and Bones*4.5.5 Inverse Kinematics*Chapter 5 Advanced Rendering Topics*5.1 Special Effects Using the Fixed-Function Pipeline*5.1.1 Vertex Coloring*5.1.2 Single Textures*5.1.3 Dark Maps*5.1.4 Light Maps*5.1.5 Gloss Maps*5.1.6 Bump Maps*5.1.7 Environment Maps*5.1.8 Projected Textures*5.1.9 Planar Shadows*5.1.10 Planar Reflection*5.2 Special Effects Using Vertex and Pixel Shaders*5.2.1 Scene Graph Support*5.2.2 Renderer Support*5.2.3 Automatic Source Code Generation*Chapter 6 Collision Detection*6.1 Distance-Based Methods*6.1.1 A Plan of Attack*6.1.2 Root Finding Using Newton's Method*6.1.3 Root Finding Using Bisection*6.1.4 Hybrid Root Finding*6.1.5 An Abstract Interface for Distance Calculations*6.2 Intersection-Based Methods*6.2.1 An Abstract Interface for Intersection Queries*6.3 Line-Object Intersection*6.3.1 Intersections between Linear Components and Triangles*6.3.2 Intersections between Linear Components and Bounding Volumes*6.3.3 Picking*6.3.4 Staying on Top of Things*6.3.5 Staying Out of Things*6.4 Object-Object Intersection*6.4.1 Collision Groups*6.4.2 Hierarchical Collision Detection*6.4.3 Spatial and Temporal Coherence*Chapter 7 Physics*7.1 Numerical Methods for Solving Differential Equations*7.1.1 Euler's Method*7.1.2 Midpoint Method*7.1.3 Runge-Kutta Fourth-Order Method*7.1.4 Implicit Equations and Methods*7.2 Particle Physics*7.3 Mass-Spring Systems*7.3.1 Curve Masses*7.3.2 Surface Masses*7.3.3 Volume Masses*7.3.4 Arbitrary Configurations*7.4 Deformable Bodies*7.5 Rigid Bodies*7.5.1 The Rigid Body Class*7.5.2 Computing the Inertia Tensor*Chapter 8 Applications*8.1 Abstraction of the Application*8.1.1 Processing Command Line Parameters*8.1.2 The Application Class*8.1.3 The ConsoleApplication Class*8.1.4 TheWindowApplication Class*8.1.5 TheWindowApplication3 Class*8.2 Sample Applications*8.2.1 BillboardNode Sample*8.2.2 BspNode Sample*8.2.3 CachedArray Sample*8.2.4 Castle Sample*8.2.5 ClodMesh Sample*8.2.6 Collision Sample*8.2.7 InverseKinematics Sample*8.2.8 Portals Sample*8.2.9 ScreenPolygon Sample*8.2.10 SkinnedBiped Sample*8.2.11 SortFaces Sample*8.2.12 Terrain Sample*8.3 Sample Tools*8.3.1 3dsToWmof Importer*8.3.2 Maya Exporter*8.3.3 BmpToWmif Converter*8.3.4 WmifToBmp Converter*8.3.5 ScenePrinter Tool*8.3.6 SceneTree Tool*8.3.7 SceneViewer Tool*Appendix A Coding Conventions* A.1 File Naming and Organization* A.2 Comment Preamble and Separators* A.3 White Space* A.3.1 Indentation* A.3.2 Blank Lines* A.3.3 Function Declarators* A.3.4 Constructor Initializers* A.3.5 Function Calls* A.3.6 Conditionals* A.4 Braces* A.5 Pointer Types* A.6 Identifier Names* A.6.1 Variables* A.6.2 Classes and Functions* A.6.3 Enumerations* A.7 C++ Exceptions* A.8 Header File Organization* A.8.1 Include Guards and Nested Header Files* A.8.2 Minimizing Compilation Time* Bibliography* Index* About the CD-ROM