当前位置:首页 > 工业技术
GPU精粹 2 高性能图形芯片和通用计算机编程技巧
GPU精粹 2 高性能图形芯片和通用计算机编程技巧

GPU精粹 2 高性能图形芯片和通用计算机编程技巧PDF电子书下载

工业技术

  • 电子书积分:17 积分如何计算积分?
  • 作 者:(美)Matt Pharr编著;龚敏敏翻译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2007
  • ISBN:9787302139430
  • 页数:565 页
图书介绍:
《GPU精粹 2 高性能图形芯片和通用计算机编程技巧》目录

第Ⅰ部分 几何复杂性 5

第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.2 GPU实现概览 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.4 DrawPrimitive调用 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.1 DirectX 9.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.2 Catmull-Clark细分 78

7.1.3 用细分来镶嵌 79

7.1.4 面片化表面 80

7.1.5 GPU镶嵌算法 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.3 G缓冲区建立的优化 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.5 mipmap问题 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.1 Cg顶点程序和可变参数 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.1 Rayleigh散射与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

第Ⅲ部分 高质量渲染 225

第20章 快速三阶纹理过滤 225

20.1 高阶过滤 225

20.2 快速递归三次卷积 226

20.3 mipmapping 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章 Nalu Demo的头发动画和渲染 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.2 Cg着色器 278

24.2.3 系统集成 280

24.2.4 把三维查找表扩展到用于高动态范围图像 281

24.3 本章小结 282

参考文献 282

第25章 Apple Motion中的GPU图像处理 285

25.1 设计 285

25.1.1 喜爱的和厌恶的 285

25.1.2 选择语言 287

25.1.3 CPU向后支持 287

25.2 实现 288

25.2.1 GPU资源的限制 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.2 GPU抢险队 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章 GeForce 6系列GPU的体系结构 341

30.1 GPU如何适合于整体计算系统 342

30.2 整体系统体系结构 342

30.2.1 图形操作的功能结构图 343

30.2.2 非图形操作的功能结构图 346

30.3 GPU特性 347

30.3.1 固定函数特性 348

30.3.2 着色器Model 3.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.2 GPU计算资源清单 359

31.3 CPU-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.2 GPU存储器模型 379

33.2.1 存储器体系结构 379

33.2.2 GPU流类型 380

33.2.3 GPU核的存储器访问 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.3 Pbuffer Survival Guide 392

33.5 本章小结 393

参考文献 393

第34章 GPU流程控制习惯用法 395

34.1 流程控制的挑战 395

34.2 基本的流程控制策略 396

34.2.1 判定 396

34.2.2 把分支向着流水线上端移动 396

34.2.3 z裁减 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.4 swizzle操作 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

第Ⅴ部分 面向图像的计算 425

第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.5 GPU上的全局照明渲染器 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.2 GPU实现 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

第Ⅵ部分 模拟与数值算法 497

第43章 蛋白质结构预测的GPU计算 497

43.1 介绍 497

43.2 Floyd-Warshall算法以及绑定距离的平滑 498

43.3 GPU实现 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.2 Black-Scholes模型 518

45.3 Lattice模型 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.2 Lattice Boltzmann方法 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.2 FFT算法 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.2 MRI结果 560

48.5.3 超声波成像 562

48.6 本章小结 564

参考文献 565

返回顶部