GPU精粹:实时图形编程的技术、技巧和技艺

GPU精粹:实时图形编程的技术、技巧和技艺
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2006-01
版次: 1
ISBN: 9787115141767
定价: 78.00
装帧: 平装
开本: 其他
纸张: 胶版纸
页数: 497页
字数: 800千字
原版书名: GPU Gems
111人买过
  •   本书由引领全球计算机图形芯片技术发展的NVIDIA公司组稿,汇集当今国际上前沿开发者们经多年研究和实践得出的实用的实时图形技术成果。本书主要基于当今图形处理器(GPU)的可编程图形管线,除了讲述创建高级视觉效果的基础知识和性能优化技术外,还着重介绍了前沿开发者们总结出来的快速技巧。全书由42篇文章组成,根据主题不同分为6个部分,包括自然效果、光照和阴影、材质、图像处理、性能及实践、超越三角形。

      本书适合于实时渲染相关行业的技术人员阅读,也适合作为相关科研院所的学习研究参考资料。 第1部分 自然效果

    简介 2

    第1章 用物理模型进行高效的水模拟 4

    1.1 目标和范围 4

    1.2 正弦近似值的加和 5

    1.2.1 波的选择 5

    1.2.2 法线和切线 6

    1.2.3 几何波 8

    1.2.4 纹理波 11

    1.3 编辑 13

    1.3.1 深度的使用 13

    1.3.2 重载 14

    1.3.3 边长的过滤 15

    1.3.4 纹理坐标 15

    1.4 运行时的处理 16

    1.4.1 凹凸环境映射参数 16

    1.4.2 顶点和像素的处理 18

    1.5 小结 19

    1.6 参考文献 19

    第2章 水刻蚀的渲染 21

    2.1 引言 21

    2.2 刻蚀的计算 22

    2.3 方法 24

    2.4 使用OpenGL实现 25

    2.5 使用高级着色语言实现 25

    2.6 小结 30

    2.7 参考文献 30

    第3章 Dawn演示中的皮肤 31

    3.1 引言 31

    3.2 皮肤着色 32

    3.3 场景的照明 32

    3.3.1 高动态范围的环境 32

    3.3.2 遮挡 34

    3.4 皮肤如何对光进行响应 35

    3.5 实现 36

    3.5.1 顶点Shader 36

    3.5.2 像素Shader 41

    3.6 小结 43

    3.7 参考文献 43

    第4章 Dawn演示中的动画 44

    4.1 简介 44

    4.2 网格的动画 45

    4.3 变形网格对象 45

    4.3.1 高级语言中的变形网格对象 45

    4.3.2 变形网格对象的实现 47

    4.4 蒙皮 48

    4.5 小结 50

    4.6 参考文献 50

    第5章 改良的Perlin噪声的实现 51

    5.1 噪声函数 51

    5.2 最初的实现 52

    5.3 最初实现的缺点 52

    5.4 对噪声函数的改进 54

    5.5 如何在像素shader中产生好的假噪声 56

    5.6 不考虑相邻顶点制作凹凸贴图 57

    5.7 小结 58

    5.8 参考文献 58

    第6章 Vulcan演示中的火 59

    6.1 创建逼真的火焰 59

    6.2 动画精灵的实现 61

    6.2.1 火焰和烟的动画 61

    6.2.2 使火焰增加多样性 62

    6.2.3 动画的存储 63

    6.2.4 火焰和烟的混合 64

    6.3 粒子运动 65

    6.4 性能 65

    6.4.1 层次合成 65

    6.4.2 定制的精灵 67

    6.5 渲染后的效果 67

    6.5.1 辉光 68

    6.5.2 热微光 68

    6.5.3 颗粒 70

    6.5.4 最终的程序 71

    6.6 小结 72

    第7章 无数波动草叶的渲染 73

    7.1 引言 73

    7.2 概述 73

    7.3 草体的准备 74

    7.3.1 草的纹理 74

    7.3.2 草体 74

    7.4 动画 76

    7.4.1 一般思路 76

    7.4.2 每丛草体的动画 77

    7.4.3 每个顶点的动画 79

    7.4.4 每个草体的动画 80

    7.5 小结 82

    7.6 参考文献 82

    第8章 衍射的模拟 84

    8.1 什么是衍射 84

    8.1.1 波动光学 84

    8.1.2 衍射的物理学 85

    8.2 实现 86

    8.3 结果 89

    8.4 小结 90

    8.5 参考文献 90

    第2部分 光照和阴影

    简介 92

    第9章 有效的阴影体渲染 94

    9.1 引言 94

    9.2 程序结构 96

    9.2.1 多遍渲染 96

    9.2.2 顶点缓冲器结构 99

    9.2.3 在无限远处工作 99

    9.3 详细的讨论 101

    9.3.1 数学 101

    9.3.2 代码 103

    9.3.3 markShadows方法 103

    9.3.4 findBackfaces方法 104

    9.3.5 亮罩和暗罩 105

    9.3.6 侧面 106

    9.4 调试 107

    9.5 几何优化 108

    9.5.1 方向光 108

    9.5.2 点光源和聚光灯 108

    9.5.3 剔除阴影体 109

    9.5.4 除罩操作 109

    9.6 填充率的优化 110

    9.6.1 有限的体积 110

    9.6.2 XY裁剪 111

    9.6.3 Z-边界 111

    9.7 将来的阴影 112

    9.8 参考文献 113

    第10章 电影级的光照 114

    10.1 引言 114

    10.2 直射光照明模型 115

    10.2.1 选择 116

    10.2.2 颜色 116

    10.2.3 造型 116

    10.2.4 阴影 117

    10.2.5 纹理 118

    10.2.6 结果 118

    10.3 泛光Shader 119

    10.4 性能分析 124

    10.4.1 速度 124

    10.4.2 开销 124

    10.4.3 优化 124

    10.5 小结 124

    10.6 参考文献 125

    第11章 阴影贴图反走样 126

    11.1 引言 126

    11.2 靠近的百分比过滤 126

    11.3 平滑滤波的实现 127

    11.4 较少地取样 128

    11.5 工作原理 129

    11.6 小结 131

    11.7 参考文献 131

    第12章 全方位的阴影映射 132

    12.1 引言 132

    12.1.1 模板阴影 133

    12.1.2 阴影映射 133

    12.2 阴影映射的算法 133

    12.2.1 条件 133

    12.2.2 算法 134

    12.2.3 纹理格式 135

    12.2.4 阴影贴图的尺寸 135

    12.2.5 几何体的数值范围 135

    12.3 实现 135

    12.3.1 系统需求 135

    12.3.2 资源创建 136

    12.3.3 渲染阶段1:渲染到阴影贴图 136

    12.3.4 渲染阶段2:基本渲染 137

    12.3.5 光照计算 137

    12.3.6 阴影的计算 137

    12.3.7 技巧和窍门 138

    12.3.8 最终的着色遍(Lighting×Shadow) 138

    12.4 添加模糊的阴影 138

    12.5 小结 139

    12.6 参考文献 139

    第13章 使用遮挡区间映射产生模糊的阴影 140

    13.1 加油站 140

    13.2 算法 141

    13.3 创建映射 142

    13.4 渲染 143

    13.5 局限性 144

    13.6 小结 145

    13.7 参考文献 146

    第14章 透视阴影贴图 147

    14.1 引言 147

    14.2 PSM算法的问题 148

    14.2.1 虚拟摄像机 148

    14.2.2 光源摄像机 152

    14.2.3 偏置 157

    14.3 获得更好阴影映射的技巧 160

    14.3.1 过滤器 160

    14.3.2 模糊 161

    14.4 结果 164

    14.5 参考文献 165

    第15章 逐像素光照的可见性管理 166

    15.1 GPU书中的可见性 166

    15.2 批和逐像素光照 166

    15.2.1 逐像素光照的例子 166

    15.2.2 究竟需要多少批 167

    15.3 作为集合的可见性 168

    15.3.1 可见集合 168

    15.3.2 光源集合 168

    15.3.3 照明集合 168

    15.3.4 阴影集合 168

    15.4 各集合的生成 169

    15.4.1 可见集合的生成 169

    15.4.2 光源集合的生成 169

    15.4.3 照明集合的生成 169

    15.4.4 阴影集合的生成 170

    15.5 可见性改善填充率 172

    15.6 实际的应用 173

    15.7 小结 173

    15.8 参考文献 173

    第3部分 材质

    简介 176

    第16章 次表面散射的实时近似 177

    16.1 次表面散射的视觉效果 177

    16.2 简单的散射近似 177

    16.3 用深度映射模拟吸收 179

    16.3.1 实现细节 182

    16.3.2 更精密的散射模型 183

    16.4 纹理空间的漫反散 183

    16.5 小结 187

    16.6 参考文献 187

    第17章 环境遮挡 188

    17.1 概述 188

    17.2 预处理步骤 189

    17.3 硬件加速计算遮挡 190

    17.4 用环境遮挡贴图来渲染 191

    17.5 小结 194

    17.6 参考文献 195

    第18章 空间的BRDFs 198

    18.1 什么是SBRDF 198

    18.2 表达式的详述 198

    18.3 使用离散光的渲染 200

    18.4 使用环境贴图的渲染 202

    18.4.1 算法 202

    18.4.2 shader代码 204

    18.5 小结 207

    18.6 参考文献 207

    第19章 基于图像的光照 208

    19.1 基于图像光照的局部化 208

    19.2 顶点Shader 211

    19.3 片元Shader 213

    19.4 漫反射IBL 215

    19.5 影子 215

    19.6 使用局部立方体贴图作背景 216

    19.7 小结 217

    19.8 参考文献 217

    第20章 纹理爆炸 219

    20.1 纹理爆炸101 219

    20.1.1 求单元 219

    20.1.2 对图像采样 220

    20.1.3 相邻单元中的图像 220

    20.1.4 图像优先级 221

    20.1.5 程序化图像 222

    20.1.6 图像的随机选择 223

    20.2 技术上的考虑 224

    20.3 高级特性 225

    20.3.1 缩放和转动 225

    20.3.2 可控的变量密度 225

    20.3.3 程序化的3D爆炸 226

    20.3.4 随时间变化的纹理 227

    20.3.5 Voronoi相关的细胞法 227

    20.4 小结 229

    20.5 参考文献 229

    第4部分 图像处理

    简介 232

    第21章 实时辉光 234

    21.1 技术概述 234

    21.2 渲染辉光的步骤 237

    21.2.1 辉光源的指定和渲染 237

    21.2.2 模糊辉光源 238

    21.2.3 分步卷积 238

    21.2.4 GPU上的卷积 239

    21.3 特定硬件的实现 240

    21.3.1 Direct3D 9 240

    21.3.2 Direct3D 8 242

    21.3.3 Direct3D 7 242

    21.4 模糊的其他用途 243

    21.5 把效果加入一个游戏引擎 243

    21.5.1 渲染场景 243

    21.5.2 走样问题 244

    21.5.3 DirectX 7的精度问题 244

    21.5.4 残留图像效应 245

    21.5.5 渐变效果 245

    21.6 小结 246

    21.7 参考文献 246

    第22章 颜色控制 248

    22.1 引言 248

    22.2 基于通道的颜色校正 248

    22.2.1 级别 248

    22.2.2 曲线 250

    22.3 多通道的彩色校正和变换 252

    22.3.1 灰度变换 252

    22.3.2 彩色空间的变换 253

    22.4 参考文献 255

    第23章 景深:技术综述 256

    23.1 什么是景深 256

    23.1.1 模糊圈的计算 257

    23.1.2 主要技术 257

    23.2 光线跟踪的景深 258

    23.3 累积缓冲区的景深 258

    23.4 分层的景深 259

    23.5 向前映射的z缓冲区景深 260

    23.6 反向映射的z缓冲区景深 261

    23.7 小结 265

    23.8 参考文献 266

    第24章 高质量的过滤 267

    24.1 质量与速度 267

    24.2 对GPU求导的理解 277

    24.3 解析的反走样和纹理化 278

    24.4 小结 284

    24.5 参考文献 284

    第25章 用纹理贴图进行快速过滤宽度的计算 285

    25.1 在shader中求导的需求 285

    25.2 用纹理计算过滤宽度 287

    25.3 讨论 288

    25.4 参考文献 289

    第26章 OpenEXR图像文件格式 291

    26.1 什么是OpenEXR 291

    26.1.1 高动态范围图像 291

    26.1.2 “半精度”(Half)格式 293

    26.1.3 可表示的数值范围 293

    26.1.4 彩色分辨率 294

    26.1.5 C++接口 294

    26.2 OpenEXR文件结构 294

    26.2.1 文件头 294

    26.2.2 像素 294

    26.3 OpenEXR数据压缩 295

    26.4 OpenEXR的使用 295

    26.4.1 OpenEXR图像的读和显示 295

    26.4.2 一个OpenEXR图像的渲染和写入 296

    26.5 线性像素值 300

    26.6 创建和使用HDR图像 302

    26.7 小结 303

    26.8 参考文献 304

    第27章 图像处理的框架 305

    27.1 引言 305

    27.2 框架设计 306

    27.2.1 操作器和过滤器 306

    27.2.2 图像数据 307

    27.2.3 丢失的块 308

    27.3 实现 310

    27.3.1 Image类 311

    27.3.2 ImageFilter类 314

    27.3.3 过滤的实现 315

    27.4 一个示例应用程序 318

    27.5 性能和局限性 319

    27.6 小结 320

    27.7 参考文献 321

    第5部分 性能及实践

    简介 324

    第28章 图形流水线性能 326

    28.1 概述 326

    28.1.1 流水线 326

    28.1.2 方法 326

    28.2 定位瓶颈 327

    28.2.1 光栅操作 328

    28.2.2 纹理带宽 328

    28.2.3 片元着色 328

    28.2.4 顶点处理 329

    28.2.5 顶点和索引传输 329

    28.3 优化 329

    28.3.1 在CPU上优化 329

    28.3.2 减少顶点传输的开销 330

    28.3.3 顶点处理的优化 331

    28.3.4 加速片元着色 331

    28.3.5 减小纹理带宽 332

    28.3.6 优化帧缓冲带宽 333

    28.4 小结 334

    28.5 参考文献 334

    第29章 有效的遮挡剔除 335

    29.1 什么是遮挡剔除 335

    29.1.1 遮挡查询 335

    29.1.2 早期z值拒绝 335

    29.2 遮挡查询如何工作 336

    29.3 初步使用遮挡查询 336

    29.3.1 恰当地使用遮挡查询 337

    29.3.2 遮挡物和被遮挡物的比较 337

    29.4 更进一步的应用 337

    29.4.1 将物体排序 339

    29.4.2 一个防止误解的说明 339

    29.5 关于包围盒 339

    29.5.1 静态的物体 340

    29.5.2 动画的物体 340

    29.6 其他问题 341

    29.6.1 CPU消耗太高 341

    29.6.2 高分辨率的渲染 341

    29.6.3 快速深度写入的性能 342

    29.6.4 锥体剔除 342

    29.7 一点小忠告 343

    29.8 一个应用:透镜耀斑 343

    29.8.1 渲染透镜耀斑的旧方法 344

    29.8.2 渲染透镜耀斑的新方法 345

    29.9 小结 345

    29.10 参考文献 346

    第30章 FX Composer的设计 347

    30.1 工具的开发 347

    30.2 设计初衷和使用对象 347

    30.3 对象设计 348

    30.4 文件格式 352

    30.5 用户接口 353

    30.6 Direct3D图形的实现 353

    30.6.1 设备窗口 353

    30.6.2 Direct3D效果 354

    30.6.3 ID3DXEffectCompiler 354

    30.6.4 ID3DXEffect 355

    30.7 场景管理 355

    30.8 小结 356

    30.9 参考文献 356

    第31章 FX Composer的使用 357

    31.1 开始 357

    31.1.1 材质面板 358

    31.1.2 场景图形面板 359

    31.1.3 编辑窗口 360

    31.1.4 Shader Perf面板 361

    31.1.5 属性面板 361

    31.1.6 场景面板 363

    31.1.7 纹理面板 364

    31.1.8 任务面板 365

    31.1.9 日志面板 365

    31.2 项目示例 366

    31.3 小结 367

    第32章 Shader接口入门 368

    32.1 shader接口的基础 369

    32.2 一个灵活的光源描述 371

    32.3 材质树 373

    32.4 小结 376

    32.5 参考文献 376

    第33章 将产品的RenderMan shader转化为实时的shader 377

    33.1 引言 377

    33.2 光照 378

    33.2.1 光源 378

    33.2.2 光源shader 378

    33.2.3 其他的光源参数 379

    33.3 顶点程序与片元程序的比较 379

    33.4 使用顶点和片元程序 380

    33.5 片元程序的优化技术 381

    33.5.1 把代码转移到应用层 381

    33.5.2 把代码转移到顶点程序 381

    33.5.3 通过纹理查询优化 382

    33.5.4 向量化的优化 383

    33.5.5 最终的优化 383

    33.6 小结 384

    33.7 参考文献 386

    第34章 将硬件着色整合进Cinema 4D 387

    34.1 引言 387

    34.2 把Cinema 4D连接到CgFX上去 389

    34.3 shader和参数管理 390

    34.4 模拟离线渲染 391

    34.5 结果和性能 393

    34.6 收获和教训 394

    34.7 参考文献 395

    第35章 在实时应用程序中使用高质软件渲染效果 396

    35.1 引言 396

    35.2 用于硬件渲染的内容流水线 397

    35.3 硬件渲染的组件 398

    35.3.1 几何数据 398

    35.3.2 属性映射 398

    35.4 组件的产生 400

    35.4.1 创建几何图形 400

    35.4.2 对纹理和顶点的渲染 400

    35.5 试验情况和结果 403

    35.6 小结 408

    35.7 参考文献 408

    第36章 将Shader整合到应用程序中去 409

    36.1 引言 409

    36.2 关于shader 409

    36.3 一个effect文件的剖析 411

    36.3.1 变量 412

    36.3.2 结构体 412

    36.3.3 pass 412

    36.3.4 technique 412

    36.3.5 评注 412

    36.4 shader数据的类型 413

    36.4.1 场景信息 413

    36.4.2 材质 414

    36.4.3 渲染的场景 414

    36.4.4 顶点数据 414

    36.5 与shader的通信 414

    36.5.1 场景信息 414

    36.5.2 材质的参数 415

    36.5.3 顶点格式 416

    36.5.4 场景 416

    36.5.5 就场景对technique和pass的比较 417

    36.6 effect文件格式的扩展 417

    36.6.1 对预处理程序的支持 417

    36.6.2 对shader变化的支持 418

    36.6.3 shader继承的添加 418

    36.7 小结 419

    36.8 参考文献 419

    第6部分 超越三角形

    简介 422

    第37章 用于GPU计算的工具箱 424

    37.1 用GPU进行计算 424

    37.1.1 编程模型 425

    37.1.2 并行编程 426

    37.1.3 高级的GPU程序 426

    37.2 约减 426

    37.2.1 并行的约减 427

    37.2.2 有关约减的注意事项 428

    37.3 排序和搜索 428

    37.3.1 Bitonic归并排序 428

    37.3.2 二分搜索 430

    37.4 挑战 432

    37.4.1 有限的输出 432

    37.4.2 缓慢的回读 433

    37.4.3 GPU和CPU的比较 433

    37.5 小结 433

    37.6 参考文献 433

    第38章 在GPU上的快速流体动力学模拟 435

    38.1 引言 435

    38.1.1 目的 436

    38.1.2 假设 436

    38.1.3 方法 436

    38.2 数学背景 436

    38.2.1 不可压缩流体的Navier-Stokes方程式 437

    38.2.2 Navier-Stokes方程式的各项 438

    38.2.3 矢量微积分的简要复习 438

    38.2.4 解Navier-Stokes方程式 439

    38.3 实现 443

    38.3.1 CPU-GPU的类比 444

    38.3.2 片运算 445

    38.3.3 片元程序的实现 445

    38.4 应用 450

    38.4.1 模拟液体和气体 450

    38.4.2 浮力和对流 450

    38.5 扩展 451

    38.5.1 旋涡状态的限制 452

    38.5.2 三维 452

    38.5.3 交错排列的网格 452

    38.5.4 任意边界 452

    38.5.5 流体的自由表面 453

    38.6 小结 453

    38.7 参考文献 453

    第39章 体渲染技术 454

    39.1 引言 454

    39.2 体渲染 455

    39.3 基于纹理的体渲染 456

    39.4 实现细节 459

    39.4.1 数据的表达和处理 459

    39.4.2 代理几何体 460

    39.4.3 渲染 461

    39.5 高级技术 463

    39.5.1 体光照 463

    39.5.2 程序化渲染 467

    39.6 对性能的考虑 467

    39.7 小结 469

    39.8 参考文献 469

    第40章 用于三维超声波可视化的实时着色 471

    40.1 背景 471

    40.2 引言 473

    40.2.1 笛卡尔网格数据的体渲染 473

    40.2.2 体渲染锥体网格中的数据 475

    40.3 结果 480

    40.4 小结 480

    40.5 参考文献 480

    第41章 实时立体图 481

    41.1 什么是立体图 481

    41.1.1 立体摄影 481

    41.1.2 随机点立体图 481

    41.1.3 单个图像的立体图 483

    41.2 单个图像立体图的创建 484

    41.2.1 参数 484

    41.2.2 渲染 485

    41.2.3 动画的单个图像立体图的创建 486

    41.2.4 片元程序 488

    41.3 示例应用程序 489

    41.4 参考文献 490

    第42章 变形 491

    42.1 什么是变形 491

    42.2 在GPU上的变形 492

    42.2.1 变形的公式 492

    42.2.2 写顶点程序 492

    42.2.3 法线的变形 493

    42.3 局限性 494

    42.4 性能 495

    42.5 例子:波浪变形 495

    42.6 小结 497
  • 内容简介:
      本书由引领全球计算机图形芯片技术发展的NVIDIA公司组稿,汇集当今国际上前沿开发者们经多年研究和实践得出的实用的实时图形技术成果。本书主要基于当今图形处理器(GPU)的可编程图形管线,除了讲述创建高级视觉效果的基础知识和性能优化技术外,还着重介绍了前沿开发者们总结出来的快速技巧。全书由42篇文章组成,根据主题不同分为6个部分,包括自然效果、光照和阴影、材质、图像处理、性能及实践、超越三角形。

      本书适合于实时渲染相关行业的技术人员阅读,也适合作为相关科研院所的学习研究参考资料。
  • 目录:
    第1部分 自然效果

    简介 2

    第1章 用物理模型进行高效的水模拟 4

    1.1 目标和范围 4

    1.2 正弦近似值的加和 5

    1.2.1 波的选择 5

    1.2.2 法线和切线 6

    1.2.3 几何波 8

    1.2.4 纹理波 11

    1.3 编辑 13

    1.3.1 深度的使用 13

    1.3.2 重载 14

    1.3.3 边长的过滤 15

    1.3.4 纹理坐标 15

    1.4 运行时的处理 16

    1.4.1 凹凸环境映射参数 16

    1.4.2 顶点和像素的处理 18

    1.5 小结 19

    1.6 参考文献 19

    第2章 水刻蚀的渲染 21

    2.1 引言 21

    2.2 刻蚀的计算 22

    2.3 方法 24

    2.4 使用OpenGL实现 25

    2.5 使用高级着色语言实现 25

    2.6 小结 30

    2.7 参考文献 30

    第3章 Dawn演示中的皮肤 31

    3.1 引言 31

    3.2 皮肤着色 32

    3.3 场景的照明 32

    3.3.1 高动态范围的环境 32

    3.3.2 遮挡 34

    3.4 皮肤如何对光进行响应 35

    3.5 实现 36

    3.5.1 顶点Shader 36

    3.5.2 像素Shader 41

    3.6 小结 43

    3.7 参考文献 43

    第4章 Dawn演示中的动画 44

    4.1 简介 44

    4.2 网格的动画 45

    4.3 变形网格对象 45

    4.3.1 高级语言中的变形网格对象 45

    4.3.2 变形网格对象的实现 47

    4.4 蒙皮 48

    4.5 小结 50

    4.6 参考文献 50

    第5章 改良的Perlin噪声的实现 51

    5.1 噪声函数 51

    5.2 最初的实现 52

    5.3 最初实现的缺点 52

    5.4 对噪声函数的改进 54

    5.5 如何在像素shader中产生好的假噪声 56

    5.6 不考虑相邻顶点制作凹凸贴图 57

    5.7 小结 58

    5.8 参考文献 58

    第6章 Vulcan演示中的火 59

    6.1 创建逼真的火焰 59

    6.2 动画精灵的实现 61

    6.2.1 火焰和烟的动画 61

    6.2.2 使火焰增加多样性 62

    6.2.3 动画的存储 63

    6.2.4 火焰和烟的混合 64

    6.3 粒子运动 65

    6.4 性能 65

    6.4.1 层次合成 65

    6.4.2 定制的精灵 67

    6.5 渲染后的效果 67

    6.5.1 辉光 68

    6.5.2 热微光 68

    6.5.3 颗粒 70

    6.5.4 最终的程序 71

    6.6 小结 72

    第7章 无数波动草叶的渲染 73

    7.1 引言 73

    7.2 概述 73

    7.3 草体的准备 74

    7.3.1 草的纹理 74

    7.3.2 草体 74

    7.4 动画 76

    7.4.1 一般思路 76

    7.4.2 每丛草体的动画 77

    7.4.3 每个顶点的动画 79

    7.4.4 每个草体的动画 80

    7.5 小结 82

    7.6 参考文献 82

    第8章 衍射的模拟 84

    8.1 什么是衍射 84

    8.1.1 波动光学 84

    8.1.2 衍射的物理学 85

    8.2 实现 86

    8.3 结果 89

    8.4 小结 90

    8.5 参考文献 90

    第2部分 光照和阴影

    简介 92

    第9章 有效的阴影体渲染 94

    9.1 引言 94

    9.2 程序结构 96

    9.2.1 多遍渲染 96

    9.2.2 顶点缓冲器结构 99

    9.2.3 在无限远处工作 99

    9.3 详细的讨论 101

    9.3.1 数学 101

    9.3.2 代码 103

    9.3.3 markShadows方法 103

    9.3.4 findBackfaces方法 104

    9.3.5 亮罩和暗罩 105

    9.3.6 侧面 106

    9.4 调试 107

    9.5 几何优化 108

    9.5.1 方向光 108

    9.5.2 点光源和聚光灯 108

    9.5.3 剔除阴影体 109

    9.5.4 除罩操作 109

    9.6 填充率的优化 110

    9.6.1 有限的体积 110

    9.6.2 XY裁剪 111

    9.6.3 Z-边界 111

    9.7 将来的阴影 112

    9.8 参考文献 113

    第10章 电影级的光照 114

    10.1 引言 114

    10.2 直射光照明模型 115

    10.2.1 选择 116

    10.2.2 颜色 116

    10.2.3 造型 116

    10.2.4 阴影 117

    10.2.5 纹理 118

    10.2.6 结果 118

    10.3 泛光Shader 119

    10.4 性能分析 124

    10.4.1 速度 124

    10.4.2 开销 124

    10.4.3 优化 124

    10.5 小结 124

    10.6 参考文献 125

    第11章 阴影贴图反走样 126

    11.1 引言 126

    11.2 靠近的百分比过滤 126

    11.3 平滑滤波的实现 127

    11.4 较少地取样 128

    11.5 工作原理 129

    11.6 小结 131

    11.7 参考文献 131

    第12章 全方位的阴影映射 132

    12.1 引言 132

    12.1.1 模板阴影 133

    12.1.2 阴影映射 133

    12.2 阴影映射的算法 133

    12.2.1 条件 133

    12.2.2 算法 134

    12.2.3 纹理格式 135

    12.2.4 阴影贴图的尺寸 135

    12.2.5 几何体的数值范围 135

    12.3 实现 135

    12.3.1 系统需求 135

    12.3.2 资源创建 136

    12.3.3 渲染阶段1:渲染到阴影贴图 136

    12.3.4 渲染阶段2:基本渲染 137

    12.3.5 光照计算 137

    12.3.6 阴影的计算 137

    12.3.7 技巧和窍门 138

    12.3.8 最终的着色遍(Lighting×Shadow) 138

    12.4 添加模糊的阴影 138

    12.5 小结 139

    12.6 参考文献 139

    第13章 使用遮挡区间映射产生模糊的阴影 140

    13.1 加油站 140

    13.2 算法 141

    13.3 创建映射 142

    13.4 渲染 143

    13.5 局限性 144

    13.6 小结 145

    13.7 参考文献 146

    第14章 透视阴影贴图 147

    14.1 引言 147

    14.2 PSM算法的问题 148

    14.2.1 虚拟摄像机 148

    14.2.2 光源摄像机 152

    14.2.3 偏置 157

    14.3 获得更好阴影映射的技巧 160

    14.3.1 过滤器 160

    14.3.2 模糊 161

    14.4 结果 164

    14.5 参考文献 165

    第15章 逐像素光照的可见性管理 166

    15.1 GPU书中的可见性 166

    15.2 批和逐像素光照 166

    15.2.1 逐像素光照的例子 166

    15.2.2 究竟需要多少批 167

    15.3 作为集合的可见性 168

    15.3.1 可见集合 168

    15.3.2 光源集合 168

    15.3.3 照明集合 168

    15.3.4 阴影集合 168

    15.4 各集合的生成 169

    15.4.1 可见集合的生成 169

    15.4.2 光源集合的生成 169

    15.4.3 照明集合的生成 169

    15.4.4 阴影集合的生成 170

    15.5 可见性改善填充率 172

    15.6 实际的应用 173

    15.7 小结 173

    15.8 参考文献 173

    第3部分 材质

    简介 176

    第16章 次表面散射的实时近似 177

    16.1 次表面散射的视觉效果 177

    16.2 简单的散射近似 177

    16.3 用深度映射模拟吸收 179

    16.3.1 实现细节 182

    16.3.2 更精密的散射模型 183

    16.4 纹理空间的漫反散 183

    16.5 小结 187

    16.6 参考文献 187

    第17章 环境遮挡 188

    17.1 概述 188

    17.2 预处理步骤 189

    17.3 硬件加速计算遮挡 190

    17.4 用环境遮挡贴图来渲染 191

    17.5 小结 194

    17.6 参考文献 195

    第18章 空间的BRDFs 198

    18.1 什么是SBRDF 198

    18.2 表达式的详述 198

    18.3 使用离散光的渲染 200

    18.4 使用环境贴图的渲染 202

    18.4.1 算法 202

    18.4.2 shader代码 204

    18.5 小结 207

    18.6 参考文献 207

    第19章 基于图像的光照 208

    19.1 基于图像光照的局部化 208

    19.2 顶点Shader 211

    19.3 片元Shader 213

    19.4 漫反射IBL 215

    19.5 影子 215

    19.6 使用局部立方体贴图作背景 216

    19.7 小结 217

    19.8 参考文献 217

    第20章 纹理爆炸 219

    20.1 纹理爆炸101 219

    20.1.1 求单元 219

    20.1.2 对图像采样 220

    20.1.3 相邻单元中的图像 220

    20.1.4 图像优先级 221

    20.1.5 程序化图像 222

    20.1.6 图像的随机选择 223

    20.2 技术上的考虑 224

    20.3 高级特性 225

    20.3.1 缩放和转动 225

    20.3.2 可控的变量密度 225

    20.3.3 程序化的3D爆炸 226

    20.3.4 随时间变化的纹理 227

    20.3.5 Voronoi相关的细胞法 227

    20.4 小结 229

    20.5 参考文献 229

    第4部分 图像处理

    简介 232

    第21章 实时辉光 234

    21.1 技术概述 234

    21.2 渲染辉光的步骤 237

    21.2.1 辉光源的指定和渲染 237

    21.2.2 模糊辉光源 238

    21.2.3 分步卷积 238

    21.2.4 GPU上的卷积 239

    21.3 特定硬件的实现 240

    21.3.1 Direct3D 9 240

    21.3.2 Direct3D 8 242

    21.3.3 Direct3D 7 242

    21.4 模糊的其他用途 243

    21.5 把效果加入一个游戏引擎 243

    21.5.1 渲染场景 243

    21.5.2 走样问题 244

    21.5.3 DirectX 7的精度问题 244

    21.5.4 残留图像效应 245

    21.5.5 渐变效果 245

    21.6 小结 246

    21.7 参考文献 246

    第22章 颜色控制 248

    22.1 引言 248

    22.2 基于通道的颜色校正 248

    22.2.1 级别 248

    22.2.2 曲线 250

    22.3 多通道的彩色校正和变换 252

    22.3.1 灰度变换 252

    22.3.2 彩色空间的变换 253

    22.4 参考文献 255

    第23章 景深:技术综述 256

    23.1 什么是景深 256

    23.1.1 模糊圈的计算 257

    23.1.2 主要技术 257

    23.2 光线跟踪的景深 258

    23.3 累积缓冲区的景深 258

    23.4 分层的景深 259

    23.5 向前映射的z缓冲区景深 260

    23.6 反向映射的z缓冲区景深 261

    23.7 小结 265

    23.8 参考文献 266

    第24章 高质量的过滤 267

    24.1 质量与速度 267

    24.2 对GPU求导的理解 277

    24.3 解析的反走样和纹理化 278

    24.4 小结 284

    24.5 参考文献 284

    第25章 用纹理贴图进行快速过滤宽度的计算 285

    25.1 在shader中求导的需求 285

    25.2 用纹理计算过滤宽度 287

    25.3 讨论 288

    25.4 参考文献 289

    第26章 OpenEXR图像文件格式 291

    26.1 什么是OpenEXR 291

    26.1.1 高动态范围图像 291

    26.1.2 “半精度”(Half)格式 293

    26.1.3 可表示的数值范围 293

    26.1.4 彩色分辨率 294

    26.1.5 C++接口 294

    26.2 OpenEXR文件结构 294

    26.2.1 文件头 294

    26.2.2 像素 294

    26.3 OpenEXR数据压缩 295

    26.4 OpenEXR的使用 295

    26.4.1 OpenEXR图像的读和显示 295

    26.4.2 一个OpenEXR图像的渲染和写入 296

    26.5 线性像素值 300

    26.6 创建和使用HDR图像 302

    26.7 小结 303

    26.8 参考文献 304

    第27章 图像处理的框架 305

    27.1 引言 305

    27.2 框架设计 306

    27.2.1 操作器和过滤器 306

    27.2.2 图像数据 307

    27.2.3 丢失的块 308

    27.3 实现 310

    27.3.1 Image类 311

    27.3.2 ImageFilter类 314

    27.3.3 过滤的实现 315

    27.4 一个示例应用程序 318

    27.5 性能和局限性 319

    27.6 小结 320

    27.7 参考文献 321

    第5部分 性能及实践

    简介 324

    第28章 图形流水线性能 326

    28.1 概述 326

    28.1.1 流水线 326

    28.1.2 方法 326

    28.2 定位瓶颈 327

    28.2.1 光栅操作 328

    28.2.2 纹理带宽 328

    28.2.3 片元着色 328

    28.2.4 顶点处理 329

    28.2.5 顶点和索引传输 329

    28.3 优化 329

    28.3.1 在CPU上优化 329

    28.3.2 减少顶点传输的开销 330

    28.3.3 顶点处理的优化 331

    28.3.4 加速片元着色 331

    28.3.5 减小纹理带宽 332

    28.3.6 优化帧缓冲带宽 333

    28.4 小结 334

    28.5 参考文献 334

    第29章 有效的遮挡剔除 335

    29.1 什么是遮挡剔除 335

    29.1.1 遮挡查询 335

    29.1.2 早期z值拒绝 335

    29.2 遮挡查询如何工作 336

    29.3 初步使用遮挡查询 336

    29.3.1 恰当地使用遮挡查询 337

    29.3.2 遮挡物和被遮挡物的比较 337

    29.4 更进一步的应用 337

    29.4.1 将物体排序 339

    29.4.2 一个防止误解的说明 339

    29.5 关于包围盒 339

    29.5.1 静态的物体 340

    29.5.2 动画的物体 340

    29.6 其他问题 341

    29.6.1 CPU消耗太高 341

    29.6.2 高分辨率的渲染 341

    29.6.3 快速深度写入的性能 342

    29.6.4 锥体剔除 342

    29.7 一点小忠告 343

    29.8 一个应用:透镜耀斑 343

    29.8.1 渲染透镜耀斑的旧方法 344

    29.8.2 渲染透镜耀斑的新方法 345

    29.9 小结 345

    29.10 参考文献 346

    第30章 FX Composer的设计 347

    30.1 工具的开发 347

    30.2 设计初衷和使用对象 347

    30.3 对象设计 348

    30.4 文件格式 352

    30.5 用户接口 353

    30.6 Direct3D图形的实现 353

    30.6.1 设备窗口 353

    30.6.2 Direct3D效果 354

    30.6.3 ID3DXEffectCompiler 354

    30.6.4 ID3DXEffect 355

    30.7 场景管理 355

    30.8 小结 356

    30.9 参考文献 356

    第31章 FX Composer的使用 357

    31.1 开始 357

    31.1.1 材质面板 358

    31.1.2 场景图形面板 359

    31.1.3 编辑窗口 360

    31.1.4 Shader Perf面板 361

    31.1.5 属性面板 361

    31.1.6 场景面板 363

    31.1.7 纹理面板 364

    31.1.8 任务面板 365

    31.1.9 日志面板 365

    31.2 项目示例 366

    31.3 小结 367

    第32章 Shader接口入门 368

    32.1 shader接口的基础 369

    32.2 一个灵活的光源描述 371

    32.3 材质树 373

    32.4 小结 376

    32.5 参考文献 376

    第33章 将产品的RenderMan shader转化为实时的shader 377

    33.1 引言 377

    33.2 光照 378

    33.2.1 光源 378

    33.2.2 光源shader 378

    33.2.3 其他的光源参数 379

    33.3 顶点程序与片元程序的比较 379

    33.4 使用顶点和片元程序 380

    33.5 片元程序的优化技术 381

    33.5.1 把代码转移到应用层 381

    33.5.2 把代码转移到顶点程序 381

    33.5.3 通过纹理查询优化 382

    33.5.4 向量化的优化 383

    33.5.5 最终的优化 383

    33.6 小结 384

    33.7 参考文献 386

    第34章 将硬件着色整合进Cinema 4D 387

    34.1 引言 387

    34.2 把Cinema 4D连接到CgFX上去 389

    34.3 shader和参数管理 390

    34.4 模拟离线渲染 391

    34.5 结果和性能 393

    34.6 收获和教训 394

    34.7 参考文献 395

    第35章 在实时应用程序中使用高质软件渲染效果 396

    35.1 引言 396

    35.2 用于硬件渲染的内容流水线 397

    35.3 硬件渲染的组件 398

    35.3.1 几何数据 398

    35.3.2 属性映射 398

    35.4 组件的产生 400

    35.4.1 创建几何图形 400

    35.4.2 对纹理和顶点的渲染 400

    35.5 试验情况和结果 403

    35.6 小结 408

    35.7 参考文献 408

    第36章 将Shader整合到应用程序中去 409

    36.1 引言 409

    36.2 关于shader 409

    36.3 一个effect文件的剖析 411

    36.3.1 变量 412

    36.3.2 结构体 412

    36.3.3 pass 412

    36.3.4 technique 412

    36.3.5 评注 412

    36.4 shader数据的类型 413

    36.4.1 场景信息 413

    36.4.2 材质 414

    36.4.3 渲染的场景 414

    36.4.4 顶点数据 414

    36.5 与shader的通信 414

    36.5.1 场景信息 414

    36.5.2 材质的参数 415

    36.5.3 顶点格式 416

    36.5.4 场景 416

    36.5.5 就场景对technique和pass的比较 417

    36.6 effect文件格式的扩展 417

    36.6.1 对预处理程序的支持 417

    36.6.2 对shader变化的支持 418

    36.6.3 shader继承的添加 418

    36.7 小结 419

    36.8 参考文献 419

    第6部分 超越三角形

    简介 422

    第37章 用于GPU计算的工具箱 424

    37.1 用GPU进行计算 424

    37.1.1 编程模型 425

    37.1.2 并行编程 426

    37.1.3 高级的GPU程序 426

    37.2 约减 426

    37.2.1 并行的约减 427

    37.2.2 有关约减的注意事项 428

    37.3 排序和搜索 428

    37.3.1 Bitonic归并排序 428

    37.3.2 二分搜索 430

    37.4 挑战 432

    37.4.1 有限的输出 432

    37.4.2 缓慢的回读 433

    37.4.3 GPU和CPU的比较 433

    37.5 小结 433

    37.6 参考文献 433

    第38章 在GPU上的快速流体动力学模拟 435

    38.1 引言 435

    38.1.1 目的 436

    38.1.2 假设 436

    38.1.3 方法 436

    38.2 数学背景 436

    38.2.1 不可压缩流体的Navier-Stokes方程式 437

    38.2.2 Navier-Stokes方程式的各项 438

    38.2.3 矢量微积分的简要复习 438

    38.2.4 解Navier-Stokes方程式 439

    38.3 实现 443

    38.3.1 CPU-GPU的类比 444

    38.3.2 片运算 445

    38.3.3 片元程序的实现 445

    38.4 应用 450

    38.4.1 模拟液体和气体 450

    38.4.2 浮力和对流 450

    38.5 扩展 451

    38.5.1 旋涡状态的限制 452

    38.5.2 三维 452

    38.5.3 交错排列的网格 452

    38.5.4 任意边界 452

    38.5.5 流体的自由表面 453

    38.6 小结 453

    38.7 参考文献 453

    第39章 体渲染技术 454

    39.1 引言 454

    39.2 体渲染 455

    39.3 基于纹理的体渲染 456

    39.4 实现细节 459

    39.4.1 数据的表达和处理 459

    39.4.2 代理几何体 460

    39.4.3 渲染 461

    39.5 高级技术 463

    39.5.1 体光照 463

    39.5.2 程序化渲染 467

    39.6 对性能的考虑 467

    39.7 小结 469

    39.8 参考文献 469

    第40章 用于三维超声波可视化的实时着色 471

    40.1 背景 471

    40.2 引言 473

    40.2.1 笛卡尔网格数据的体渲染 473

    40.2.2 体渲染锥体网格中的数据 475

    40.3 结果 480

    40.4 小结 480

    40.5 参考文献 480

    第41章 实时立体图 481

    41.1 什么是立体图 481

    41.1.1 立体摄影 481

    41.1.2 随机点立体图 481

    41.1.3 单个图像的立体图 483

    41.2 单个图像立体图的创建 484

    41.2.1 参数 484

    41.2.2 渲染 485

    41.2.3 动画的单个图像立体图的创建 486

    41.2.4 片元程序 488

    41.3 示例应用程序 489

    41.4 参考文献 490

    第42章 变形 491

    42.1 什么是变形 491

    42.2 在GPU上的变形 492

    42.2.1 变形的公式 492

    42.2.2 写顶点程序 492

    42.2.3 法线的变形 493

    42.3 局限性 494

    42.4 性能 495

    42.5 例子:波浪变形 495

    42.6 小结 497
