GPU精粹2:高性能圖形晶片和通用計算編程技巧

GPU精粹2:高性能圖形晶片和通用計算編程技巧

《GPU精粹2:高性能圖形晶片和通用計算編程技巧》是2007年5月18日清華大學出版社出版的圖書,定價128元。

圖書簡介

本書延續了暢銷書《GPU精粹》的第1卷,細述了在今天的圖形處理器(GPU)上最新的可程式技術。隨著GPU進入手機、手持遊戲設備和遊戲機領域,GPU專業知識在今天的競爭環境中顯得更為重要。實時圖形程式設計師會發現用於建立高級的視覺特效、管理複雜場景的策略和高級圖像強大處理能力運用到其他計算密集型程式中,比如科學計算和金融。書中有20章專門講述GPGPU編程,從基本的概念到高級技術。本書提供了一些專家撰寫的最前沿的GPU編程技術,為讀者介紹了利用GPU巨大功能的實用方法。

書籍目錄

目錄

第Ⅰ部分幾何複雜性

第1章實現照片級真實感的虛擬

植物 5

1.1場景管理 6

1.1.1種植柵格 6

1.1.2種植策略 6

1.1.3實時最佳化 7

1.2草層 7

1.2.1通過溶解模擬Alpha透明 9

1.2.2變化 10

1.2.3光照 11

1.2.4風 12

1.3地面雜物層 12

1.4樹和灌木層 13

1.5陰影 14

1.6後處理 15

1.6.1天空圓頂輝散 16

1.6.2全場景輝光 16

1.7本章小結 17

參考文獻 18

第2章使用基於GPU幾何體剪下圖

的地形渲染 19

2.1幾何體剪下圖簡介 19

2.2GPU實現概覽 21

2.2.1數據結構 22

2.2.2剪下圖大小 22

2.3渲染 23

2.3.1活動層 23

2.3.2頂點和索引緩衝區 23

2.3.3視錐剪下 24

2.3.4DrawPrimitive調用 25

2.3.5頂點著色器 25

2.3.6像素著色器 27

2.4更新 28

2.4.1升採樣 28

2.4.2殘差 29

2.4.3法線圖 30

2.5結果和討論 30

2.6本章小結和改進 31

2.6.1頂點紋理 31

2.6.2去掉法線圖 31

2.6.3不需要存儲空間的地形

合成 31

參考文獻 31

第3章幾何體實例化的內幕 33

3.1為什麼要對幾何體實例化? 34

3.2定義 34

3.2.1幾何體包 34

3.2.2實例屬性 35

3.2.3幾何體實例 35

3.2.4渲染和紋理場景 35

3.2.5幾何體批次 36

3.3實現 37

3.3.1靜態批次 38

3.3.2動態批次 39

3.3.3頂點常量實例化 40

3.3.4幾何體實例API批次 43

3.4本章小結 46

參考文獻 48

第4章分段緩衝 49

4.1問題空間 49

4.2解決方案 50

4.3方法 50

4.3.1分段緩衝的第一步 50

4.3.2分段緩衝的第二步 50

4.3.3分段緩衝的第三步 51

4.4改進分段緩衝技術 51

4.5本章小結 51

參考文獻 51

第5章用多流來最佳化資源管理 53

5.1概覽 53

5.2實現 55

5.2.1DirectX9.0中的多流 55

5.2.2資源管理 57

5.2.3處理頂點 59

5.3本章小結 63

?〔慰嘉南?63

第6章讓硬體遮擋查詢發揮作用 65

6.1引言 65

6.2受益於遮擋查詢的場景 66

6.3遮擋裁減 66

6.4層的停等方法 67

6.4.1為什麼使用層 67

6.4.2層結構 67

6.4.3層的算法 68

6.4.4問題1:停滯 68

6.4.5問題2:查詢的額外開銷 68

6.5一致性層裁減 69

6.5.1想法1:猜測 69

