(计算机软件与理论专业论文)基于gpu的实时绘制算法研究.pdf_第1页
(计算机软件与理论专业论文)基于gpu的实时绘制算法研究.pdf_第2页
(计算机软件与理论专业论文)基于gpu的实时绘制算法研究.pdf_第3页
(计算机软件与理论专业论文)基于gpu的实时绘制算法研究.pdf_第4页
(计算机软件与理论专业论文)基于gpu的实时绘制算法研究.pdf_第5页
已阅读5页,还剩50页未读 继续免费阅读

(计算机软件与理论专业论文)基于gpu的实时绘制算法研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

重庆大学硕士学位论文中文摘要 摘要 图形质量和绘制速度是三维实时绘制技术的主要矛盾。三维实时绘制的场景 常常包含数百万甚至上千万的三角形,而且其几何模型还有越来越复杂的趋势。 传统图形流水线完全依赖c p u 执行各环节的大量运算,而c p u 并不是专门为图 形运算设计的。因此,完全利用c p u 来实现三维实时绘制是非常困难的。g p u ( g r a p h i c sp r o c e s s i n gu n i t ) 的出现为这一重要问题提供了一条现实的解决途径。 近年来,g p u 的发展速度已经大大超过了摩尔定律。目前,g p u 的浮点运算性能 和数据吞吐率已经超过同时代的主流c p u 。更重要的是,g p u 已经具有了独立的 处理核心、内存空间和编程语言,获得了与c p u 类似的可编程能力,这一切使得 g p u 无可争议地成为三维实时绘制的主流计算平台。g p u 的出现和发展不但极大 地提高了计算机图形处理的速度和质量,而且还极大地促进了计算机图形相关应 用领域的快速发展。 图形流水线是计算机图形学中最基本、最重要的技术框架。几乎所有的计算 机图形研发工作都以这个框架模型为基础。虽然g p u 具有非常高的计算速度,但 以前在传统图形流水线上实现的算法却并不能直接照搬到g p u 图形流水线上来, 这是因为g p u 与c p u 在系统结构上存在本质区别。g p u 基于一种流水化的硬件 结构和并行化的编程模型,这是g p u 在执行图形运算时具有显著高性能的根本原 因。因此,传统图形流水线的串行处理模型必须进行适当改造,才能使g p u 的并 行计算能力和性能优势得到最充分的发挥。 本文对传统图形流水线和g p u 图形流水线进行了对比分析和研究。我们首先 研究了传统图形流水线中最基本的环节,包括三维物体的数据表示,几何变换, 光照模型,光栅化、纹理映射和加速算法。在传统图形流水线的研究基础上,对 g p u 图形流水线的顶点变换器和片元着色器进行了重点研究。给出了实现动画效 果和环境映射效果的顶点变换算法;给出了实现距离衰减效果和聚光灯效果的片 元着色算法;总结归纳了若干条优化图形程序性能的编程准则。最后以o p c n g l 和c g 语言为工具,给出了两个基于g p u 图形流水线的算法实例。算法实例1 给出了模拟单波源三维水波的顶点变换算法;算法实例2 给出了计算各向异性光 照的片元着色算法。算法实例l 采用正弦函数作为构造水波网格的基本波函数, 利用u n i f o r m 参数传入波的振荡因子,在顶点变换器中执行波面网格顶点的位移 计算,实现了波面荡漾的效果:算法实例2 假定场景中只有个光源,然后在片 元着色器中计算各向异性光照。算法实例2 使用一张纹理作为光照值的查找表。 查找表中的每一项都是r g b a 格式的颜色值。其中,r g b 三个分量存储预先计 重庆大学硕士学位论文 中文摘要 算的漫反射因子,a 分量存储镜面反射因子。实例2 给出的算法非常适合模拟金 属物体的抛光表面。 关键词:三维实时绘制,图形处理流水线,g p u ,水波模拟,各向异性光照 重庆大学硕士学位论文英文摘要 a b s t r a c t g p u ( g r a p h i c sp r o c e s s i n gu n i t ) i se q u i p p e dw i t hi n d e p e n d e n tp r o c e s s o r , i n d e p e n d e n tr a ma n di n d e p e n d e n tp r o g r a m m i n gl a n g u a g e , w h i c hm a k e sg p u p r o g r a m m a b l el i k eac p u ( c e n t r a lp r o c e s s i n gu n i t ) m o r e o v e r , g p uo u t p e r f o r m s c p ui nt e r m so f f l o a t i n g p o i n tp e r f o r m a n c ea n dt h r o u g h p u t a sac e n s e q u e n c e g p ui s s u p e r i o rt oc p u i nt h ea r e ao f r e a l t i m e3 d r e n d e r i n g g r a p h i c sp i p e l i n ei st h em o s tf u n d a m e n t a la n di m p o r t a n tt e c h n i c a lf r a m e w o r ki n c o m p u t e rg r a p h i c s t h o u g hg p u h a st h ec a p a b i l i t yt op e r f o r mg r a p h i c sc o m p u t i n ga ta v e r yh i g hs p e e d ,t h o s ea l g o r i t h m si m p l e m e n t e do nt r a d i t i o n a lc p u - b a s e dg r a p h i c s p i p e l i n ec a l l n o tb ed i r e c t l yt r a n s f e r r e dt og p u - b a s e dg r a p h i c sp i p e l i n e t h i si s b e c a u s eg p ui sb a s e do ns t r e a m - l i k eh a r d w a r ea r c h i t e c t u r ea n dp a r a l l e lp r o g r a m m i n g m o d e l t h e r e f o r e , t h es e r i a lp r o c e s s i n gm o d e lo ft r a d i t i o n a lg r a p h i c sp i p e l i n en e e d st o a d a p tt op a r a l l e lp r o c e s s i n gm o d e l o n l yb yd o i n gs oc a ng p u - b a s e dg r a p h i c sp i p e l i n e f u l l y e x e r ti t ss t r e n g t h s t h i st h e s i sm a k e sac o m p a r a t i v es t u d yb e t w e e nt h ec p u - b a s e dg r a p h i c sp i p e l i n e a n dt h eg p u - b a s e dg r a p h i c sp i p e l i n e f i r s t , t h ep r i n c i p l ei nt r a d i t i o n a lc p u - b a s e dg r a p h i c sp i p e l i n e ( i n c l u d i n go b j e c t m o d e l i n g , g e o m e t r yt r a n s f o r m a t i o n , l i g h t i n gm o d e l ,r a s t e r i z a t i o n , t e x t u r em a p p i n ga n d a c c e l e r a t i o na l g o r i t h m ) a r er e v i e w e d s e c o n d ,f o c u si st u r n e dt ot h ev e r t e xp r o c e s s o ra n dt h ef r a g r n e n ts h a d e ro f g p u b a s e dg r a p h i c s p i p e l i n e v e r t e xt r a n s f o r m a t i o na l g o r i t h m s t h a ti m p l e m e n t a n i m a t i o na n de n v i r o n m e n tm a p p i n ga r ed e s c r i b e d s o m el i g h t i n ge f f e c t s ,i n c l u d i n g d i s t a n c ea t t e n u a t i o na n ds p o t l i g h te f f e c t s ,a r ea c h i e v e dt h r o w i g ho n rf i a g m e n ts h a d e r a l g o r i t h m s s o m ep r o g r a m m i n gt i p st h a tc a l li m p r o v eg r a p h i c sp r o g r a mp e r f o r m a n c e a r ea l s os u n l l l l a r i z c d n e x t ,av e r t e xt r a n s f o r ma l g o r i t h mi sp r e s e n t e db a s e do nt h eg p up i p e l i n eu s i n g o p e n g la n dc gw h i c hi su s e dt 0s i m u l a t e3 dw a t e rw a v ew i t has i n g l ew a v es o u r c e a c c o r d i n gt ot h i sa l g o r i t h m ,s i n ef u n c t i o ni sa d o p t e da st h eb a s ew a v ef u n c t i o nw h e n c o n s t r u c t i n gt h ew a t e rw a v eg r i d ,t h es u r g ef a c t o ro ft h ew a v ei sp a s s e da sau n i f o r m a r g u m e n t ,a n dt h ev e r t e xp r o c e s s o rc o m p u t e st h ed i s p l a c e m e n t so ft h ev e r t i c e so nt h e w a v eg r i df o ri m p l e m e n t i n gt h es u r g ee f f e c t s f i n a l l y , af r a g m e n ts h a d i n ga l g o r i t h mi sa d v i s e db a s e do nt h eg p up i p e l i n eu s i n g 1 1 1 重庆大学硕士学位论文 英文摘要 o p e n g la n dc gw h i c hc o m p u t e sa r t i s o t r o p i cl i g h t i n gp r o v i d e dt h e r ei so n l yo i ez i g h t s o u r c ei nt h es c e n e b yt h i sa l g o r i t h m ,at e x t u r ei sa d o p t e da sa l o o k - u pt a b l ef o rt h e c o r r e c ta n i s o t r o p i cl i g h t i n gv a l u e sb ys t o r i n gt h ep r e - c a l c u l a t e dd i f f u s ev a l u e si nt h e t e x t u r e sr g bc o m p o n e n t sa n ds p e c u l a rv a l u e si ni t sa l p h ac o m p o n e n t t h i ss t y l eo f l i g h t i n gi sv e r yu s e f u lf o rr e n d e r i n gs u r f a c e sl i k eb r u s h e ds t e e lw h e r et h es u r f a c ei s c o m p o s e do fm i c r of a c e t so rm i c r o s c o p i cs c r a t c h e st h a tt e n dt ol a yp a r a l l e l0 1 mi n t h es a l t l ed i r e c t i o n k e y w o r d s ;3 dr e a l t i m er e n d e r i n g , g r a p h i c sp i p e l i n e , g p u ,w a t e rw a v e s i m u l a t i o n ,a n i s o t r o p i cl i g h t i n g 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取 得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文 中不包含其他人已经发表或撰写过的研究成果,也不包含为获得重鏖盍堂 或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本 研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。 学位论文作者签名:主f 剧廷钎签字日期:2 。0 7 年夕月z f 日 学位论文版权使用授权书 本学位论文作者完全了解重庞太堂有关保留、使用学位论文的 规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许 论文被查阅和借阅。本人授权 重庞太堂可以将学位论文的全部或部 分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段 保存、汇编学位论文。 保密() ,在年解密后适用本授权书。 本学位论文属于 不保密( 力。 ( 请只在上述一个括号内打“4 ”) 学位论文作者签名:二f 矧e 新 导师签名:物小似 签字日期:切口7 年9 月纠日签字日期:硼年拿月乞【日 重庆大学硕士学位论文1 绪论 1 绪论 1 1 图形处理流水线简介 三维计算机图形学主要研究如何利用计算机生成真实的三维图形。它在建筑 仿真,三维游戏,军事训练,虚拟博物馆,模拟驾驶与模拟飞行等诸多领域有着 广泛而重要的应用。近年来,在现实需要的强烈驱动下,三维计算机图形学在理 论研究与工业应用两方面都获得了快速而深入的发展,特别是在实时性和交互性 方面取得了令人惊叹的进步。 1 1 1 三维计算机图形学的基本研究模型 图形流水线( g r a p h i c sp i p e l i n e ) 是三维计算机图形学的基本研究模型。 图形流水线的主要功能就是在给定虚拟相机、三维物体、光源、颜色模型、 光照模型以及纹理等诸多条件下,通过一系列的算法步骤,最后生成一幅数字化 的图形。图形流水线既是学习三维计算机图形学的起点,也是研究三维计算机图 形学的核心框架。 流水线结构的主要优点在于其效率上的优势。如果把一个非流水线结构划分 成具有n 个具有相同时间阶段的流水线,那么在理想情况下,流水线结构将会获 得n 倍的效率提升。但是,流水线的整体速度却是由整条流水线中速度最慢的那 个阶段决定的,这个特点对于我们设计算法具有非常重要的影响。为了充分发挥 图形流水线的处理能力,避免产生效率瓶颈,在设计图形算法时必须尽量平衡各 阶段的处理时间,这是一条具有根本意义的图形算法设计原则。 图形流水线的基本结构包括三个阶段( 如图1 1 所示) ,三维数据依次流经这 三个阶段,直到最后产生逼真的三维图形。这三个阶段只是概念上的一种粗略分 类,在图形流水线中,每个阶段本身也很可能是一条多阶段的流水线。 图1 1 图形流水线的基本结构 f i g 1 1o v e r v i e wo f t h eg r a p h i c sp i p e l i n e 应用程序阶段 应用程序阶段由应用程序来驱动,由c p u 来执行。这个阶段的工作主要包括 执行三维物体碰撞检测、加速算法、模型动画,以及力反馈等。通常情况下,这 重庆大学硕士学位论文l 绪论 个阶段的工作完全不需要图形加速硬件的参与。因此,应用程序阶段是整个图形 流水线中灵活性最高的阶段。 几何变换阶段 几何变换阶段主要负责顶点变换和着色运算,这个阶段可以划分为以下几个 子阶段( 如图1 2 所示) 。对这些子阶段的研究构成了三维计算机图形学的绝大部 分内容。需要注意的是,几何变换阶段执行的计算量非常巨大,在只有一个光源 的场景中,每个顶点大约需要执行1 0 0 次左右的浮点运算【l 】。 i 模璺与视点变换 8 i光照诗算 l 8 投影变换 毒 裁减 8 屏幕映身壹 图1 2 几何变换阶段的子阶段 f i g 1 2s u b - s t a g e so f g e o m e t r y t r a n s f o r m 模型变换的对象是模型的顶点和法线。物体的坐标称之为模型坐标。模型坐 标经过模型变换之后称之为世界坐标。世界坐标空间是唯一的,所有的模型经过 变换之后都位于同一个世界坐标空间之中。 相机在世界坐标空间中有一个位置和方向。为了便于投影和裁减,必须对相 机和所有的模型进行视点变换。变换的目的就是要把相机放在原点,然后进行视 点校准,使其朝向z 轴的负方向( 对右手坐标系而言) ,y 轴指向上方,x 轴指向 右边。经过视点变换后的坐标空间称之为相机空间或观察空间。 为了让三维物体看起来更加真实,可以给场景配上一个或者多个光源。同时 还可以选择是否让灯光影响三维物体的外观。几何模型可以有与其顶点相关联的 颜色或者覆盖其上的纹理。 2 重庆大学硕士学位论文1 绪论 为了更加真实地绘制三维模型,可以用光照方程来计算模型上每个顶点的颜 色,这个方程近似地模拟了光子和物体表面之间的实际作用。在物理世界中,光 源发射出光子,然后被物体表面反射或吸收。但计算机图形学的光照方程却并不 根据物理世界中的光学定律来模拟光照现象,原因在于那样做的开销无法承受。 根据光照方程,物体表面每个顶点的颜色可以由光源及其特性、顶点的位置和法 线、顶点的材质属性来计算。光照计算是在世界坐标空间中进行的,常用的光照 模型包括平面着色模型、g o u r a u d 着色模型2 】和p h o n g 着色模型【3 】。 在光照计算之后,图形系统就开始执行投影变换。投影变换的目的是把视棱 锥变换成为一个单位立方体。这个立方体的对角顶点分别是( 1 ,1 ,1 ) 和( 1 ,1 ,1 ) 。通 常也称这个单位立方体为规范视体( c a n o n i c a lv i e wv o l u m e ) 。目前主要有两种投影 交换方法:正投影变换( 也称为平行投影变换) 和透视投影变换。 正投影的可视体通常是一个矩形盒子,正投影可以把这个视体变换为单位立 方体。正投影的主要特性是平行弦在变换之后彼此之间仍然保持平行,这种变换 是平移与缩放的组合。相比之下,透视投影要复杂一些。在透视投影中,物体距 离相机越远,投影之后就会变得越小。平行线可以在地平线处相交。透视投影与 人类感觉物体大小的过程非常相似,因此成为计算机图形学中主流的投影变换方 法。正投影变换和透视投影变换都可以通过4 x 4 的矩阵来实现,在任何一种变换 之后,都可以认为模型位于归一化处理之后的设备坐标系中。 只有当图元完全或部分地位于视棱锥内部的时候,才需要将其发送到光栅化 阶段。这是加速算法设计的重要指导思想。当一个图元完全位于视棱锥内部的时 候,该图元可以直接进入下一个流水线阶段;完全位于视棱锥之外的图元,将不 会进入下一个阶段,因为它们不需要被绘制,注意这将会大大减少需要绘制的图 元总数,甚至可以说这是三维实时绘制技术的关键性原理。而那些部分位于视棱 锥内部的图元,则必须通过裁减处理,才能将其输送到下一个处理阶段。 只有在视棱锥内经过裁剪的图元,才可以进入屏幕映射阶段。进入这个阶段 的时候,图元的坐标仍然是三维的。每个图元的x 和y 坐标被变换到屏幕坐标系 中,屏幕坐标系连同z 坐标一起称为窗口坐标系。假设在一个窗口中对场景进行 绘制,窗口的左下角为( x l ,y 1 ) ,窗口的右上角为( x 2 ,y 2 ) ,其中x l x 2 ,y l y 2 。 屏幕映射首先进行平移,然后进行缩放,在映射过程中z 坐标不受影响,新的x 和y 坐标成为屏幕坐标系,与z 坐标( - 1 z 1 ) 一起进入光栅化阶段。 光栅化阶段 光栅化阶段的主要任务是把屏幕空间中的片元( f r a g m e n t ) 转换成屏幕上的像 素( p i x e l ) 。屏幕空间中的每一个片元对象的属性包含二维坐标、z 轴坐标( 代表深 度) 、纹理坐标和颜色值。几何变换阶段针对多边形进行处理,而光栅化阶段则对 重庆大学硕士学位论文1 绪论 每一个片元进行操作。对于实时绘制系统而言,光栅化阶段必须在图形硬件之中 完成,否则无法达到实时性的要求。 光栅化阶段设计的主要硬件设施称之为帧缓冲器( f r a m eb u f f e r ) 。帧缓冲器是 图形系统具有的各种缓冲器的总称,包括颜色缓冲器( c o l o rb u f f e r ) 、z 缓冲器 ( z b u f f e r ) 、模版缓冲器( s t e n c i lb u f f e r ) 、累积缓冲器( a c c u m u l a t i o nb u f f e r ) 等。当绘 制完整个场景之后,颜色缓冲器中应该包含从相机视点处可以观察到的所有场景 图元。对于大多数图形硬件来说,这个过程是通过z 缓冲器算法1 4 来实现的。z 缓冲器和颜色缓冲器的形状大小一样,每个片元都存储着一个z 值,这个z 值代 表从相机到片元之间的距离。当把一个片元转换成屏幕上的一个像素时,需要计 算片元的z 值并与同一位置处的原有片元的z 值相比较,如果片元的z 值小于原 有z 值,则说明该片元的位置比原来片元的位置还要近,这时就用片元的颜色值 替换颜色缓冲区中原来片元的颜色值;如果片元的z 值大于或等于原有z 值,则 说明片元被遮挡住了,则抛弃片元的颜色值和z 值。z 缓冲器算法具有两大显著 优点:1 ) 算法简单,具有o c n ) 的时间复杂度( n 是需要绘制的片元个数) ;2 ) 片 元的绘制顺序是任意的。这两大优点是z 缓冲器算法获得广泛应用的根本原因。 但是,对于半透明的片元,绘制顺序不能是任意的。这是z 缓冲器算法的一个缺 点。 模版缓冲器是o p e n g l 提出的一个概念。模版缓冲器可以保持屏幕上某些部 位的图形不变,而其它部位仍然可以进行图形绘制。比如说,可以通过模版缓冲 器来绘制透过汽车挡风玻璃观看车外景物的画面。首先,将挡风玻璃的形状存贮 到模板缓存中去,然后再绘制整个场景。这样,模板缓存挡住了通过挡风玻璃看 不见的任何东西,而车内的仪表及其它物品只需绘制一次。因此,随着汽车的移 动,只有外面的场景在不断地更改。 累积缓冲器是1 9 9 0 年由h a e b e r l i 和a k e l e y t 5 】共同提出的一种显示缓冲器。同 颜色缓冲器一样,累积缓冲器也保存颜色数据,但它只保存r g b a 颜色数据,而 不能保存颜色索引数据( 因为在颜色表方式下使用累积累积缓冲器其结果不确 定) 。这个累积缓冲器一般用于累积一系列图像,从而形成最后的合成图像。利用 这种方法,可以进行场景反走样操作。累积缓冲器对于运动模糊、场深度、反走 样和软阴影等效果的实现是非常关键的。 为了避免观察者体验到实时绘制的过程产生的屏幕抖动,现代的图形系统一 般都使用了双重缓冲机制。这意味着图形系统会保留两个一模一样的显示缓冲区。 正在被显示器扫描读取的显示缓冲区称之为前置缓冲区,而另一个显示缓冲区则 被称之为后置缓冲区。实时绘制的结果被暂时存放在离屏( o f f - s c r e e n ) 的后置缓 冲区中,当后置缓冲区的绘制工作完成之后,图形系统通过指针交换前置缓冲区 4 重庆大学硕士学位论文1 绪论 和后置缓冲区的位置,从而实现计算机动画的平滑切换。 1 1 2 三维实时绘制技术面临的主要困难 三维实时绘制主要研究如何在计算机上进行图像的快速绘制,它是计算机图 形学中对交互性要求最高的一个研究领域。当一幅图像显示在屏幕上时,用户可 以对其反复操作,用户的这种反馈会直接影响到下一幅图像的生成与显示。如果 这种循环式的反馈与绘制过程以足够高的速度进行,那么用户就会获得与观看电 影一样的视觉感受。 在实际应用中,通常将计算机图像绘制技术分成实时和非实时两类。相关的 心理学和生理学实验表明,如果计算机能够以1 5 帧秒以上的速度切换屏幕上的 图像序列,那么就能够让人感受到运动的连贯性,这样的绘制速度即可称之为实 时绘制。如果绘制速度低于1 5 帧秒,则称之为非实时绘制。 对于实时绘制来说,问题并不仅仅在于满足交互性,如果这是实时绘制的唯 一标准,那么任何一个简单的窗口应用程序都可以具备交互性。这里所指的实时 绘制还意味着必须是三维绘制。 目前,非实时的三维绘制效果已经达到了一个非常高的水平。从一些经典的 科幻电影如星球大战中可以看到,非实时绘制的三维图像质量已经和实景拍 摄的高清晰胶片几无二致。然而,每绘制一帧这样的图像,往往需要花费数小时 甚至数天的计算时间。也就是说,非实时绘制用大量的计算时间换取了图像绘制 效果的高度真实性。 与非实时绘制不同的是,实时绘制面临着非常苛刻的计算条件。因为三维实 时绘制通常是在一个规模非常巨大的复杂场景中进行,以目前的图形硬件能力和 软件技术条件,尚不可能在1 秒钟之内生成几十帧质量达到电影胶片级的三维运 动图像序列。为了满足三维绘制的实时性,目前的三维实时绘制系统大多数都是 通过大幅度降低绘制精度来减少运算工作量。然而,由于绘制精度的大幅度降低, 这样的三维实时绘制系统带给观察者的体验往往不尽人意。人们迫切希望获得像 电影一样真实的实时三维场景。 如何在保留绘制精度的条件下使绘制速度达到实时性的要求是三维实时绘制技 术面临的主要困难。早期的计算机图形都是由c p u 负责计算和生成的。基于通用计 算目的而设计的c p u 在执行图形运算时显得非常低效。因此,人们转而寻求设计专 用的图形处理芯片来加速绘制过程。1 9 8 7 年,m m 提出了视频图形阵y , j ( v i d e o g r a p h i c sa r r a y , v g a ) 的概念和硬件实现。当时的视频图形阵列控制器就是现在所谓 的帧缓存。v g a 中的像素更新工作由c p u 负责。2 0 世纪9 0 年代后期,n v i d i a 引 入了图形处暑导( g r a p h i c sp r o c e s s i n gu n i t , g p m 这个术语。现在,c p u 已经很少直接 操作像素了,图形硬件设计师们把像素的更新任务交给g p u 去负责了。 重庆大学硕士学位论文1 绪论 1 2g p u 技术概览 1 2 1g p u 发展简史 在2 0 世纪9 0 年代中期,世界上最快的图形硬件由多块一起工作的芯片来渲 染图像,并在屏幕上显示它们。最复杂的计算机图形系统有许多的芯片组成,便 不再几块板子上。随着时间的推移和半导体技术的进步,硬件工程师们开始把这 些芯片的所有功能都集成在一块单独的芯片之中,这就是g p u 的雏形。 迄今为止,g p u 已经经历了四代的发展 “。每一代g p u 都提供了更好的编 程性能和更进步的可编程能力,同时也影响到工业界两个主要的编程接口: o p e n g l 和d i r e c t x 。 g p u 之前图形加速硬件 在g p u 诞生以前,s g i ( s i l i c o ng r a p h i c s ) 和e v a n s & s u t h e r l a n d 这两家公司率 先设计了专用的图形硬件,并在这些硬件中引入了现在仍然沿用的重要概念,例 如顶点变换和纹理映射。这是这些专门设计的硬件非常昂贵,因而并没有获得普 及应用。 第一代g p u 1 9 9 8 年以前生产的g p u 都属于第一代g p u ,包括n v i d i a 的t n t 2 ,a t i 的r a g e 和3 d f x 的v o o d 0 0 3 。这些g p u 能够光栅化变换前的三角形和使用1 2 个 纹理。它们还实现了d i r e c t x 的特征集。在实时处理三维图形的时候,这些g p u 完全把c p u 从更新每一个像素的繁重任务中解脱出来。但是,这一代的g p u 具 有两个明显的不足:首先,它们缺乏变换三维物体顶点的能力,顶点的变换工作 还是必须由c p u 来负责。其次,它们只有一个非常有限的数学操作集合来结合纹 理计算光栅化后像素的颜色。 第二代g p u 1 9 9 9 年至2 0 0 0 年期间,n v i d i a 生产了g e f o r c e 2 5 6 和g e f o r c e 2 ,a t i 生产了 r a d e o n7 5 0 0 ,s 3 生产了s a v a g e 3 d ,这些g p u 属于第二代g p u 。第二代g p u 能 够独立完成顶点变换和光照计算( t r a n s f o r m i n g & l i g h t i n g , t l ) 的工作,作为g p u 的标志性功能,硬件t & l 的引入使得图形流水线几乎可以全部在硬件中实现。但 这一代g p u 仍然还不具备可编程性。 第三代g p u 2 0 0 1 年开始上市的第三代g p u 包括n v i d i a 的g e f o r e e 3 ,g e f o r e e a t i ,微软 的x b o x 和a t i 的r a d e o n8 5 0 0 。第三代g p u 可以让应用程序指定一系列的图形 绘制指令,并由g p u 来解释执行,而不是支持由o p e n g l 和d i r e c t x7 0 指定的 传统的顶点变换和光照模型。这意味着第三代g p u 开始具备了可编程性,这是 g p u 在其发展历史上迈出的重要一步。 6 重庆大学硕士学位论文1 绪论 第四代g p u 从2 0 0 2 年开始到目前,n v i d i a 生产了采用c i n e f x 架构的g e f o r e e f x , a t i 生产了r a d e o n9 7 0 0 ,这些g p u 称之为第四代g p u 。第四代g p u 同时提供了顶 点处理器和片元处理器。片元处理器是一种功能非常强大的并行处理器,它的引 入使得大量电影级的光照效果能够在个人计算机上实时地渲染出来。 第四代g p u 已经完全具备了以下重要特性:1 ) 在顶点级和片元级提供了灵 活的可编程特性。2 ) 在顶点级和片元级运算上都支持i e e e3 2 位浮点运算,可进 行高精度的绘制。3 ) 完全支持4 元向量的数据类型,可以直接存储齐次坐标,法 向量等数据结构,从而大大方便了图形程序的设计与开发。4 ) 具备强大的数据吞 吐能力,内存传输能力可达2 7 1 g b s 。5 1 支持绘制到纹理的功能( r e n d e rt o t e x t u r e ) ,从而避免将中间绘制结果拷贝到纹理这个费时的过程;6 ) 支持依赖性纹 理访问功能,以方便数据的索引访问,可以将纹理作为内存来使用。 1 2 2 图形编程语言简介 硬件着色,交互渲染和实时动画处理是目前3 d 显卡的主要功能。随着 o p e n g l 和d i r e c t x 的应用领域逐渐扩大,运行于g p u 上的s h a d e r ( 着色器) 成 为了个人计算机3 d 世界的主宰。从硬件设计师、图形程序员到狂热的游戏玩家, 所有的人都开始把注意力投向s h a d e r ,因为s h a d e r 能够带来具有震撼性的图形特 效。 3 d 图形程序员希望自己能够开发出s h a d e r ,不过对于传统的硬件像素渲染和 顶点渲染编程就必须要使用低级的汇编语言来进行,汇编编程的工作量极大而且 难度极高,因此众多的3 d 图像程序员都很难发挥这些显示卡硬件渲染方面的可 编程性。例如,一个v e r t e xs h a d e r 需要计算并输入光照的漫反射成分,传统的3 d 汇编语言如下: m o vr 0 ,c 0 光线方向 m o vr l ,v 2 法向量 d p 3r 2 ,r o ,r l ,求内积 m o vr 3 ,e l 将0 ,0 ,0 ,0 存至r 3 n l a xr 0 。r 2 ,r 3 将光线射为0 m o vo d 0 r 0 输出漫反射成分 显然,这段汇编代码很不好理解,而且很容易出错。因此,由于没有合适的 编程语言,大多数3 d 图形程序员没有办法发挥g p u 的全部潜能。对于习惯于c 和c + + 的图形程序员而言,如果把上面的汇编代码写成下面的c 语言风格,那么 7 重庆大学硕士学位论文l 绪论 将会大大地提高其代码开发效率和编程质量。 f l o a t 4l i g h t d i r e c t i o n = c o n s t a n t 0 ; o u t d i f f u s e = m a x ( d p 3 ( r n n o r m a l ,l i g h t d i r e c t i o n ) ,0 ) ; 使用抽象程度更高的的高级语言对g p u 直接编程一直是3 d 图形程序员们 梦寐以求的目标。使用高级着色语言进行编程可以大大方便用户开发各种不同功 能的图形程序并对其绘制过程提供各种精细控制,从而使g p u 硬件的具体功能 对于用户而言更加透明和易用。 目前世界上存在两大著名的图形a p i ( a p p l i e a t i o np r o g r a m m i n gi n t e r f a c e ) 标 准:o p e n g l 和d i r e e t x 。这两套a p i 在早期都是用纯软件的方式实现的。也就是 说,早期的程序员在使用这两套a p i 时,根本体会不到图形加速硬件的存在。但 是,随着可编程g p u 的出现,这种情况迅速地被改变。专门针对g p u 而设计的 高级着色语言m l s l ,h i g h - l e v e ls h a d i n gl a n g u a g e s ) 不断涌现,最有名的当属 n v i d i a 的c g ( cf o rg r a p h i c s ) 、m i c r o s o f t 的h l s l ( h i g h - l e v e ls h a d i n gl a n g u a g e ) 、 o p e n g l 的g l s l ( g ls h a d i n gl a n g u a g e ) 、a t i 的r e n d e r m o l l l ( e y 、斯坦福大学的 r t s l ( r e a l t i m es h a d i n gl a n g u a g e ) 等。用h l s l 开发的程序称之为s h a d e r ,s h a d e r 包括顶点变换程序和片元着色程序。今天,使用o p e n g l 或d i r e c t x 开发图形应 用程序的设计师们,其主要精力已经逐步转移到s h a d e r 上来。 各种高级着色语言的设计思想是基本一致的,其差异也主要体现在语法细节 上。由于本文的例子程序采用c g 语言开发,因此在此仅对c g 语言作一简单介 绍。c g 语言由n v d m 公司和微软公司联合开发,专门用于图象处理的高级语 言;c g 语言完全兼容于微软的h l s l 。c g 语言为3 d 图形程序员提供一个全面 的编程环境,使其更轻松、快捷地创建特殊效果和实时电影效果,因此c g 语言 也被称作“硬件着色器”。c g 语言最大的特点就是能够对顶点和片元进行快速着 色和渲染,并能够实时处理各种特效。c g 语言提供了应用程序和硬件加速规范 的中间层,应用程序通过c g 来调用d i r e c t x 和o p e n g l ,而原来这些功能是通过 汇编调用的。因此c g 不但可以大大降低编程的繁杂度,并且保持了汇编的高效 性。使用c g 的开发环境,图像编程就成了书写c g 代码的过程,随后,通过c g 编译器产生低级的汇编代码,这样开发者再也不用去直接接触图形核心的细节了。 1 2 3g p u 对三维实时绘制技术的意义 随着计算机性能和运算精度的不断提高,计算机图形学面临的各种问题逐步 地得到解决。其最终结果就是计算机屏幕上显示的图形越来越生动和丰富多彩。 计算机图形学在相关软硬件技术的推动下,正在经历三大转变:从二维转向三 重庆大学硕士学位论文l 绪论 维;从静态转向动画;从线框图转向高真实感图形。 目前,计算机实时生成的三维图像无论在速度还是在精度方面都和理想中的 状况相差甚远。为了大幅度提高实时三维绘制的精度,学术界和工业界都提出了 算法硬件化的想法。早期的图形加速硬件在执行顶点变换,三角形光栅化和像素 更新等复杂任务时所获得的性能远远超过了只使用中央处理器编程所获得的性 能。但是,早期的这种图形加速硬件迫使图形程序员放弃了相当大的控制权来获 得这种高速度。开发人员被限制在仅能使用一些功能固定的图形操作。也就是说, 早期的图形处理硬件缺乏可编程性和由此带来的灵活性。 图形处理硬件缺乏可编程性给实时三维图形程序设计带来了很大的限制。为 了突破这一限制,计算机图形设计师们已经设计和实现了新一代的图形加速硬件 _ g p u 。g p u 为图形程序员提供了一个空前灵活的编程接口,这使得各种加速 绘制算法在g p u 上面实现有了现实的可能。 g p u 是专门为计算机图形程序设计的,它执行图形处理任务的速度要比通用 c p u 快得多。新型g p u 可以在1 秒钟之内执行几千万个顶点的变换和几亿甚至 几十亿个片元的光栅化操作,而且图形程序天然地具有可流水化和可并行化的性 质,所以大量的图形计算任务就可以直接通过g p u 获得高速的执行。 实时绘制速度的成倍增长意味着以前不可想象的实时三维绘制效果现在可以 在计算机上得到精细的刻画和渲染。g p u 相对于c p u 的主要优势就是速度。g p u 的速度优势主要来源于其独特的硬件体系设计。在图形硬件中,通常有两种主要 的方法来进行加快对数据的处理:一种方法是流水化设计;另一种方法是并行化 设计。g p u 把这两种加速思想紧密地结合起来,从而获得了极高的图形处理效率。 因此,g p u 对三维实时绘制技术而言具有极其重要的支撑性作用。目前,对g p u 的研究和应用尚处于一个相对早期的阶段,还有很多的研究领域等待着人们去探 索。 1 。3 本文的研究内容 本文主要研究基于g p u 的实时绘制算法设计。全文共分为5 章。 第1 章是绪论。介绍了三维计算机图形学的基本研究模型,分析了三维实时 绘制技术面临的主要困难,对图形加速硬件和o p u 编程语言的发展作了一个历史 性的回顾,阐述了g p u 对三维实时绘制技术的重要意义。 第2 章讨论了基于c p u 的传统图形流水线( 本文其余部分均简称“传统图形 流水线”) 的基本理论和实现技术。研究了传统图形流水线中最基本的环节,包括 三维物体的数据表示,几何变换,光照模型,光栅化、纹理映射、加速算法和显 示缓冲区。 9 重庆大学硕士学位论文1 绪论 第3 章在传统图形流水线的研究基础上,研究了基于g p u 的图形流水线( 本 文其余部分均简称“g p u 图形流水线”) 的设计框架和编程模型,重点分析了g p u 图形流水线中的两个核心环节:顶点变换器和片元着色器。给出了实现动画效果、 环境映射效果的顶点变换算法;给出了实现距离衰减效果和聚光灯效果的片元着 色算法。总结归纳了若干条优化程序性能的编程准则。 第4 章以以o p e n g l 和c g 语言为工具,给出了两个基于g p u 图形流水线的 算法实例。算法实例l 给出了模拟单波源三维水波的顶点变换算法;算法实例2 给出了计算各向异性光照的片元着色算法。 第5 章对本文的贡献进行总结并展望了有待进一步深入的研究工作。 1 0 重庆大学硕士学位论文2 基于c p u 的图形处理流水线 2 基于c p u 的图形流水线 2 1 三维计算机图形学的基本框架 2 1 1 基本的数学工具 向量和矩阵是三维计算机图形学中最基本、最重要的数据类型。向量可以表 达三维空间中的顶点坐标、纹理坐标和颜色值。三维计算机图形学中最常用的向 量包括2 维向量、3 维向量和4 维向量。纹理坐标通常采用2 维向量表示;颜色 值通常采用3 维向量表示;顶点坐标通常采用4 维向量表示。 矩阵是刻划向量变换的核心工具。在计算机图形学中,矩阵变换具有不可动 摇的中心地位。矩阵可以有效地表达一个几何模型的平移变换、旋转变换、错切 变换与放缩变换。把这些最基本的几何变换组合起来,就可以构造出无穷无尽的 变换效果。 为了获得较好的执行效率,通常会把多个矩阵变换级联相乘为单个矩阵。由 于矩阵

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论