查看详情
12
相关图书 / 更多
GPU精粹:实时图形编程的技术、技巧和技艺
GPU编程实战 基于Python和CUDA
布莱恩·图奥迈宁(Brian Tuomanen)
GPU精粹:实时图形编程的技术、技巧和技艺
GPS定位测量
周建郑 主编
GPU精粹:实时图形编程的技术、技巧和技艺
GPS反射信号建模及其应用研究
孙小荣 著
GPU精粹:实时图形编程的技术、技巧和技艺
GPS测量技术/“十三五”高职高专规划教材
闫野、姜雄基、张振雷、黄雪梅 编
GPU精粹:实时图形编程的技术、技巧和技艺
GPS高程测量理论方法及工程应用
宋雷 著
GPU精粹:实时图形编程的技术、技巧和技艺
GPS测量技术(第2版)/教育部高等学校高职高专测绘类专业教学指导委员会行“牛志宏,陈志兰”规划教材
牛志宏、陈志兰 编
GPU精粹:实时图形编程的技术、技巧和技艺
GPT时代的量化交易:底层逻辑与技术实践
罗勇
GPU精粹:实时图形编程的技术、技巧和技艺
GPU并行算法——N-S方程高性能计算
白智勇;李志辉
GPU精粹:实时图形编程的技术、技巧和技艺
GPS原理与接收机设计(修订版)
谢钢
GPU精粹:实时图形编程的技术、技巧和技艺
GPS/GNSS原理与应用(第3版)
Hegarty(克里斯朵夫・赫加蒂盖) 著;[美]Elliott、D.、Kaplan(埃利奥特・D.卡普兰)、Christopher、寇艳红 译
GPU精粹:实时图形编程的技术、技巧和技艺
GPT时代人类再腾飞
[美]里德·霍夫曼(Reid Hoffman)& GPT-4 著;芦义 译;湛庐 出品
GPU精粹:实时图形编程的技术、技巧和技艺
GPS/INS/星敏感器六自由度建模与仿真:在CADAC++中对一枚三级固体火箭进行NGC仿真
[美]彼得·H·齐普费尔(Peter H.Zipfel) 著;张旭辉、陈洪波、谢泽兵 译
您可能感兴趣 / 更多
GPU精粹:实时图形编程的技术、技巧和技艺
浆膜腔积液细胞病理学国际报告系统
费尔南多·施米特 著;刘东戈 译;阿希什·钱德拉;芭芭拉·克罗瑟斯;丹尼尔·库尔特茨;张智慧;金木兰;吴广平
GPU精粹:实时图形编程的技术、技巧和技艺
法兰西的特性(全三册)(汉译名著19)
费尔南·布罗代尔 著
GPU精粹:实时图形编程的技术、技巧和技艺
论历史(下)
费尔南·布罗代尔 著;沈坚、董子云 译
GPU精粹:实时图形编程的技术、技巧和技艺
论历史(上)
费尔南·布罗代尔
GPU精粹:实时图形编程的技术、技巧和技艺
世界文明立体翻翻书:回到古埃及
费尔南多·维森特 著;波·琼·埃尔南德斯、孙巍、[西]董琳娜 译
GPU精粹:实时图形编程的技术、技巧和技艺
索尔吉他教程
费尔南多·索尔
GPU精粹:实时图形编程的技术、技巧和技艺
不安之书(一部未完之作,却又穷尽一切,被世人称为“灵魂之书”。陈实先生的经典译本)
费尔南多·佩索阿
GPU精粹:实时图形编程的技术、技巧和技艺
黄金比例
费尔南多·科尔瓦兰(Fernando Corbalan)
GPU精粹:实时图形编程的技术、技巧和技艺
每天都在悲欣交集中醒来:费尔南多·佩索阿诗选
费尔南多·佩索阿 著;杨子 译
GPU精粹:实时图形编程的技术、技巧和技艺
法兰西的特性(精装本)
费尔南·布罗代尔
GPU精粹:实时图形编程的技术、技巧和技艺
歌德在法国:《少年维特之烦恼》在法国的传播与接受研究
费尔南德·巴登斯伯格(Fernand Baldensperger) 著;郭玉梅、巫春峰、尹婧、陈淑婷 译
GPU精粹:实时图形编程的技术、技巧和技艺
不安之书
费尔南多·佩索阿 著;刘勇军 译