6.5.2想法2:提升,提升 70

6.5.3算法 70

6.5.4實現細節 71

6.5.5停滯比較少的原因 73

6.5.6查詢較少的原因 73

6.5.7如何遍歷層 73

6.6最佳化 74

6.6.1用真正的幾何體查詢 74

6.6.2隻有Z的渲染遍 74

6.6.3近似的可見性 74

6.6.4保守的可見性測試 74

6.7本章小結 75

參考文獻 76

第7章帶有位移映射的細分表面自

適應鑲嵌 77

7.1細分表面 77

7.1.1一些定義 78

7.1.2Catmull-Clark細分 78

7.1.3用細分來鑲嵌 79

7.1.4面片化表面 80

7.1.5GPU鑲嵌算法 80

7.1.6緻密鑲嵌 84

7.2位移映射 84

7.2.1改變平滑度測試 85

7.2.2用法線映射著色 85

7.3本章小結 86

參考文獻 86

第8章?使用距離函式的逐像素位移

映射 87

8.1簡介 87

8.2準備工作 89

8.3距離映射算法 89

8.4計算距離圖 92

8.5著色器 92

8.5.1頂點著色器 92

8.5.2片段著色器 92

8.5.3關於過濾的注意事項 94

8.6結果 94

8.7本章小結 95

參考文獻 96

第Ⅱ部分著色、光照和陰影

第9章S.T.A.L.K.E.R.中的延期

著色 101

9.1引言 101

9.2幾種觀點 102

9.3最佳化 103

9.3.1最佳化的對象 103

9.3.2光照最佳化 104

9.3.3G緩衝區建立的最佳化 106

9.3.4陰影最佳化 108

9.4改善質量 109

9.4.1“虛擬位置”的威力 109

9.4.2環境遮擋 110

9.4.3材質和表面光照的互動 111

9.5反走樣 111

9.5.1高效的調和映射 113

9.5.2處理透明 114

9.6嘗試過但沒有包含入最終

代碼的內容 114

9.6.1高程圖 114

9.6.2實時的全局照明 115

9.7本章小結 115

參考文獻 116

第10章動態輻照度環境映射實時

計算 117

10.1輻照度(irradiance)環境

映射 117

10.2球面調和卷積 119

10.3映射到GPU上 120

10.3.1空域到頻域 121

10.3.2卷積和恢復 122

10.4以後的工作 123

10.5本章小結 123

參考文獻 123

第11章近似的雙向紋理函式 125

11.1引言 125

11.2採集 126

11.2.1建立和採集 126

11.2.2匯集著色圖 127

11.3渲染 128

11.3.1細節算法 128

11.3.2實時渲染 129

11.4結果 130

11.5本章小結 132

參考文獻 132

第12章基於貼面的紋理映射 133

12.1方法簡介 134

12.2紋理貼面的構造 135

12.3紋理貼面打包 135

12.4紋理貼面映射 137

12.5mipmap問題 138

12.6本章小結 140

參考文獻 140

第13章在GPU上實現mental

images的Phenomena

渲染器 141

13.1引言 141

13.2著色器和Phenomena 142

13.3用Cg實現Phenomena 143

13.3.1Cg頂點程式和可變

參數 144

13.3.2片段程式著色器的main()

入口點 145

13.3.3通用著色器接口 145

13.3.4一個簡單的著色器

例子 146

13.3.5全局的狀態變數 148

13.3.6光著色器 149

13.3.7紋理著色器 151

13.3.8凹凸映射 152

13.3.9環境著色器和體著

色器 153

13.3.10返回結構體的著色器 154

13.3.11渲染毛髮 154

13.3.12組合所有東西 155

13.4本章小結 155

參考文獻 156

第14章動態環境遮擋和間接光照 157

14.1表面元素 158

14.2環境遮擋 158

14.2.1多遍陰影算法 160

14.2.2改善性能 160

