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

GPU精华:实时图形编程的技术、技巧、和技艺
作 者: 龚敏敏
出版社: 人民邮电出版社
丛编项: 实时图形编程的技术、技巧和技艺
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 接口
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《GPU精华:实时图形编程的技术、技巧、和技艺》作者简介

内容简介

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

图书目录

第l部分自然效果

简介

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

1.1目标和范围

1.2正弦近似值的加和

1.2.1波的选择

1.2.2法线和切线

1.2.3)L何波

1.2.4纹理波

1.3编辑

1.3.1深度的使用

1.3.2重载

1.3.3边长的过滤

l.3.4纹理坐标

1.4运行时的处理

1.4.1凹凸环境映射参数

1.4.2顶点和像素的处理

1.5小结

1.6参考文献

第2章水刻蚀的渲染

2.1引言

2.2刻蚀的计算

2.3方法

2.4使用OpenGL实现

2.5使用高级着色语言实现

2.6小结

2.7参考文献

第3章Dawn演示中的皮肤

3.1引言

3.2皮肤着色

3.3场景的照明

3.3.1高动态范围的环境

3.3.2遮挡

3.4皮肤如何对光进行响应

3.5实现

3.5.1顶点Shader

3.5.2像素Shader

3.6小结

3.7参考文献

第4章Dawn演示中的动画

4.1髑食

4.2网格的动画

4.3变形网格对象

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

4.3.2变形网格对象的实现

4.4蒙皮

4.5小结

4.6参考文献

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

5.1噪声函数

5.2最初的实现

5.3最初实现的缺点

5.4对噪声函数的改进

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

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

5.7小结

5.8参考文献

第6章Vulcan演示中的火

6.1创建逼真的火焰

6.2动画精灵的实现

6.2.1火焰和烟的动画

6.2.2使火焰增加多样性

6.2.3动画的存储

6.2.4火焰和烟的混合

6.3粒子运动

6.4性能

6.4.1层次合成

6.4.2 定制的精灵

6.5渲染后的效果

6.5.1辉光

6.5.2热微光

6.5.3粒

6.5.4最终的程序

6.6小结

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

7.1引言

7.2概述

7.3草体的准备

7.3.1草的纹理

7.3.2草体

7.4动画

7.4.1一般思路

7.4.2每丛草体的动画

7.4.3每个顶点的动画

7.4.4每个草体的动画

7.5小结

7.6参考文献

第8章衍射的模拟

8.1什么是衍射

8.1.1波动光学

8.1.2衍射的物理学

8.2实现

8.3结果

8.4小结

8.5参考文献

第2部分光照和阴影

简介

第9章有效的阴影体渲染

9.1引言

9.2程序结构

9.2.1多遍渲染

9.2.2顶点缓冲器结构

9.2.3在无限远处工作

9.3详细的讨论

9.3.1数学

9.3.2代码

9.3.3markShadows方法

9.3.4findBackfaces方法

9.3.5亮罩和暗罩

9.3.6侧面

9.4调试

9.5几何优化

9.5.1方向光

9.5.2点光源和聚光灯

9.5.3剔除阴影体

9.5.4除罩操作

9.6填充率的优化

9.6.1有限的体积

9.6.2XY裁剪

9.6.3Z-边界

9.7将来的阴影

9.8参考文献

第10章电影级的光照

10.1引言

10.2直射光照明模型

10.2.1选择

10.2.2颜色

10.2.3造型

10.2.4阴影

10.2.5纹理

10.2.6结果

10.3泛光Shade r

10.4性能分析

10.4.1速度

10.4.2开销

10.4.3优化

10.5小结

10.6参考文献

第11章阴影贴图反走样

11.1引言

11.2靠近的百分比过滤

11.3平滑滤波的实现

11.4较少地取样

11.5T作原理

11.6小结

11.7参考文献

第12章全方位的阴影映射

12.1引言

12.1.1模板阴影

12.1.2N影映射

12.2阴影映射的算法

12.2.1条件

12.2.2算法

12.2.3纹理格式

12.2.4阴影贴图的尺寸

12.2.5几何体的数值范围

12.3实现

12.3.1系统需求

12.3.2资源创建

12.3.3渲染阶段l:渲染到阴影贴图

12.3.4渲染阶段2:基本渲染

12.3.5光照计算

12.3.6阴影的计算

12.3.7技巧和窍门

12.3.8最终的着色遍(LightingxShadow)

12.4添加模糊的阴影

12.5小结

12.6参考文献

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

13.1加油站

13.2算法

13.3创建映射

13.4渲染

13.5局限性

13.6小结

13.7参考文献

第14章透视阴影贴图

14.1引言

14.2PSM算法的问题

14.2.1虚拟摄像机

14.2.2光源摄像机

14.2.3偏置

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

14.3.I过滤器

14.3.2模糊

14.4结果

14.5参考文献

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

