3D Game Engine Design: A Practical Approach to Real-Time Computer Graphics / Edition 2

Hardcover (Print)
Used and New from Other Sellers
Used and New from Other Sellers
from $17.05
Usually ships in 1-2 business days
(Save 81%)
Other sellers (Hardcover)
  • All (18) from $17.05   
  • New (11) from $55.17   
  • Used (7) from $17.05   


The first edition of 3D Game Engine Design was an international bestseller that sold over 17,000 copies and became an industry standard. In the six years since that book was published, graphics hardware has evolved enormously. Hardware can now be directly controlled through techniques such as shader programming, which requires an entirely new thought process of a programmer.

In a way that no other book can do, this new edition shows step by step how to make a shader-based graphics engine and how to tame this new technology. Much new material has been added, including more than twice the coverage of the essential techniques of scene graph management, as well as new methods for managing memory usage in the new generation of game consoles and portable game players. There are expanded discussions of collision detection, collision avoidance, and physics—all challenging subjects for developers. The mathematics coverage is now focused towards the end of the book to separate it from the general discussion.

As with the first edition, one of the most valuable features of this book is the inclusion of Wild Magic, a commercial quality game engine in source code that illustrates how to build a real-time rendering system from the lowest-level details all the way to a working game. Wild Magic Version 4 consists of over 300,000 lines of code that allows the results of programming experiments to be seen immediately. This new version of the engine is fully shader-based, runs on Windows XP, Mac OS X, and Linux, and is only available with the purchase of the book.

Audience: Professionals or students working in game development, simulation, scientific visualization, or virtual worlds.

Read More Show Less

Product Details

Meet the Author

Dave Eberly is the president of Geometric Tools, Inc. (www.geometrictools.com), a company that specializes in software development for computer graphics, image analysis, and numerical methods. Previously, he was the director of engineering at Numerical Design Ltd. (NDL), the company responsible for the real-time 3D game engine, NetImmerse. He also worked for NDL on Gamebryo, which was the next-generation engine after NetImmerse. His background includes a BA degree in mathematics from Bloomsburg University, MS and PhD degrees in mathematics from the University of Colorado at Boulder, and MS and PhD degrees in computer science from the University of North Carolina at ChapelHill. He is the author of 3D Game Engine Design, 2nd Edition (2006), 3D Game Engine Architecture (2005), Game Physics (2004), and coauthor with Philip Schneider of Geometric Tools for Computer Graphics (2003), all published by Morgan Kaufmann. As a mathematician, Dave did research in the mathematics of combustion, signal and image processing, and length-biased distributions in statistics. He was an associate professor at the University of Texas at San Antonio with an adjunct appointment in radiology at the U.T. Health Science Center at San Antonio. In 1991, he gave up his tenured position to re-train in computer science at the University of North Carolina. After graduating in 1994, he remained for one year as a research associate professor in computer science with a joint appointment in the Department of Neurosurgery, working in medical image analysis. His next stop was the SAS Institute, working for a year on SAS/Insight, a statistical graphics package. Finally, deciding that computer graphics and geometry were his real calling, Dave went to work for NDL (which is now Emergent Game Technologies), then to Magic Software, Inc., which later became Geometric Tools, Inc. Dave's participation in the newsgroup comp.graphics.algorit

Read More Show Less