14.3間接光照和面光源 162

14.4本章小結 164

參考文獻 164

第15章藍圖渲染和草圖繪製 165

15.1基本原理 166

15.1.1中間渲染結果 166

15.1.2邊增強 166

15.1.3深度子圖形渲染 167

15.2藍圖渲染 167

15.2.1深度剝離 167

15.2.2析取可見邊和不可

見邊 169

15.2.3合成藍圖 170

15.2.4深度禁止 171

15.2.5使用藍圖渲染顯示

建築 171

15.3草圖渲染 171

15.3.1邊和顏色面片 172

15.3.2套用不確定性 172

15.3.3調整深度 173

15.3.4草圖渲染的變體 173

15.3.5控制不確定性 174

15.3.6減少雨景效果 175

15.4本章小結 176

參考文獻 176

第16章精確的大氣散射 179

16.1引言 179

16.2解散射方程 180

16.2.1Rayleigh散射與Mie

散射 180

16.2.2相位函式 181

16.2.3外向散射方程 181

16.2.4內向散射方程 182

16.2.5表面散射方程 182

16.3實時渲染 182

16.4擠入著色器中 184

16.4.1去除一個維度 184

16.4.2去除其他維度 184

16.5實現散射的著色器 185

16.5.1頂點著色器 185

16.5.2片段著色器 187

16.6增加高動態範圍渲染 188

16.7本章小結 188

參考文獻 189

第17章利用像素著色器分支的

高效模糊邊緣陰影 191

17.1現有的陰影生成技術 191

17.2用單張陰影圖產生模糊

陰影 192

17.2.1模糊尖銳邊緣陰影 192

17.2.2提高效率 195

17.2.3實現細節 196

17.3本章小結 199

參考文獻 200

第18章將頂點紋理位移用於水的

真實感渲染 201

18.1水的模型 202

18.2實現 202

18.2.1水的表面模型 202

18.2.2實現細節 203

18.2.3對高度圖採樣 203

18.2.4質量的提高與最佳化 204

18.2.5渲染局部的擾動 208

18.3本章小結 209

參考文獻 209

第19章通用的折射模擬 211

19.1基本方法 212

19.2折射掩碼 213

19.3示例 215

19.3.1水的模擬 215

19.3.2玻璃的模擬 217

19.4本章小結 219

?〔慰嘉南?219

第Ⅲ部分高質量渲染

第20章快速三階紋理過濾 225

20.1高階過濾 225

20.2快速遞歸三次卷積 226

20.3mipmapping 230

20.4導數重建 232

20.5本章小結 235

參考文獻 236

第21章高質量反走樣的光柵化 237

21.1概述 237

21.2降採樣 239

21.2.1與現有軟硬體的對比 239

21.2.2用GPU進行降採樣 240

21.3延伸 240

21.4過濾器的細節 241

21.5兩遍分離式的過濾器 242

21.6分塊和累加 243

21.7代碼 243

21.7.1渲染循環 244

21.7.2降採樣類 245

21.7.3實現細節 246

21.8本章小結 246

參考文獻 247

第22章快速的預過濾線條 249

22.1為什麼尖銳的直線看起來很

糟糕 249

22.2限制信號的頻寬 250

22.3預處理 252

22.4運行時 253

22.4.1線段的建立(CPU) 253

22.4.2表查找(GPU) 254

22.5實現的問題 256

22.5.1繪製寬線 256

22.5.2組合多條線段 256

22.6示例 256

22.7本章小結 258

參考文獻 258

第23章NaluDemo的頭髮動畫和渲染 261

23.1頭髮的幾何體 262

23.1.1布局和增長 262

23.1.2控制頭髮 263

23.1.3數據流 263

23.1.4鑲嵌 263

23.1.5插值 264

23.2動力學和碰撞 265

23.2.1約束條件 265

23.2.2碰撞 266

23.2.3鰭 266

