3D Game Engine Design : A Practical Approach to Real-Time Computer Graphics, 2/e (Hardcover)
暫譯: 3D 遊戲引擎設計:實用的即時電腦圖形方法,第二版(精裝本)

David H. Eberly

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

相關主題

商品描述

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

商品描述(中文翻譯)

**描述**
國際暢銷書《遊戲程式設計》的重大修訂!
在過去十年中,圖形硬體已經有了巨大的進步。硬體現在可以通過著色器程式設計等技術直接控制,這需要程式設計師全新的思維過程。《3D遊戲引擎設計(第二版)》逐步展示了如何製作基於著色器的圖形引擎以及如何駕馭這項新技術。新增了大量材料,包括對場景圖管理的基本技術的覆蓋面增加了兩倍,以及在新一代遊戲主機和便攜式遊戲機中管理記憶體使用的新方法。對碰撞檢測、碰撞避免和物理學的討論也有所擴展——這些都是開發者面臨的挑戰性主題。

**目錄**
**前言**
**1 介紹**
**2 圖形系統**
2.1 基礎
2.1.1 坐標系統
2.1.2 方向性和叉積
2.1.3 點和向量
2.2 變換
2.2.1 線性變換
2.2.2 仿射變換
2.2.3 投影變換
2.2.4 透視投影的特性
2.2.5 齊次點和矩陣
2.3 相機
2.3.1 透視相機模型
2.3.2 模型或物件空間
2.3.3 世界空間
2.3.4 視圖、相機或眼睛空間
2.3.5 剪裁、投影或齊次空間
2.3.6 窗口空間
2.3.7 將它們全部結合在一起
2.4 剔除和剪裁
2.4.1 物件剔除
2.4.2 背面剔除
2.4.3 剪裁到視錐體
2.5 光柵化
2.5.1 線段
2.5.2 圓形
2.5.3 橢圓形
2.5.4 三角形
2.6 頂點屬性
2.6.1 顏色
2.6.2 照明和材質
2.6.3 紋理
2.6.4 透明度和不透明度
2.6.5 霧
2.6.6 還有許多其他
2.6.7 光柵化屬性
2.7 軟體、硬體和API的問題
2.7.1 一般討論
2.7.2 可攜性與性能
2.8 API慣例
2.8.1 矩陣表示和存儲
2.8.2 矩陣組合
2.8.3 視圖矩陣
2.8.4 投影矩陣
2.8.5 窗口方向性
2.8.6 旋轉
2.8.7 使用圖形API進行快速計算

**3 渲染器**
3.1 軟體渲染
3.2 硬體渲染
3.3 固定功能管線
3.4 頂點和像素著色器
3.5 抽象渲染API

**4 使用著色器的特殊效果**
4.1 頂點顏色
4.2 照明和材質
4.3 紋理
4.4 多重紋理
4.5 凹凸貼圖
4.6 光澤貼圖
4.7 球面貼圖
4.8 立方體貼圖
4.9 折射
4.10 平面反射
4.11 平面陰影
4.12 投影紋理
4.13 陰影貼圖
4.14 體積霧
4.15 皮膚綁定
4.16 其他
4.16.1 彩虹色
4.16.2 水面效果
4.16.3 體積紋理

**5 場景圖**
5.1 高級數據管理的需求
5.2 低級數據結構的需求
5.3 幾何狀態
5.3.1 頂點和頂點屬性
5.3.2 變換
5.3.3 邊界體積
5.4 渲染狀態
5.4.1 全局狀態
5.4.2 燈光
5.4.3 效果
5.5 更新過程
5.5.1 幾何狀態更新
5.5.2 渲染狀態更新
5.6 剔除過程
5.6.1 層次剔除
5.6.2 排序剔除
5.7 繪製過程
5.7.1 單通道繪製
5.7.2 單一效果,多通道繪製
5.7.3 多重效果,多通道繪製
5.7.4 在圖形硬體上緩存數據
5.7.5 排序以減少狀態變更
5.8 場景圖設計問題
5.8.1 基於幾何狀態的組織
5.8.2 基於渲染狀態的組織
5.8.3 場景圖操作和多執行緒
5.8.4 生產者-消費者模型

**6 場景圖編譯器**
6.1 平台特定優化的需求
6.2 減少記憶體碎片的需求
6.3 場景圖作為動態表達式
6.4 從高級到低級數據的編譯
6.5 通過節點標籤控制編譯

**7 記憶體管理**
7.1 遊戲主機的記憶體預算
7.2 記憶體管理的一般概念
7.2.1 分配、釋放和碎片化
7.2.2 順序適應方法
7.2.3 夥伴系統方法
7.2.4 隔離存儲方法
7.3 設計選擇
7.3.1 記憶體利用率
7.3.2 快速分配和釋放

**8 基於控制器的動畫**
8.1 頂點變形
8.2 關鍵幀動畫
8.3 反向運動學
8.4 皮膚和骨骼
8.5 粒子系統

**9 空間排序**
9.1 空間劃分
9.1.1 四叉樹和八叉樹
9.1.2 BSP樹
9.1.3 用戶定義地圖
9.2 基於節點的排序
9.3 門戶
9.4 遮蔽剔除

**10 詳細級別**
10.1 離散詳細級別
10.1.1 精靈和廣告牌
10.1.2 模型切換
10.2 連續詳細級別
10.2.1 一般概念
10.2.2 應用於規則網格
10.2.3 應用於一般網格
10.3 無限詳細級別
10.3.1 一般概念
10.3.2 應用於參數曲線
10.3.3 應用於參數曲面

**11 地形**
11.1 數據表示
11.2 高度場的詳細級別
11.3 地形頁面和記憶體管理

**12 碰撞檢測**
12.1 靜態線-物件交集
12.2 靜態物件-物件交集
12.3 動態線-物件交集
12.3.1 基於距離的方法
12.3.2 基於交集的方法
12.4 動態物件-物件交集
12.4.1 基於距離的方法
12.4.2 基於交集的方法
12.5 尋路以避免碰撞

**13 物理學**
13.1 基本概念
13.2 粒子系統
13.3 質量-彈簧系統
13.4 可變形物體
13.5 剛體

**14 物件導向基礎設施**
14.1 物件導向軟體建構
14.2 風格、命名慣例和命名空間
14.3 執行時類型資訊
14.4 模板
14.5 共享物件和引用計數
14.6 流媒體
14.7 啟動和關閉
14.8 應用層

**15 數學主題**
15.1 標準物件
15.2 曲線
15.3 表面
15.4 距離演算法
15.5 交集演算法
15.6 數值演算法
15.7 旋轉的所有事物
15.7.1 旋轉矩陣
15.7.2 四元數
15.7.3 歐拉角
15.7.4 性能問題
15.8 不均勻縮放的詛咒

**參考文獻**
**索引**