作品目錄
第1章 通用編程簡介 2
Adam Lake, 圖形軟體架構師,高級視覺計算(AVC)小組,英特爾
1.1 使用年齡和成本指標的高效率快取替換 3
Colt“MainRoach”McAnlis,微軟Ensemble工作室
1.1.1 概述 3
1.1.2 快取替換算法 4
1.1.3 年齡和成本指標 5
1.1.4 結論 9
1.1.5 致謝 10
1.1.6 參考文獻 10
1.2 高性能堆分配器 11
Dimitar Lazarov, Luxoflux
1.2.1 簡介 11
1.2.2 相關工作 11
1.2.3 我們的解決方案 12
1.2.4 參考文獻 18
1.3 用網路攝像頭玩的視頻遊戲的光流 19
Arnau Ramisa, Institut d’Investigació en Intelligència Artificial
Enric Vergara, GeoVirtual
.Enric Martí, Universitat Autónoma de Barcelona
1.3.1 簡介 19
1.3.2 OpenCV代碼 20
1.3.3 第一種方法:圖像差異 21
1.3.4 第二種方法:運動歷史 21
1.3.5 第三種方法:Lucas-Kanade算法 22
1.3.6 光流遊戲 23
1.3.7 參考文獻 25
1.4 一個多平台執行緒引擎的設計與實現 26
Michael Ramsey
1.4.1 一個實用執行緒架構的系統設計 26
1.4.2 執行緒 28
1.4.3 執行緒分配策略 30
1.4.4 對象的執行緒 31
1.4.5 執行緒的安全性、重新進入、對象同步和數據訪問 32
1.4.6 使用快取線(或快取的一致性) 32
1.4.7 如何使用GLRThreading庫 32
1.4.8 結論 34
1.4.9 參考文獻 34
1.5 給蜜蜂和遊戲玩家:如何處理六邊形貼片 35
Thomas Jahn, King Art
Jorn Loviscach, Hochschule Bremen
1.5.1 簡介 35
1.5.2 六邊形貼片的利弊 35
1.5.3 掌握六邊形格線 38
1.5.4 實現技巧 39
1.5.5 套用 40
1.5.6 結論 42
1.5.7 參考文獻 42
1.6 服務於即時戰略遊戲的基於細胞多孔機器(Cellular Automaton)的線條主界面 43
Carlos A. Dietrich
Luciana P. Nedel
Jooo L. D. Comba
1.6.1 關註上下文的控制等級 44
1.6.2 實現細節 45
1.6.3 結論 49
1.6.4 參考文獻 49
1.7 第一人稱射擊遊戲的腳步導航技術 50
Marcus Aurelius C. Farias
Daniela G. Trevisan
Luciana P. Nedel
1.7.1 介紹 50
1.7.2 用腳來導航 51
1.7.3 一個簡單的遊戲 55
1.7.4 玩家測試 56
1.7.5 結論 57
1.7.6 以後的工作 57
1.7.7 致謝 57
1.8 推遲函式調用的喚醒系統 58
Mark Jawad, Nintendo of America Inc
1.8.1 時間問題 58
1.8.2 案例分析 59
1.8.3 對函式調用分類 60
1.8.4 檢視這個系統 60
1.8.5 結論 61
1.8.6 參考文獻 61
1.9 多執行緒任務和依賴系統 62
Julien Hamaide
1.9.1 介紹 62
1.9.2 任務系統 63
1.9.3 依賴性管理器 66
1.9.4 後續的工作 68
1.9.5 結論 69
1.9.6 參考文獻 70
1.10 高級調試技術 71
Martin Fleisz
1.10.1 程式崩潰 71
1.10.2 記憶體泄露 74
1.10.3 Windows錯誤匯報(WER) 75
1.10.4 框架 76
1.10.5 結論 77
1.10.6 參考文獻 78
第2章 數學和物理
簡介 80
Graham Rhodes, Applied Research
Associates, Inc.
2.1 隨機數生成 82
Chris Lomont
2.1.1 背景:隨機數生成 82
2.1.2 隨機性測試 84
2.1.3 軟體漂白 84
2.1.4 不加密隨機數生成算法 85
2.1.5 加密RNG方法 89
2.1.6 創造隨機數生成器的常見錯誤 90
2.1.7 代碼 91
2.1.8 結論 91
2.1.9 參考文獻 91
2.2 遊戲中的快速通用光線查詢 93
Jacco Bikker, IGAD/NHTV University of Applied Sciences——Breda, The Netherlands
2.2.1 光線追蹤介紹 93
2.2.2 K維樹概念和存儲考慮 94
2.2.3 動態物體 101
2.2.4 示例程式 101
2.2.5 結論 102
2.2.6 參考文獻 102
2.3 使用最遠特性圖的快速剛體碰撞檢測 103
Rahul Sathe, Advanced Visual Computing, SSG,IntelCorp.
Dillon sharlet,Univesity of Colorado at Boulder
2.3.1 背景 103
2.3.2 預處理 104
2.3.3 運行時查詢 106
2.3.4 性能分析和結束語 107
2.3.5 致謝 107
2.3.6 參考文獻 108
2.4 使用投影空間來提高几何計算精度 109
Krzysztof Kluczek, Gda′nsk University of Technology
2.4.1 投影空間 109
2.4.2 R2空間中的基本對象 110
2.4.3 RP2空間中的點和直線 110
2.4.4 在RP2空間中的基本運算 111
2.4.5 在RP2空間中使用整數坐標進行精確的幾何運算 112
2.4.6 在RP2空間中幾何運算的數值範圍限制 112
2.4.7 RP2空間運算的例子程式 114
2.4.8 拓展到第三維 116
2.4.9 結論 117
2.4.10 參考文獻 117
2.5 使用XenoCollide算法簡化複雜的碰撞 118
Gary Snethen, Crystal Dynamics
2.5.1 介紹 118
2.5.2 用支撐映射來表示形體 119
2.5.3 使用閔可夫斯基(Minkowski)差異來簡化碰撞檢測 121
2.5.4 使用閔可夫斯基入口簡化(Minkowski Portal Refinement, MPR)來檢測碰撞 122
2.5.5 使用MPR算法得到相交信息 125
2.5.6 結論 126
2.5.7 致謝 126
2.5.8 參考文獻 126
2.6 使用變換語義的高效碰撞檢測 128
José Gilvan Rodrigues Maia, UFC
Creto Augusto Vidal, UFC
Joaquim Bento Cavalcante-Neto, UFC
2.6.1 仿射變換和遊戲 128
2.6.2 從矩陣中抽取語義 129
2.6.3 在碰撞檢測中使用變換語義 131
2.6.4 結論 134
2.6.5 參考文獻 135
2.7 三角樣條 136
Tony Barrera, Barrera Kristiansen AB
Anders Hast, Creative Media Lab,University of G?vle
Ewert Bengtsson, Centre For Image Analysis,Uppsala University
2.7.1 背景知識 136
2.7.2 討論 139
2.7.3 結論 139
2.7.4 參考文獻 140
2.8 使用高斯隨機性來擬真發射軌跡的變化 141
Steve Rabin, Nintendo of America Inc.
2.8.1 高斯分布 141
2.8.2 生成高斯隨機性 142
2.8.3 其他套用 144
2.8.4 自然中的高斯分布 144
2.8.5 結論 144
2.8.6 參考文獻 145
第3章 人工智慧
簡介 147
Brian Schwab
3.1 用行為克隆創建有趣的代理 149
John Harger
Nathan Fabian
3.1.1 實例:The Demo Game 149
3.1.2 結論 154
3.1.3 參考文獻 155
3.2 設計一種真實並且統一的代理感知模型 156
Steve Rabin, Nintendo of America Inc.
Michael Delp, WXP Inc.
3.2.1 基本視覺模型 156
3.2.2 基本聽覺模型 157
3.2.3 用橢圓擴充視覺模型工具箱 158
3.2.4 用確定性模擬人類視覺 159
3.2.5 用確定性模擬人類聽覺 161
3.2.6 統一的感知模型 162
3.2.7 為統一感知模型添加記憶 163
3.2.8 結論 163
3.2.9 參考文獻 163
3.3 管理AI算法複雜度:泛型編程方法 165
Iskander Umarov
Antoli Beliaev.
3.3.1 介紹 165
3.3.2 行為選擇工作流程 166
3.3.3 實現 172
3.3.4 結論 178
3.3.5 參考文獻 178
3.4 有關態度的一切:為意見、聲望和NPC個性構建單元 180
Michael F.Lynch, Ph.D.,Rensselaer Polytechnic Institute, Troy, NY
3.4.1 簡介 180
3.4.2 態度 181
3.4.3 態度里有什麼 182
3.4.4 複雜的態度對象 185
3.4.5 態度和行為 187
3.4.6 說服和影響 187
3.4.7 態度的社會交換 188
3.4.8 另一個例子 188
3.4.9 注意事項和結論 189
3.4.10 參考文獻 190
3.5 用玩家追蹤和互動玩家圖來理解遊戲AI 191
G. Michael Youngblood, UNC Charlotte
Priyesh N.Dixit, UNC Charlotte
3.5.1 簡介 191
3.5.2 信息的價值 192
3.5.3 互動玩家圖 197
3.5.4 行為的更深理解 201
3.5.5 結論 201
3.5.6 參考文獻 202
3.6 面向目標的計畫合併 204
Michael Dawe
3.6.1 回顧面向目標的計畫系統 204
3.6.2 用於面向目標計畫的計畫合併 205
3.6.3 結論 208
3.6.4 參考文獻 208
3.7 超越A*:IDA*和邊緣搜尋 209
Robert Kirk Delisle
3.7.1 A*和Dijkstra 210
3.7.2 疊代延伸A*(IDA*) 211
3.7.3 邊緣搜尋算法 212
3.7.4 結論 213
3.7.5 參考文獻 213
第4章 音頻
簡介 215
Alexander Brandon
4.1 基於可程式圖形硬體的音頻信號處理 216
Mark France
4.1.1 GPGPU 編程概述 216
4.1.2 音頻效果 217
4.1.3 室內效果 218
4.1.4 結論 219
4.1.5 參考文獻 219
4.2 多流—編寫次世代音頻引擎的藝術 221
Jason Page, 索尼計算機娛樂公司歐洲分部
4.2.1 一切將如何開始 221
4.2.2 理解“次世代”音頻 222
4.2.3 環繞聲音 228
4.2.4 路由引導 231
4.2.5 結論 231
4.3 聽仔細了,你應該不會再有機會聽到這個了 233
Stephan Schütze
4.3.1 如何做到?採用不同的理念! 233
4.3.2 前進,砰! 234
4.3.3 舊的不去新的不來 236
4.3.4 稱手利器 237
4.3.5 細節管理 238
4.3.6 為什麼我們要再做一次 239
4.3.7 更進一步 239
4.3.8 結論 240
4.4 實時音頻效果的運用 241
Ken Noland
4.4.1 聲音系統的概覽 242
4.4.2 聲音快取 243
4.4.3 分級快取 244
4.4.4 效果和濾波器 245
4.4.5 壓縮和流 246
4.4.6 結論 247
4.4.7 參考文獻 247
4.5 上下文驅動,層疊混合 248
Robert Sparks
4.5.1 概述 248
4.5.2 實現 249
4.5.3 擴展實時調整的概念 252
4.5.4 效率 252
4.5.5 例子程式 253
4.5.6 結論 253
第5章 圖形學
簡介 255
Timothy E. Roden,Angelo State University
5.1 先進的粒子沉積 256
Jeremy Hayes,英特爾公司
5.1.1 為什麼使用粒子 256
5.1.2 粒子沉積 256
5.1.3 改進粒子沉積 257
5.1.4 結論 263
5.1.5 參考文獻 263
5.2 減少骨骼動畫中的累積誤差 264
Bill Budge,索尼娛樂美國分部
5.2.1 遊戲動畫系統的快速巡視 264
5.2.2 累積誤差 265
5.2.3 結論 268
5.2.4 參考文獻 268
5.3 粗糙材料漫反射光著色的另一個模型 269
Tony Barrera,Barrera Kristiansen AB
Anders Hast,創造媒體實驗室,University of G?vle
Ewert Bengtsson,圖像分析中心,Uppsala University
5.3.1 簡介 269
5.3.2 平坦效果 270
5.3.3 後向散射 272
5.3.4 結論 273
5.3.5 參考文獻 273
5.4 高效的細分表面 275
Chris Lomont
5.4.1 細分方案的介紹 275
5.4.2 Loop細分的特徵和選項 276
5.4.3 細分數據結構 281
5.4.4 細分算法的細節 283
5.4.5 性能問題 286
5.4.6 結論 288
5.4.7 參考文獻 288
5.5 用徑向基函式紋理來替代動畫浮雕 290
Vitor Fernando Pamplona,Instituto de Informática: UFRGS
Manuel M. Oliveira,Instituto de Informática: UFRGS
Luciana Porcher Nedel,Instituto de Informática: UFRGS
5.5.1 簡介 290
5.5.2 圖像扭曲 291
5.5.3 徑向基函式 292
5.5.4 插值扭曲函式 292
5.5.5 使用著色器評估扭曲函式 293
5.5.6 動畫浮雕貼圖 294
5.5.7 動畫浮雕替代 294
5.5.8 結果 296
5.5.9 結論 297
5.5.10 鳴謝 297
5.5.11 參考文獻 297
5.6 SM1.1和更高版本上的裁剪貼圖 299
Ben Garney
GarageGames
5.6.1 裁剪貼圖的基本概念 299
5.6.2 裁剪貼圖的實現 300
5.6.3 如果你想節約些時間…… 305
5.6.4 參考文獻 306
5.7 一個先進的貼花系統 307
Joris Mans
Dmitry Andreev
5.7.1 要求 307
5.7.2 正常的貼花方法 307
5.7.3 先進的貼花方法 307
5.7.4 這個先進貼花系統的優勢 310
5.7.5 性能和實驗結果 312
5.7.6 演示 314
5.7.7 結論 314
5.7.8 參考文獻 315
5.8 室外地形渲染的大紋理映射 316
Antonio Seoane, Javier Taibo, Luis Hernández, and Alberto Jaspe
VideaLAB, University of La Coru?a
5.8.1 簡介 316
5.8.2 結構 317
5.8.3 更新快取的內容 320
5.8.4 渲染問題 321
5.8.5 結果 323
5.8.6 結論 324
5.8.7 參考文獻 324
5.9 基於藝術品的嫁接貼圖渲染 325
Joshua A. Doss,先進的視覺計算,英特爾公司
5.9.1 資產 325
5.9.2 運行時 328
5.9.3 感謝 330
5.9.4 結論和未來的工作 330
5.9.5 參考文獻 330
5.10 廉價的對話:動態實時口型同步(Lipsync) 331
Timothy E. Roden, Angelo State University
5.10.1 需求 331
5.10.2 一般過程 333
5.10.3 結論 336
5.10.4 參考文獻 336
第6章 網路和多人遊戲
簡介 338
Diana Stelmack
6.1 遊戲世界同步的高層抽象 339
Hyun-jik Baeb
6.1.1 HLA用法 340
6.1.2 遊戲世界同步剖析 340
6.1.3 HLA組件 341
6.1.4 在HLA運行器中的視口 346
6.1.5 進一步討論 348
6.1.6 結論 348
6.1.7 參考文獻 348
6.2 網路遊戲的身份驗證 350
Jon Watte
6.2.1 介紹 350
6.2.2 遊戲登錄安全 350
6.2.3 保障遊戲時安全 353
6.2.4 結論 354
6.2.5 參考文獻 355
6.3 使用智慧型包嗅探器來調試遊戲網路 357
David L. Koenig, The Whole Experience, Inc
6.3.1 智慧型包嗅探器概念 357
6.3.2 一個例子 357
6.3.3 傳統調試技術的缺陷 358
6.3.4 實現 358
6.3.5 使用WinPcap庫 359
6.3.6 降低安全風險 360
6.3.7 一個替代方案 361
6.3.8 例子程式 361
6.3.9 結論 361
6.3.10 參考文獻 361
第7章 腳本和數據驅動系統
介紹 363
Scott Jacobs
Tom Forsyth
7.1 Lua自動綁定系統 364
Julien Hamaide
7.1.1 介紹 364
7.1.2 特性 364
7.1.3 函式的綁定 365
7.1.4 在Lua里的面向對象 365
7.1.5 在Lua里綁定C++對象 366
7.1.6 擴展綁定系統 371
7.1.7 結論 373
7.1.8 後續工作 374
7.1.9 例子 376
7.1.10 結論 376
7.1.11 參考文獻 376
7.2 用內省(introspection)方式把C++對象序列化到資料庫中 377
Joris Mans
7.2.1 元數據(Metadata) 377
7.2.2 數組 378
7.2.3 序列化成文本 378
7.2.4 資料庫系統 378
7.2.5 例子 390
7.2.6 問題和將來的改進 390
7.2.7 結論 391
7.2.8 參考文獻 391
7.3 數據連線埠 392
Martin Linklater
7.3.1 概述 392
7.3.2 類型安全 394
7.3.3 引用計數 394
7.3.4 實踐例子 394
7.3.5 問題 395
7.3.6 結論 396
7.4 支持你本地的美術家:為你的引擎增加shader 397
Curtiss Murphy; Alion Science and Technology
7.4.1 shader專用名詞 397
7.4.2 程式、參數和管理器,喔我的老天! 398
7.4.3 靈活性是關鍵 399
7.4.4 原型 400
7.4.5 shader參數 401
7.4.6 例子——飛艇目標 403
7.4.7 高級技術 405
7.4.8 後續工作 407
7.4.9 結論 407
7.4.10 參考文獻 407
7.5 與蟒共舞 用好AST 408
鄒光先
7.5.1 簡介 408
7.5.2 背景 408
7.5.3 方案 409
7.5.4 結論 411
7.5.5 參考文獻 411
關於本書附帶光碟