出版时间:2010-6 出版社:清华大学出版社 作者:阮亚 页数:692 字数:1055000 译者:杨柏林,陈根浪,王聪
Tag标签:无
前言
组合,也就是把一些基本操作组织成一个不明显的整体,这对命令式编程非常重要。微处理器的指令集体系结构(ISA)是一个多功能的组合接口,开发软件渲染器的程序员们在不断追求真实感图像的过程中,会高效并富于创造性地使用它们。早期的硬件图形设备增强了渲染的性能,但是在组合方面经常会付出高额的成本,其结果造成在可编程性和应用的创新方面也需要付出很高的代价。类微处理器的可编程硬件一直都在发展(如Ikonas图形系统)。但图形硬件加速的主要形式一直围绕着固定渲染操作序列展开,通常称为图形流水线(graphic pipeline)。这些系统的早期接口,如CORE和后来的PHIGS,允许程序员指定渲染的结果,但不允许进行组合。 我有幸参与了OpenGL从20世纪90年代初期Silicon Graphics定义的前身IRISGL,到通过指定相应的体系结构(非正式名称为OpenGL Machine)来解决组合需要的过程,这些指令是通过命令式编程接口来访问的。许多特征——例如,严格规定的语义;表驱动的操作,如模板和深度缓冲功能;使用通用一维、二维和三维查找函数实现的纹理映射;可重复性的要求——确保程序员可以使用OpenGL的各种操作,生成强大可靠的结果。OpenGL支持一些有用的技术,包括基于纹理的体积渲染,使用模板缓冲区的阴影体积和构造立方体几何算法,如封盖(在裁剪平面和由多边形构造的实体相交处计算表平面)。后来,Mark Peercy和他的合作者在SIGGRAPH2000上发表的论文“交互式多通道可编程着色”阐释了任意的Render Man着色器均可以通过组合OpenGL渲染操作来实现加速。 在这10年中,集成电路技术原动力的增长使得OpenGL体系结构(以及后来的Direct3D)扩展到了ISA接口。这些扩展在图形流水线中作为可编程顶点和片段着色器出现,现在,随着CUDA的引入,这些扩展已经成为了与微处理器同等重要的数据并行ISA了。尽管和完整的类微处理器多功能性相比,它的周期还不是那么完整,但图形硬件加速的巨大威力对程序员来讲已经变得比以前更易用了。 它的计算能力非常强大!在编写本书时,NVIDIAGeForce8800Ultra每秒可以执行超过400亿次的浮点运算——比10年前最强大的超级计算机还要厉害,并且是现今最强大的微处理器功能的5倍。Ultra所支持的数据并行编程模型可以充分发挥其计算能力,而不必关心究竟使用了多少个处理器。这是非常重要的,因为今天的Ultra已经包含了100个处理器,而明天的Ultra可能包含更多,以后会更多。如摩尔定律所言,我们看不到集成电路密度究竟会发展到何种程度,但是大规模并行系统无疑是计算的未来,而图形硬件将会引导这种趋势。 本书收集了大量最前沿的GPU编程实例。现在,已是将数据并行处理纳入工作中的时候了。本书前4部分介绍的是GPU在几何体、光照、渲染和图像处理领域的具体应用。第V、VI部分扩大了GPU的应用范围,通过一些具体的可被数据并行GPU技术解决的非图形应用程序来说明这一点。这些应用多种多样,从刚体模拟到流体模拟,从病毒签名匹配到加密和解密,从随机数生成到Gaussian计算。 最先进的计算设备究竟在哪里呢?本书的封面提醒我们,人类的大脑仍然是最强大的并行计算系统。计算机科学一个长期的目标是达到并最终超越人类的大脑。对计算机图形社区的成员来讲,这将是非常振奋人心的,因为他们了解、解决并掌控着大规模并行计算的挑战,他们最有可能实现这个梦想。
内容概要
《GPU精粹3》是GPU精粹系列畅销书的第三卷,展示了当今最前沿的图形处理单元(GPU)编程技术。现代GPU的可编程性让开发者不仅可以在自己的岗位上迅速脱颖而出,更使得他们可以在非图形应用程序中运用GPU的卓越处理能力,例如,物理仿真、金融分析,甚至是病毒检测——尤其是在cuDA体系结构下。图形学仍然是GPU主要应用领域,通过学习本书,读者会惊喜地发现一些最新的算法,使用它们可以创建非常真实的角色,实现更逼真的光照效果,以及完成绘制后的混合效果。 本书主题 ·几何体 ·光照和阴影 ·渲染 ·图像效果 ·物理仿真 ·GPU计算
作者简介
《GPU精粹3》的主编是NVIDIA公司开发者培训部的资深经理Hubert Nguyen。他是一位经验丰富的图形工程师,曾为NVIDIA公司的Demo Team部门做出过巨大贡献。他编著的图书GPU Gems(Addison Wesley,2004)和《GPU精粹2》都非常畅销。
书籍目录
第Ⅰ部分 几何体 第1章 使用GPU 生成复杂的程序化地形 第2章 群体动画渲染 第3章 DirectX 10 混合形状:打破限制 第4章 下一代SpeedTree 渲染 第5章 普遍自适应的网格优化 第6章 GPU 生成的树的过程式风动画 第7章 GPU 上基于点的变形球可视化 第Ⅱ部分 光照和阴影 第8章 区域求和的差值阴影贴图 第9章 使用全局照明实现互动的电影级重光照 第10章 在可编程GPU 中实现并行分割的阴影贴图 第11章 使用层次化的遮挡剔除和几何体着色器得到高效鲁棒的阴影体 第12章 高质量的环境遮挡 第13章 作为后置处理的体积光照散射 第Ⅲ部分 渲染 第14章 用于真实感实时皮肤渲染的高级技术 第15章 可播放的全方位捕捉 第16章 Crysis 中植被的过程化动画和着色 第17章 鲁棒的多镜面反射和折射 第18章 用于浮雕映射的松散式锥形步进 第19章 Tabula Rasa 中的延迟着色 第20章 基于GPU 的重要性采样 第Ⅳ部分 图像效果 第21章 真正的Impostor 第22章 在GPU 上处理法线贴图 第23章 高速的离屏粒子 第24章 保持线性的重要性 第25章 在GPU 上渲染向量图 第26章 通过颜色进行对象探测:使用 GPU 进行实时视频图像处理 第28章 实用景深后期处理 第Ⅴ部分 物理仿真 第29章 GPU 上实时刚体仿真 第30章 实时仿真与3D 流体渲染 第31章 使用CUDA 进行快速N-body 仿真 第32章 使用CUDA 进行宽阶段碰撞检测 第33章 用于碰撞检测的LCP算法的CUDA 实现 第34章 使用单过程GPU 扫描和四面体转换的有向距离场 第Ⅵ部分 GPU 计算 第35章 使用GPU 进行病毒特征的快速匹配 第36章 用GPU 进行AES 加密和解密 第37章 使用CUDA 进行高效的随机数生成及应用 第38章 使用CUDA 进行地球内部成像 第39章 使用CUDA 的并行前缀和(扫描方法) 第40章 高斯函数的增量计算 第41章 使用几何体着色器处理紧凑和可变长度的GPU 反馈
章节摘录
我们首先通过对片段的每个位置指定一个透明度值来执行混合,这个透明度值基于片段位置的距离。在进行实际绘制前,我们在一个透明度路径中累加这些透明度值。在绘制时,我们可以基于片段的透明度值,以及在透明度路径中存储的累加透明度值,来决定一个片段对总像素颜色的作用效果。最终,我们使用法线扰动技术来增加细节,改善流表面的混合。当将表面作为有向片段渲染时,我们在每个片段处略微地扰动法线。法线的扰动由流密度场的曲率决定,密度场位于渲染片段的粒子位置处。密度场的曲率可以在速度限制路径中通过计算密度场及梯度得到。使用梯度,我们可以获得关于被渲染片段尺寸的一个向量,相切于流表面。这个向量与曲率(一个3×3矩阵)相乘,可获得法线沿切向量的一个变化量。我们仅存储使用点积得到的且法线投影到切向量方向的变化量,结果是一个缩放因子。这是对粒子位置偏离度的一个估计(实际上,它仅包含了部分的偏离度)。这个缩放因子被存储起来,在表面渲染阶段,可以将该缩放因子与重新构建的切向量结合使用,来构成正方形法线的扰动法线。 7.7结论 本章给出了一个方法,该方法有效且高效地在GPU中实现了Witkin and Heckbert 1994的基于点的隐式表面可视化,在保持互动级帧速率的情况下渲染可变形球。我们的方法由三部分构成:计算受限速度、斥力及粒子密度,来实现接近一致的粒子分布。后面两部分包含了一个用于GPU粒子系统的新算法,粒子之间相互影响。方法的最后一个部分对原始方法进行了改进,加速了流表面粒子的分布,并可以在不连续的表面使用分布,这样防止了空隙。相比于行进立方体(Marching Cubes)方法和光线追踪方法,这个方法具有明显的性能优势,这是因为其复杂度取决于流表面面积,而前两种方法的复杂度取决于流的体积。 目前给出的方法仍然没有解决所有的问题。算法的进一步改进包含具有适应性的粒子尺寸(这样可以使流表面的临时空隙被快速填充)。同时,新生成的不连续表面部分并不总是在其表面具有粒子,这意味着只要它们仍然不连续,就一直不会收到任何粒子。但最大的问题在于,对位于较远且较小的流部分的处理。由于斥力算法需要包含每个粒子的一个剪辑空间,因此有限分辨率的视口很可能导致多个粒子映射到了同一个像素上,造成数据丢失。最终的研究方向包括渲染表面粒子来实现不同的视觉效果,图7-11就是这样的一个例子。
媒体关注与评论
“GPU精粹系列展示了下一代3D引擎所需的大量核心算法。” ——Martin Mittring Grytek首席图形程序员
图书封面
图书标签Tags
无
评论、评分、阅读与下载