15.1GPU书中的可见性

15.2批和逐像素光照

15.2.1逐像素光照的例子

15.2.2究竟需要多少j比

15.3作为集合的可见性

15.3.1可见集合

15.3.2光源集合

15.3.3照明集合

15.3.4阴影集合

15.4各集合的生成

15.4.1可见集合的生成

15.4.2光源集合的生成

15.4.3照明集合的生成

15.4.4阴影集合的生成

15.5可见性改善填充率

15.6实际的应用

15.7小结

15.8参考文献

第3部分材质

简介

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

16.1次表面散射的视觉效果

16.2简单的散射近似

16.3用深度映射模拟吸收

16.3.1实现细节

l6.3.2更精密的散射模型

16.4纹理空间的漫反散

16.5小结

16.6参考文献

第17章环境遮挡.

第18章空间的BRDFs

18.1什么是SBRDF

18.2表达式的详述

18.3使用离散光的渲染

18.4使用环境贴图的渲染

18.4.1算法.

18.4.2shader代码

18.5小结

18.6参考文献

第19章基于图像的光照

19.1基于图像光照的局部化

l9.2]页点Shader

19.3片元Shader

19.4漫反射IBL

19.5影子

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

19.7小结

19.8参考文献

第20章纹理爆炸

20.1纹理爆炸

20.1.1求单元

20.1.2对图像采样

20.1.3相邻单元中的图像

20.1.4图像优先级

20.1.5程序化图像

20.1.6图像的随机选择

20.2技术上的考虑

20.3高级特性

20.3.1缩放和转动

20.3.2可控的变量密度

20.3.3程序化的3D爆炸

20.3.4随时间变化的纹理

20.3.5Voronoi相关的细胞法

20.4小结

20.5参考文献

第4部分图像处理

简介

第2l章实时辉光

21.1技术概述

21.2渲染辉光的步骤

21.2.1辉光源的指定和渲染

21.2.2模糊辉光源

21.2.3分步卷积

21.2.4GPU上的卷积

2l.3特定硬件的实现

21.3.1Direct3D9

21.3.2Direct3D8

21.3.3Direct3D7

21.4模糊的其他用途

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

21.5.1渲染场景

21.5.2走样问题

21.5.3DirectX7的精度问题

21.5.4残留图像效应

21.5.5渐变效果

21.6小结

21.7参考文献

第22章颜色控制

22.1引言

22.2基于通道的颜色校正

22.2.1 级别

22.2.2曲线

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

22.3.1灰度变换

22.3.2彩色空间的变换

22.4参考文献

第23章景深:技术综述

23.1什么是景深

23.1.1模糊圈的计算

23.1.2主要技术

23.2光线跟踪的景深

23.3累积缓冲区的景深

23.4分层的景深

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

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

23.7小结

23.8参考文献

第24章高质量的过滤

24.1质量与速度

24.2对GPU求导的理解

24.3解析的反走样和纹理化

24.4小结

24.5参考文献

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

25.1在shader中求导的需求

25.2用纹理计算过滤宽度

25.3讨论

25.4参考文献

第26章openEXR图像文件格式

26.1什么是OpenEXR

26.1.1高动态范围图像

26.1.2“半精度”(Half)格式

26.1.3可表示的数值范围

26.1.4彩色分辨率

26.1.5C++接口

26.2OpenEXR文件结构

26.2.1文件头

26.2.2像素

26.3OpenEXR数据压缩

26.4OpenEXR的使用

26.4.1OpenEXR图像的读和显示

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

26.5线性像素值

26.6创建和使用HDR图像

26.7小结

26.8参考文献

第27章图像处理的框架

27.1引言

27.2框架设计

27.2.1操作器和过滤器

27.2.2图像数据

27.2.3丢失的块

27.3实现

27.3.1Image类

27.3.2lmageFilter类

27.3.3过滤的实现

27.4一个示例应用程序

27.5性能和局限性

27.6小结

27.7参考文献

第5部分性能及实践

简介

第28章图形流水线性能

28.1概述

28.1.1流水线

28.1.2方法

28.2定位瓶颈

28.2.1光栅操作

28.2.2纹理带宽

28.2.3片元着色

28.2.4顶点处理

28.2.5顶点和索引传输

28.3优化

28.3.1在CPU上优化

28.3.2减少顶点传输的开销

28.3.3顶点处理的优化

28.3.4加速片元着色

28.3.5减小纹理带宽

28.3.6优化帧缓冲带宽

28.4小结

28.5参考文献

第29章有效的遮挡剔除

29.1什么是遮挡剔除

29.1.1遮挡查询

29.1.2早期z值拒绝

29.2遮挡查询如何工作

29.3初步使用遮挡查询

29.3.1恰当地使用遮挡查询

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

29.4更进一步的应用

29.4.1将物体排序

29.4.2一个防止误解的说明

29.5关于包围盒