23.3頭髮的著色 267

23.3.1用於頭髮的實時反射

模型 268

23.3.2頭髮中實時的體化陰影 271

23.4本章小結和未來的工作 274

參考文獻 274

第24章使用查找表加速顏色變換 275

24.1查找表的基礎知識 275

24.1.1一維查找表 275

24.1.2三維查找表 276

24.1.3插值 278

24.2實現 278

24.2.1把查找表映射到GPU

的策略 278

24.2.2Cg著色器 278

24.2.3系統集成 280

24.2.4把三維查找表擴展到用

於高動態範圍圖像 281

24.3本章小結 282

參考文獻 282

第25章AppleMotion中的GPU圖像處理 285

25.1設計 285

25.1.1喜愛的和厭惡的 285

25.1.2選擇語言 287

25.1.3CPU向後支持 287

25.2實現 288

25.2.1GPU資源的限制 288

25.2.2被零除 289

25.2.3丟失的頂點分量 289

25.2.4雙線過濾 290

25.2.5高精度存儲 294

25.3調試 294

25.4本章小結 295

參考文獻 296

第26章實現改進的Perlin噪聲 297

26.1隨機但平滑 297

26.2存儲與計算 297

26.3實現細節 298

26.4本章小結 302

參考文獻 302

第27章高級的高質量過濾 303

27.1在GPU上實現過濾 303

27.1.1訪問圖像樣本 303

27.1.2卷積過濾 304

27.2數字圖像的重採樣 307

27.2.1背景知識 307

27.2.2反走樣問題 307

27.2.3圖像重建 310

27.3衝擊過濾:銳化圖像的方法 312

27.4過濾器的實現技巧 314

27.5高級套用 314

27.5.1時間變形 314

27.5.2運動模糊的消除 314

27.5.3自適應的紋理過濾 315

27.6本章小結 315

參考文獻 315

第28章Mipmap級的測量 317

28.1哪個mipmap層是可

見的? 318

28.2GPU搶險隊 318

28.2.1像素點計數 318

28.2.2引擎中的實際考慮 321

28.2.3擴展 322

28.3實驗結果 324

28.4本章小結 325

參考文獻 326

第Ⅳ部分GPU的通用計算:初級讀本

第29章流式體系結構和技術趨勢 331

29.1技術趨勢 331

29.1.1核心技術趨勢 331

29.1.2後果 332

29.2高性能計算的關鍵 334

29.2.1高效計算的方法 334

29.2.2高效通信的方法 335

29.2.3與CPU對比 335

29.3流式計算 336

29.3.1流式編程模型 336

29.3.2構建一個流式處理器 337

29.4未來和挑戰 338

29.4.1技術趨勢 338

29.4.2功耗管理 338

29.4.3支持更高的可程式性和

功能性 339

29.4.4來自CPU的GPU功能性

(或反之亦然) 339

參考文獻 339

第30章GeForce6系列GPU的體系結構 341

30.1GPU如何適合於整體計算

系統 342

30.2整體系統體系結構 342

30.2.1圖形操作的功能結構圖 343

30.2.2非圖形操作的功能結

構圖 346

30.3GPU特性 347

30.3.1固定函式特性 348

30.3.2著色器Model3.0編程

模型 349

30.3.3支持的數據存儲格式 353

30.4性能 354

30.5達到最佳性能 354

30.5.1積極地使用z裁減 355

30.5.2載入數據時利用紋理

數學 355

30.5.3使用片段程式的分支 355

30.5.4儘可能使用fp16作中

間值 355

30.6本章小結 356

第31章把計算概念映射到GPU 357

31.1數據並行的重要性 357

31.1.1哪種類型的計算可以很

好地映射到GPU 357

31.1.2示例:在柵格上模擬 358

31.1.3流通信:聚集與散布 359

31.2GPU計算資源清單 359

31.3CPU-GPU類比 362

31.3.1流:GPU紋理=CPU