Table of Contents

  • Preface

  • 1 Introduction

  • 2 The Graphics System
    • 2.1 The Foundation
      • 2.1.1 Coordinate Systems

      • 2.1.2 Handedness and Cross Products

      • 2.1.3 Points and Vectors

    • 2.2 Transformations
      • 2.2.1 Linear Transformations

      • 2.2.2 Affine Transformations

      • 2.2.3 Projective Transformations

    • 2.2.4 Properties of Perspective Projection

    • 2.2.5 Homogeneous Points and Matrices

  • 2.3 Cameras
    • 2.3.1 The Perspective Camera Model

    • 2.3.2 Model or Object Space

    • 2.3.3 World Space

    • 2.3.4 View, Camera, or Eye Space

    • 2.3.5 Clip, Projection, or Homogeneous Space

    • 2.3.6 Window Space

    • 2.3.7 Putting Them All Together

  • 2.4 Culling and Clipping
    • 2.4.1 Object Culling

    • 2.4.2 Back Face Culling

    • 2.4.3 Clipping to the View Frustum

  • 2.5 Rasterizing
    • 2.5.1 Line Segments

    • 2.5.2 Circles

    • 2.5.3 Ellipses

    • 2.5.4 Triangles

  • 2.6 Vertex Attributes
    • 2.6.1 Colors

    • 2.6.2 Lighting and Materials

    • 2.6.3 Textures

    • 2.6.4 Transparency and Opacity

    • 2.6.5 Fog

    • 2.6.6 And Many More

    • 2.6.7 Rasterizing Attributes

  • 2.7 Issues of Software, Hardware, and APIs
    • 2.7.1 A General Discussion

    • 2.7.2 Portability versus Performance

  • 2.8 API Conventions
    • 2.8.1 Matrix Representation and Storage

    • 2.8.2 Matrix Composition

    • 2.8.3 View Matrices

    • 2.8.4 Projection Matrices

    • 2.8.5 Window Handedness

    • 2.8.6 Rotations

    • 2.8.7 Fast Computations using the Graphics API

  • 3 Renderers
  • 3.1 Software Rendering

  • 3.2 Hardware Rendering

  • 3.3 The Fixed-Function Pipeline

  • 3.4 Vertex and Pixel Shaders

  • 3.5 An Abstract Rendering API

  • 4 Special Effects Using Shaders
  • 4.1 Vertex Colors

  • 4.2 Lighting and Materials

  • 4.3 Textures

  • 4.4 Multitextures

  • 4.5 Bump Maps

  • 4.6 Gloss Maps

  • 4.7 Sphere Maps

  • 4.8 Cube Maps

  • 4.9 Refraction

  • 4.10 Planar Reflection

  • 4.11 Planar Shadows

  • 4.12 Projected Textures

  • 4.13 Shadow Maps

  • 4.14 Volumetric Fog

  • 4.15 Skinning

  • 4.16 Miscellaneous
    • 4.16.1 Iridescence

    • 4.16.2 Water Effects

    • 4.16.3 Volumetric Textures

  • 5 Scene Graphs
  • 5.1 The Need for High-Level Data Management

  • 5.2 The Need for Low-Level Data Structures

  • 5.3 Geometric State
    • 5.3.1 Vertices and Vertex Attributes

    • 5.3.2 Transformations

    • 5.3.3 Bounding Volumes

  • 5.4 Render State
    • 5.4.1 Global State

    • 5.4.2 Lights

    • 5.4.3 Effects

  • 5.5 The Update Pass
    • 5.5.1 Geometric State Updates

    • 5.5.2 Render State Updates

  • 5.6 The Culling Pass
    • 5.6.1 Hierarchical Culling

    • 5.6.2 Sorted Culling

  • 5.7 The Drawing Pass
    • 5.7.1 Single-Pass Drawing

    • 5.7.2 Single Effect, Multipass Drawing

    • 5.7.3 Multiple Effect, Multipass Drawing

    • 5.7.4 Caching Data on the Graphics Hardware

    • 5.7.5 Sorting to Reduce State Changes

  • 5.8 Scene Graph Design Issues
    • 5.8.1 Organization Based on Geometric State

    • 5.8.2 Organization Based on Render State

    • 5.8.3 Scene Graph Operations and Threading

    • 5.8.4 The Producer-Consumer Model

  • 6 Scene Graph Compilers
  • 6.1 The Need for Platform-Specific Optimization

  • 6.2 The Need for Reducing Memory Fragmentation

  • 6.3 A Scene Graph as a Dynamic Expression

  • 6.4 Compilation from High-Level to Low-Level Data

  • 6.5 Control of Compilation via Node Tags

  • 7 Memory Management
  • 7.1 Memory Budgets for Game Consoles

  • 7.2 General Concepts for Memory Management
    • 7.2.1 Allocation, Deallocation, and Fragmentation

    • 7.2.2 Sequential-Fit Methods

    • 7.2.3 Buddy-System Methods

    • 7.2.4 Segregated-Storage Methods

  • 7.3 Design Choices
    • 7.3.1 Memory Utilization

    • 7.3.2 Fast Allocation and Deallocation

  • 8 Controller-Based Animation
  • 8.1 Vertex Morphing

  • 8.2 Keyframe Animation

  • 8.3 Inverse Kinematics

  • 8.4 Skin and Bones

  • 8.5 Particle Systems

  • 9 Spatial Sorting
  • 9.1 Spatial Partitioning
    • 9.1.1 Quadtrees and Octrees

    • 9.1.2 BSP Trees

    • 9.1.3 User-Defined Maps

  • 9.2 Node-Based Sorting

  • 9.3 Portals

  • 9.4 Occlusion Culling

  • 10 Level of Detail
  • 10.1 Discrete Level of Detail
    • 10.1.1 Sprites and Billboards

    • 10.1.2 Model Switching

  • 10.2 Continuous Level of Detail
    • 10.2.1 General Concepts

    • 10.2.2 Application to Regular Meshes

    • 10.2.3 Application to General Meshes

  • 10.3 Infinite Level of Detail
    • 10.3.1 General Concepts

    • 10.3.2 Application to Parametric Curves

    • 10.3.3 Application to Parametric Surfaces

  • 11 Terrain
  • 11.1 Data Representations

  • 11.2 Level of Detail for Height Fields

  • 11.3 Terrain Pages and Memory Management

  • 12 Collision Detection
  • 12.1 Static Line-Object Intersections

  • 12.2 Static Object-Object Intersections

  • 12.3 Dynamic Line-Object Intersections
    • 12.3.1 Distance-Based Approach

    • 12.3.2 Intersection-Based Approach

  • 12.4 Dynamic Object-Object Intersections
    • 12.4.1 Distance-Based Approach

    • 12.4.2 Intersection-Based Approach

  • 12.5 Path Finding to Avoid Collisions

  • 13 Physics
  • 13.1 Basic Concepts

  • 13.2 Particle Systems

  • 13.3 Mass-Spring Systems

  • 13.4 Deformable Bodies

  • 13.5 Rigid Bodies

  • 14 Object-Oriented Infrastructure
  • 14.1 Object-Oriented Software Construction

  • 14.2 Style, Naming Conventions, and Namespaces

  • 14.3 Run-Time Type Information

  • 14.4 Templates

  • 14.5 Shared Objects and Reference Counting

  • 14.6 Streaming

  • 14.7 Startup and Shutdown

  • 14.8 An Application Layer

  • 15 Mathematical Topics
  • 15.1 Standard Objects

  • 15.2 Curves

  • 15.3 Surfaces

  • 15.4 Distance Algorithms

  • 15.5 Intersection Algorithms

  • 15.6 Numerical Algorithms

  • 15.7 All About Rotations
    • 15.7.1 Rotation Matrices

    • 15.7.2 Quaternions

    • 15.7.3 Euler Angles

    • 15.7.4 Performance Issues

  • 15.8 The Curse of Nonuniform Scaling

  • Bibliography

  • Index
Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously
Sort by: Showing 1 Customer Reviews
  • Anonymous

    Posted January 14, 2007


    Are you a professional or student working in game development? If you are, then this book is for you. Author David H. Eberly has done an outstanding job of writing a second edition of a book which focuses on the design of the scene graph management system and its associated rendering layer. Eberly, begins this book by discussing the details of a rendering system, including transformations, camera models, culling and clipping, rastering, and issues regarding software versus hardware rendering and about specific graphics application programmer interfaces in use these days. In addition, the author discusses rendering from the perspective of actually writing all of the subsystems for a software renderer. He also takes a look at the essentials of organizing your data as a scene graph. Then, he focuses on specifically designed nodes and subsystems of the scene graph management system. The author then looks at some general concepts you see in attempting to have physical realism in a three-dimensional application. Next, he discusses a lot of mathematical detail for much of the source code you will find in Wild Magic. Then, he takes a brief look at the basic principles of object-oriented design and programming. The author continues by discussing memory management. Finally, he takes a look at a handful of sample shaders and the applications that use them. This most excellent book is very much enhanced, describing the foundations for shader programming and how an engine can support it. Perhaps more importantly, the book is the most comprehensive reference available for the development of shader-based 3D graphics engines!

    Was this review helpful? Yes  No   Report this review
Sort by: Showing 1 Customer Reviews

If you find inappropriate content, please report it to Barnes & Noble
Why is this product inappropriate?
Comments (optional)