29.5.1静态的物体

29.5.2动画的物体

29.6其他问题

29.6.1CPU消耗太高

29.6.2高分辨率的渲染

29.6.3快速深度写入的性能

29.6.4锥体剔除

29.7一点小忠告

29.8一个应用:透镜耀斑

29.8.1渲染透镜耀斑的旧方法

29.8.2渲染透镜耀斑的新方法

29.9小结

29.10参考文献

第30章FXComposer的设计

30.1工具的开发

30.2设计初衷和使用对象”

30.3对象设计

30.4文件格式

30.5用户接口

30.6Direct3D图形的实现

30.6.1设备窗口

30.6.2Direct3D效果

30.6.3ID3DXEfiectC0mpiler

30.6.4ID3DXEffect

30.7场景管理

30.8小结

30.9参考文献

第3l章FXComposer的使用

31.1开始

31.1.1材质面板

31.1.2场景图形面板

31.1.3编辑窗口

31.1.4ShaderPerf面板

31.1.5属性面板

31.1.6场景面板

31.1.7纹理面板

31.1.8任务面板

31.1.9日志面板

31.2项目示例

31.3小结

第32章Shader接口入门

32.1shader接口的基础

32.2一个灵活的光源描述

32.3材质树

32.4小结

32.5参考文献

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

33.1引言

33.2光照

33.2.1光源

33.2.2光源shader

33.2.3其他的光源参数

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

33.4使用顶点和片元程序

33.5片元程序的优化技术

33.5.1把代码转移到应用层

33.5.2把代码转移到顶点程序

33.5.3通过纹理查询优化

33.5.4向量化的优化

33.5.5最终的优化

33.6小结

33.7参考文献

第34章将硬件着色整合进Cinema4D

34.1引言

34.2把Cinema4D连接到CgFX上去

34.3shader和参数管理

34.4模拟离线渲染

34.5结果和性能

34.6收获和教训

34.7参考文献

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

35.1引言

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

35.3硬件渲染的组件

35.3.1几何数据

35.3.2属性映射

35.4组件的产生

35.4.创建几何图形

35.4.2对纹理和顶点的渲染

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

36.1引言

36.2关于shader

36.3一个effect文件的剖析

36.3.1变量

36.3.2结构体

36.3.3pass

36.3.4technique

36.3.5评注

36.4shader数据的类型

36.4.1场景信息

36.4.2材质

36.4.3渲染的场景

36.4.4顶点数据

36.5与shader的通信

36.5.1场景信息

36.5.2材质的参数

36.5.3顶点格式

36.5.4场景

36.5.5就场景对technique和pass的比较

36.6effect文件格式的扩展

36.6.1对预处理程序的支持

36.6.2对shader变化的支持

36.6.3shader继承的添加

36.7小结

36.8参考文献

第6部分超越三角形

简介

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

37.1用GPU进行计算

37.1.1编程模型

37.1.2并行编程

37.1.3高级的GPU程序

37.2约减

37.2.1并行的约减

37.2.2有关约减的注意事项

37.3排序和搜索

37.3.1Bitonic归并排序

37.3.2二分搜索

37.4挑战

37.4.1有限的输出

37.4.2缓慢的回读

37.4.3GPU和CPU的比较

37.5小结

37.6参考文献

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

38.1引言

38.1.1目的

38.1.2假设

38.1.3方法

38.2数学背景

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

38.2.2Navier.Stokes方程式的各项

38.2.3矢量微积分的简要复习

38.2.4解Navier.Stokes方程式

38.3实现

38.3.1CPU.GPU的类比

38.3.2片运算

38.3.3片元程序的实现

38.4应用

38.4.1模拟液体和气体

38.4.2浮力和对流

38.5扩展

38.5.1旋涡状态的限制

38.5.2三维

38.5.3交错排列的网格

38.5.4任意边界

38.5.5流体的自由表面

38.6小结

38.7参考文献

第39章体渲染技术

39.1引言

39.2体渲染

39.3基于纹理的体渲染

39.4实现细节

39.4.1数据的表达和处理

39.4.2代理几何体

39.4.3渲染

39.5高级技术

39.5.1体光照

39.5.2程序化渲染

39.6对性能的考虑

39.7小结

39.8参考文献

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

40.1背景

40.2引言

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

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

40.3结果

40.4小结

40.5参考文献

第4l章实时立体图

41.1什么是立体图

41.1.1立体摄影

41.1.2随机点立体图

41.1.3单个图像的立体图

41.2单个图像立体图的创建

41.2.1参数

41.2.2渲染

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

41.2.4片元程序

41.3示例应用程序

41.4.参考文献

第42章变形

42.1什么是变形

42.2在GPU上的变形

42.2.1变形的公式

42.2.2写顶点程序

42.2.3法线的变形

42.3局限性

42.4性能

42.5例子:波浪变形

42.6小结