數組 362

31.3.2核:GPU片段程式=CPU

“內循環” 362

31.3.3渲染到紋理=反饋 362

31.3.4幾何體光柵化=計算的

調用 363

31.3.5紋理坐標=計算的域 363

31.3.6頂點坐標=計算的

範圍 363

31.3.7縮減 363

31.4從類比到實現 364

31.5一個簡單的例子 366

31.6本章小結 368

參考文獻 368

第32章嘗試GPU計算 369

32.1選擇快速算法 369

32.1.1局部性 369

32.1.2允許計算的準則 370

32.1.3考慮下載和讀回 371

32.2了解浮點 371

32.3實現散列 373

32.3.1轉換成聚集 373

32.3.2地址排序 374

32.3.3渲染點 375

32.4本章小結 375

參考文獻 376

第33章在GPU上實現高效的並行數據結構 377

33.1流式編程 377

33.2GPU存儲器模型 379

33.2.1存儲器體系結構 379

33.2.2GPU流類型 380

33.2.3GPU核的存儲器訪問 381

33.3基於GPU的數據結構 382

33.3.1多維數組 382

33.3.2結構體 387

33.3.3稀疏數據結構 387

33.4性能考慮 391

33.4.1依賴的紋理讀取 391

33.4.2計算頻度和程式特化 391

33.4.3PbufferSurvivalGuide 392

33.5本章小結 393

參考文獻 393

第34章GPU流程控制習慣用法 395

34.1流程控制的挑戰 395

34.2基本的流程控制策略 396

34.2.1判定 396

34.2.2把分支向著流水線上端

移動 396

34.2.3z裁減 397

34.2.4分支指令 399

34.2.5選擇一種分支機制 399

34.3使用遮擋查詢的數據依賴

循環 400

34.4本章小結 400

第35章GPU程式最佳化 401

35.1數據並行計算 401

35.1.1指令級並行性 401

35.1.2數據級並行性 403

35.2計算頻率 404

35.2.1循環內不變數的預

計算 405

35.2.2用查找表進行預計算 406

35.2.3避免內循環分支 407

35.2.4swizzle操作 407

35.3評價和負載平衡 408

35.4本章小結 409

參考文獻 410

第36章用於GPGPU應用程式的流式縮減操作 411

36.1通過緊縮來過濾 411

36.1.1累加和掃描 412

36.1.2通過搜尋/聚集來散布 413

36.1.3過濾性能 415

36.2動機:碰撞檢測 416

36.3用於細分表面的過濾 419

36.4本章小結 421

參考文獻 421

第Ⅴ部分面向圖像的計算

第37章GPU上的八叉樹紋理 425

37.1一個GPU加速的層次結構:

N3樹 426

37.1.1定義 426

37.1.2實現 427

37.2套用1:在格線表面上色 431

37.2.1建立八叉樹 431

37.2.2上色 432

37.2.3渲染 432

37.2.4把八叉樹紋理轉換成標準

2D紋理 434

37.3套用2:表面模擬 436

37.4本章小結 437

參考文獻 438

第38章使用光柵化的高質量全局照明渲染 439

38.1通過光柵化的全局照明 440

38.2最終聚集簡介 441

38.2.1兩遍的方法 441

38.2.2最終聚集 441

38.2.3兩遍方法的問題 442

38.3通過光柵化的最終聚集 443

38.3.1最終聚集光線的聚類 443

38.3.2光線投射作為多次平行

投影 445

38.4實現細節 446

38.4.1初始化 446

38.4.2?疃勸??446

38.4.3採樣 447

38.4.4性能 447

38.5GPU上的全局照明渲染器 448

38.5.1第一遍 448

38.5.2生成可見點數據 448

38.5.3第二遍 448

38.5.4其他解決方案 449

38.6本章小結 451

參考文獻 451

第39章使用逐步求精輻射度方法的

全局照明 453

