3D Game Engine Design : A Practical Approach to Real-Time Computer Graphics, 2/e (Hardcover)

David H. Eberly

  • 出版商: CRC Press
  • 出版日期: 2006-11-03
  • 售價: $1,440
  • 語言: 英文
  • 頁數: 1040
  • 裝訂: Hardcover
  • ISBN: 0122290631
  • ISBN-13: 9780122290633
  • 相關分類: 遊戲設計

立即出貨

買這商品的人也買了...

商品描述

Description

A major revision of the international bestseller on game programming!

Graphics hardware has evolved enormously in the last decade. Hardware can now be directly controlled
through techniques such as shader programming, which requires an entirely new thought process of a
programmer. 3D Game Engine Design, Second Edition shows step-by-step how to make a shader-based graphics engine and how to tame the 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.

 

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