39.1輻射度的基礎 454

逐步求精 454

39.2GPU實現 455

39.2.1使用半球投影的可

見性 456

39.2.2構成因子的計算 458

39.2.3選擇下一個發射者 459

39.3漸進細分 459

39.3.1紋理四叉樹 459

39.3.2四叉數細分 460

39.4性能 460

39.5本章小結 460

參考文獻 461

第40章GPU上的計算機視覺 463

40.1引言 463

40.2實現框架 463

40.3套用示例 464

40.3.1把一系列片段程式用於

計算機視覺 464

40.3.2求和操作 467

40.3.3創建全景照片的方

程組 469

40.3.4特徵向量的計算 471

40.4並行計算機視覺處理 473

40.5本章小結 474

參考文獻 474

第41章延遲過濾:困難數據格式的

??渲染 477

41.1引言 477

41.2為什麼要延遲 478

41.3延遲過濾算法 479

41.4為什麼它可以工作 481

41.5本章小結:何時延遲 481

參考文獻 482

第42章保守光柵化 485

42.1問題定義 486

42.2兩種保守算法 487

42.2.1剪下空間 487

42.2.2第一種算法 488

42.2.3第二種算法 489

42.3魯棒性問題 492

42.4保守深度 492

42.5結果和本章小結 493

參考文獻 494

第Ⅵ部分模擬與數值算法

第43章蛋白質結構預測的GPU

計算 497

43.1介紹 497

43.2Floyd-Warshall算法以及

綁定距離的平滑 498

43.3GPU實現 499

43.3.1動態更新 499

43.3.2數據紋理的索引 499

43.3.3三角形劃分 500

43.3.4向量化 500

43.4試驗結果 501

43.5本章小結和工作展望 502

參考文獻 502

第44章用於解線性方程組的GPU框架 505

44.1概述 505

44.2表示 506

44.2.1“單浮點”的表示 506

44.2.2向量 506

44.2.3矩陣 507

44.3運算 509

44.3.1向量運算 509

44.3.2向量縮減 509

44.3.3矩陣與向量的積 510

44.3.4把所有的組合起來 511

44.3.5共軛梯度求解器 511

44.4一個偏微分方程的例子 512

44.5本章小結 515

參考文獻 516

第45章GPU上的期權定價 517

45.1期權概述 517

45.2Black-Scholes模型 518

45.3Lattice模型 521

45.3.1二項模型 521

45.3.2歐式期權定價 522

45.4本章小結 525

參考文獻 526

第46章改進的GPU排序 527

46.1排序算法 527

46.2一種簡單的方法 528

46.3快速排序 529

46.3.1實現奇偶合併排序 529

46.4使用所有的GPU資源 531

46.5本章小結 535

參考文獻 536

第47章複雜邊界的流體模擬 537

47.1簡介 537

47.2LatticeBoltzmann方法 538

47.3基於GPU的LBM 539

47.3.1算法介紹 539

47.3.2數據封裝 540

47.3.3遷移 541

47.4基於GPU的邊界處理 541

47.4.1基於GPU的體素化

方法 542

47.4.2周期性邊界 543

47.4.3流出邊界 544

47.4.4障礙物邊界 544

47.5可視化 545

47.6實驗結果 546

47.7本章小結 547

參考文獻 548

第48章基於FFT的醫學圖像重建 551

48.1背景 551

48.2傅里?侗浠?552

48.2FFT算法 553

48.4在GPU上的實現 553

48.4.1方法1:主要使用片段

處理器 555

48.4.2方法2:使用頂點處理器、

光柵器和片段處理器 556

48.4.3負載平衡 558

48.4.4基準測試結果 558

48.5醫學成像中的FFT 559

48.5.1磁共振成像 559

48.5.2MRI結果 560

48.5.3超音波成像 562

48.6本章小結 564

參考文獻 565

相關搜尋

熱門詞條

聯絡我們