




已阅读5页,还剩58页未读, 继续免费阅读
(计算机应用技术专业论文)硬件加速的cad显示技术研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浙江大学硕士论文 摘要 过去c a d 的显示中,开发人员不能同时实现真实的图像和良好的人机交互,而 必须在两者之间权衡。随着计算机图形硬件的飞速发展,我们已经可以两者兼顾,距 离在c a d 中的实时照片级真实感图像显示的目标越来越近了。 图形硬件的发展,不仅表现在速度的飞速提高,还表现在功能的不断增强。在本 文中,作者将一些硬件加速的技术应用于c a d 显示,使得c a d 可以显示更加真实 的光照,更多种类的物体,以及实现更多的其它功能。体文第一章介绍了o p e n g l 扩 展功能、硬件加速的可编程着色等图形硬件的新功能,它们是本文方法的基础知识。 f 象素光照是在向照片级真实感图像发展中的一大步。相对传统的顶点光照,它展 示了更多的细节和更精确的光照效果。使用硬件的象素计算功能,可以实时地完成象 素光照的计算习本文第二章首先介绍了象素光照在图形硬件上的实现方法。然后作者 提出了面光源的软阴影生成算法,借助硬件的增强实现了面光源软阴影的实时生成和 显示。c 具体工作为:在线光源软阴影生成算法的基础上,作者提出了运用快速面积估 计生成面光源的软阴影的算法。这个算法解决了线光源软阴影生成算法阴影过渡不真 实的缺陷,可以实时生成较为真实的面光源软阴影。, 借助于硬件的帮助,我们还可以实时生成和显示轮廓线和剖面线j 本文第三章第 一节介绍了三种不同的硬件加速的显示轮廓线方法,并比较了三种方法的结果。在第 二节,作者提出并实现了使用模板缓存和剖面纹理贴图的剖面线生成和显示方法,可 以实时地显示剖面线,并在此基础上,提出了使用c g 语言实时地生成反走样的剖面 纹理的方法。 在第四章中,作者提出了基于深度缓存的c a d 装配体实时冲突检测算法作者 首先提出了一个针对简单零件的基于单深度缓存冲突检测算法,在此基础上,利用深 度剥离技术,给出了基于多深度缓存的针对复杂零件的精确的冲突检测。用户可以决 定是使用单深度缓存获得较不精确的冲突检测,还是使用多深度缓存获得精确的冲突 检测。两种方法都可在实时场合使用。 前三章中各种方法对图形硬件资源的占用可能会引起冲突,第五章中作者讨论了 如何修改传统的显示流程来容纳前面三章提出的所有的效果和功能,而同时保持最大 的性能。 最后,作者总结了全文的内容并对未来c a d 显示的发展方向提出了自己的看法 浙江大学硕士论文 a b s t r a c t i nt h ep a s t ,c a dd e v e l o p e r sc a l l td i s p l a yp h o t o r e a l i s t i ci m a g e sw h i l ek e e p i n gg o o d c o m p u t e r - h u m a ni n t e r a c t i o n a n dh a v et om a k et r a d e o f fb e t w e e nt h e m w 曲t h er a p i d d e v e l o p m e n to fg r a p h i c sh a r d w a r e ,w ec a nn o wa c h i e v eb o t ha n da r eg e t t i n gc l o s e rt o r e a l - t i m ep h o t o - r e a l i s t i ci m a g e si nc a d r e n d e r i n g t h ei m p r o v e m e n t so fc o m p u t e rg r a p h i c sh a r d w a r eb r i n gn o to n l yf a s t e rr e n d e r i n g s p e e d ,b u ta l s om o r ef u n c t i o n s i nt h i sa r t i c l e 。t h ea u t h o ri n t r o d u c e ss o m en e wt e c h n i q u e s i nh a r d w a r e - a c c e l e r a t e dr e n d e r i n g a n da p p l i e st h e mi nc a d d i s p l a y i n g t h o s en e w t e c h n i q u e sb r i n gc a d m o r er e a l i s t i ci m a g e s ,m o r ek i n d so f o b j e c t st od i s p l a y , a n dm o r e o t h e rf u n c t i o n s i nt h ef i r s t c h a p t e r , t h ea u t h o ri n t r o d u c e ss o m eh a r d w a r e a c c e l e r a t e d t e c h n i q u e su s i n go p e n g l e x t e n s i o n sa n dh a r d w a r e p r o g r a m m a b l es h a d i n gl a n g u a g ew h i c h a r et h ef o u n d a t i o n so f t h i sd i s s e r t a t i o n p e r - p i x e ll i g h t i n gi sam a j o ra d v a n c et op h o t o r e a l i s t i ci m a g e s i tg i v e sm o r ed e t a i l s a n dm o r ea c c u r a t el i g h t i n ge f f e c t st h a nc o n v e n t i o n a lp e r - v e r t e xl i g h t i n g w i t ht h eh e l po f p i x e l l e v e lp r o g r a m m i n g ,w ec a nc o m p u t e rl i g h t i n gp e rp i x e lr e a l - t i m e i nt h es e c o n d c h a p t e r , t h ea u t h o re x p l a i n e dh o w t oi m p l e m e n tp e r - p i x e ll i g h t i n gi ng r a p h i c sh a r d w a r e 1 1 1 e n t h ea u t h o rp u r p o s e sa na l g o r i t h mo fg e n e r a t i n gs o f ts h a d o w sf o ra r e al i g h tw i t l l h a r d w a r e a c c e l e r a t i o n 1 1 l ea l g o r i t h mi sa sf o l l o w s b a s e do n 觚a l g o r i t h mo fs o f ts h a d o w s f o rl i n e a rl i g h t t h ea u t h o rp u r p o s e da i la l g o r i t h mo fs o f ts h a d o w sf o ra r e al i g h tb ya r e a a p p r o x i m a t i o n t h i sn e wm e t h o ds o l v e dt h ea r t i f a c to f1 i n e a rv i s i b i l i t yt r a n s i t i o ni nt h e a l g o r i t h mf o r1 i n e a rl i g h t ,a n dc a ng e n e r a t ec o n v i n c i n gs o f ts h a d o w s f o ra r e a l i g h t d u et oh a r d w a r ei m p r o v e m e n t s ,s i l h o u e t t ea n dh a t c hc a nb eg e n e r a t e da n dd i s p l a y e d r e a l t i m e i nt h ef i r s ts e c t i o no fc h a p t e r3 t h ea u t h o ri n t r o d u c e st h r e ed i f f e r e n tk i n d so f m e t h o df o rd i s p l a y i n gs i l h o u e t t e a n dc o m p a r e st l l er e s u l t so ft h et h i n em e t h o d s i nt h e s e c o n ds e c t i o n t l l ea u t h o rp u r p o s e dam e t h o do fg e n e r a t i n gh a t c ha r e a t l l i sm e t h o du s e s t e n c i lb u f f e rt og e n e r a t et h eh a t c ha r e 盈t h e na p p l yah a t c ht e x t u r eo nt h ea r e a 。黝t h i s m e t h o d ,w ec a nd i s p l a yh a t c hr e a l t i m e t h e nt h ea u t h o rp u r p o s e sam e t h o do fg e n e r a t i n g a n t i a l i a s e dh a t c hr e a l - t i m eu s i n ge gl a n g u a g e 。 t w o a l g o r i t h m sf o rc o l l i s i o nd e t e c t i o nb a s e do nz b u f f e ri sp u r p o s e dn e x t f i r s t t h e a u t h o rp u r p o s e sa l la l g o r i t h mu s i n gs i n g l ez - b u f f e rt od e t e c t i o nc o l l i s i o n sb e t w e e ns i m p l e o b j e c t s t h e nt h ea u t h o re n h a n c e si tu s i n gm u l t i p l ez b u f f e r s t h eu s e rm a y u s es i m p i e s i n g l ez _ b u 髓背t od e t e e tc o l l i s i o ni n a c c u r a t eo ru s em u l t i p l ez - b u f i e r st od e t e c tp r e c i s e l y b o t ha r es u i t a b l ef o rr e a l t i m ea p p l i c a t i o n s p r e v i o u sa l g o r i t h r a sm a yr e s u l ti nc o n f l i c t si nh a r d w a r er e s o u r c e n 坨a u t h o rd i s c u s s c s h o wt om o d i f yc o n v e n t i o n a lr e n d e r i n gp a t ht oa c c o m m o d a t ea l lt h ee f f e c t sa n df i m c t i o n s w h i l ek e e p i n gm a x i m u m p e r f o r m a n c e a n dt h ea u t h o rc o n c l u d e sw i t hc o n c l u s i o n sa n df u t u r ew o r k 浙江大学硕士论文 1 1 显示技术介绍 第一章绪论 1 9 6 3 年,s u t h e r l a n d 在联合计算机会议上展示了基于c r t 显示的s k e t c h p a d 交互 图形系统1 。用户可以和s k e t c h p a d 系统交互,动态地生成和修改线、圆弧等显示元 素。这个系统可以说是第一个c a d 系统,给以后的众多c a d 系统提供了基础。例 如它提出了基于图形元素的层次结构,并首次使用了许多交互技术,比如使用了键盘 和光笔交互。这个系统还是现代的一些图形库的标准的基础,比如p h i g s 和s g i 的 g l ( 后来发展成o p e n g l ) 。 在飞行模拟器中对计算机生成图像的要求导致了光栅图形系统的诞生。7 0 年代的 x e r o xp a r c 的a l t o 系统首次使用了光栅图形系统。光栅图形使得填充表面的显示成 为可能,在这以前的向量显示系统只能显示线条。光栅图形系统使得显示画面的真实 感提高了个级别,后来的c a d 系统以及其它图形系统普遍使用了光栅图形系统。 光栅图形的优点使得光栅图形成为现代三维显示技术的基础。 光栅图形系统的面消隐问题引出一系列的排序算法,并最终导致了深度缓存算法 i l l l 的诞生。深度缓存算法在象素级别解决了可见性判别的问题,在显卡中得到广泛的 应用,并且显卡在硬件上还对深度缓存进行了优化,使用硬件加速的深度缓存算法几 乎不会降低显示速度。 w h i n e d 提出了光线跟踪的算法 1 2 】。这种算法用同一个模型来模拟光源和环境入 射光在物体表面反射和折射,实现场景消隐和生成阴影。这种算法通过图像平面上每 一个像素中心向场景发出一条光线,跟踪光线在场景中的传递,最终生成画面。这个 方法需要跟踪每一条从视点发出的光线,需要做大量的光线和景物的求交测试计算, 实时性很差,几乎不能用于实时场合。 由g o r m 等人提出的辐射度算法【1 3 】是继光线跟踪算法后真实感图形绘制技术的 一个重大发展。这种方法基于物理学中的能量平衡原理,采用数值求解技术来近似计 算每一个景物表面上的辐射度分布。由于场景中的辐射度分布和视点选取无关,辐射 度方法被广泛地应用于虚拟环境的漫游系统中。但是每次对场景和光源进行改变都影 响辐射度的分布,都需要重新进行计算。由于这个方法的计算复杂度高,实时性也差, 不能用于实时场合。 基于扫描线的绘制算法通过硬件的支持,非常适合于实时场合。并且随着硬件的 发展,已能实现纹理贴图,反射,透明和阴影等效果,虽然这些新的效果可能并不是 像光线跟踪或者辐射度算法一样是对真实的模拟,而只是生成视觉上满意的效果。由 真实的模拟简化到视觉满意,使得基于扫描线的绘制算法在实时绘制中应用非常广 浙江大学硕士论文 泛。 1 2c a d 中的显示技术 显示技术的不断发展,使c a d 系统的显示经历了最初的线框显示,到面的单色 显示、实体的g o u r a u d 着色,直至现在的真实感绘制的过程,用户在屏幕所见的和最 终制造出的零件之间的差别越来越小,使得c a d 系统中的所见即所得的目标成为可 能。图1 1 表示了c a d 的显示技术的发展过程。 图卜1 :c a d 显示技术的发展 目前的c a d 显示基本上使用的都是类o p c n g l 的真实感显示技术,这种显示的 代表就是o p e n g l 库,其特点是: 1 基于三角面片的显示。首先需要用户获得场景中的实体的面,并将这些面都 转换成三角面片,再由显示库完成剩下的真实感显示的部分。 2 顶点光照和颜色插值。即只在每个顶点处计算光强度,在面的内部使用顶点 的光强度插值。 3 固定的局部光照计算。用户不能指定用何种光照模型,而只能使用系统固定 的局部光照模型。由于是局部光照模型,显示库无法直接实现阴影。 4 基于扫描线的光栅化方法和基于深度缓存的消隐方法。这两个方法使得光栅 化速度非常快,并且消隐过程也非常简单,很容易实现硬件加速。但是这个 特点使得半透明的实现非常麻烦。 在c a d 的显示中,交互能力和真实感难以两全,开发者只能在其中选择一个折 衷的方法。随着计算机硬件技术的发展,尤其是显卡的发展非常快,甚至超过了c p u 性能发展的摩尔法则。用户不再满足于类o p e n g l 显示库带来的效果,而需要更加真 实的显示。用户的要求使得显卡的生产厂商不断地增强类o p e n g l 曼示库的功能。其 中,最引人注目的就是可编程着色语言的推出,这个语言使得开发者可以使用可编程 着色语言的增强显示的真实感。随着硬件加速的可编程语言越来越完善,交互能力和 浙江大学硕士论文 真实感图像终有一天可以兼得。 使用可编程着色语言的真实感显示的特点是: 1 可以进行象素光照计算。即对于每一个象素可以分别计算其光强度,而不是 由各个顶点插值获得。使用象素光照,可以较好地表现出聚光灯和点光源的 照射效果,在表示表面的凸凹效果上也大大强于顶点光照。 2 可以使用用户自定义的光照模型。用户可以使用自己定义的函数计算每个顶 点甚至每个象素的颜色,而不必完全按照传统的o p e n g l 中的光照模型。但 是用户自定义的光照模型仍旧为局部光照模型,所以仍旧不能方便地产生阴 影。 3 可以使用过程纹理。描述自然界的许多纹理,比如大理石,木纹等等,使用 过程纹理是一个非常好的方法,除了不需要实地拍纹理的照片的优点,改一 些参数就可以使得纹理的形状发生变化。要详细了解过程纹理的生成,可以 参考。 4 继承了类o p e n g l 显示的特点中的1 ,4 项。 在实际的c a d 的使用过程中,除了需要真实地表示最终生成的零件以外,还需 要显示某些辅助图形,以方便用户更准确地操作模型,比如轮廓线,剖面线。所以在 本文中,我们不仅着力于讲述使得物体显示更加真实的方法,同时还将可编程技术用 于辅助c a d 的显示和操作,如轮廓线剖面线的显示以及冲突检测。 由于o p e n g l 库在当前的c a d 显示中占据了绝大多数的份额,如3 d s m a x ,m a y a 等动画制作软件,i - d e a s ,u n i g r a p h i c s 等c a d 软件都使用了o p e n g l 作为底层显示 库,并且o p e n g l 的发展也可以代表现在的c a d 显示技术的发展和图形硬件的发展, 在本文中,我们只讨论基于o p e n g l 的c a d 的显示。 1 3 o p e n g l 扩展功能 o p e n g l 最初是s g i 公司用于其图形工作站上的底层图形显示库,后被广泛地用 于三维场景的显示中,尤其在工业和跨平台的场合下,o p e n g l 更是当仁不让的唯一 标准。 自从9 2 年o p e n g l 标准提出以来,这个标准也经历了历次修改。目的是扩展 o p e n g l 的功能,使其能够适应日益发展的三维绘制技术。o p e n g l 通过两种方法扩 展其功能。一个方法是通过增加各种o p e n g l 扩展。各个厂商可以提出自己的o p e n g l 扩展,在原有的o p e n g l 基础上增加类型定义或者函数。为了区分各个厂商,在 o p e n g l 扩展的名称前面加上公司的前缀,表示为该公司提出的扩展。例如n v i d i a 浙江大学硕士论文 公司的o p e n g l 扩展以n v 开头,a t i 公司的以a t 开头,而s g i 公司的以s g i s 开 头,等等。为了提高各厂商之间扩展的兼容性,于1 9 9 2 年成立了o p e n g l a r b 委员 会,专门负责管理o p e n g l 标准。它负责定义一些兼容性测试,并且将各厂商的一些 扩展统一起来,加以规范,定制a r b 扩展,这些扩展都以a r b 开头。显卡芯片生产 厂商在实现自己的扩展的同时,也尽量符合这个标准,在一定程度上解决了o p e n g l 应用程序在不同显卡上的兼容性问题。另一个扩展o p e n g l 功能的方法是推出新的 o p e n g l 版本,新的版本一般就是将实用的扩展加入到o p e n g l 的旧版本中,并重新 修改调用规范,使得和原来的o p e n g l 函数统一。目前最高的o p e n g l 规范为1 4 版, 本文中提到的一些扩展,已经被包括在o p e n g l 的正式版本 e f 4 1 ,【5 】 【6 】。本文中将以1 1 版o p e n g l 的规范界定扩展,在1 1 版o p e n g l 规范中不存在的功能,我们就成为 o p e n g l 扩展。 多次绘制 由于显卡的速度越来越 快,人们开始注意到多次绘 制的重要。所谓多次绘制, 就是将同一个场景,在一个 缓存中绘制多次,每次绘制 时采用不同的设置。不同的 设置使得前次绘制的结果和 新的绘制结果叠加起来,完 成许多原来一次绘制不能实 现的功能。在 2 】中介绍了如 何使用较为简单的多次绘制 方法来完成运动模糊和聚焦 效果。要更详细地了解多次 绘制可以实现的功能,可以 参考 3 】,图1 2 为生成阴影 的一种多次绘制方法。可以 看到这个方法用了4 次绘制 生成最终结果。 4 图卜2 :多次绘制,来自1 3 1 浙江大学硕士论文 1 3 1 o p e n g l 模板缓存 o p v n g l 中,除了有颜色和深度缓存之外,还有一种起辅助作用的模板缓存。模 板缓存和其它缓存类似,每一个象素在该缓存有一个模板值。使用模板缓存需要设定 几个参数: 1 ) 模板开关,通过g l e n a b l e ( g 1 s t e n c i lt e s t ) 打开模板测试, g l d i s a b l e ( g ln 关闭模板测试。_ s t e n c i l t e s 2 ) 模板掩码,o p e n g l 的调用规范为g l s t e n c i l m a s k ( g l u i n tm a s k ) ,这个函数设定 了模板掩码值。模板掩码控制了模板对应位的写权限。若对应位为0 ,则不 允许写入,若对应位为l ,则可以写。 3 ) 模板函数,o p e n g l 的调用规范为g l s t e n c i l f u n c ( g l e n u mf u n c ,g l i n tr e f , g l u i n t m a s k ) 。f u n e 参数表示模板测试的操作,可以为g ln e v e r ( 永远失败) , g ll e s s ( 小于) ,g ll e q u a l ( 小于等于) ,o lg r e a t e r ( 大于) , g l g e q u a l ( 大于等于) ,g l _ e q u a l ( 等于) ,g ln o t e q u a l ( 不等于) , g l 永远通过)。其中的比较操作,通过下面的方法判断:如果always( ( r e f & m a s k ) o p ( s t e n c i l & m a s k ) 则模板测试通过,其中r e f 和m a s k 为函数参数 值,s t e n c i l 为模板缓存中的值。 4 ) 模板操作,o p e n g l 的调用规范为g l s t e n c i l o p ( g l e n u mf a i l ,g l e n u mz f a i l , 1 3 - 1 c n u n l z p a s s ) ;。三个参数可选的值为g l = d ) ,_ k e e p ( s t e n c i l n e w s t e n c i l o l g l _ z e r o ( s t e n c i l n e w = 0 、, g l _ r e p l a c e ( s t e n e i l n e w 2 r e 0 , g l _ i n c r ( s t e n c i l n e w = s t e n c i l o l d + 1 ) ,g l _ d e c r ( s t e n c i l n e w = m a x ( 0 , s t e n c i l o l d 1 1 ) ,g li n v e r t ( s t e n c i l n e w = s t e n c i l o l d ) ,这些值表示了在对应的 情况下,模板缓存值如何改变的操作。f a i l 参数表示模板测试失败时,模板 缓存的操作。z f a i l 表示在深度缓存测试失败时,模板缓存的操作。z p a s s 表 示在深度缓存测试通过时,模板缓存的操作。 如果打开了模板测试,绘制物体,若对应象素的模板测试失败,则该象素不被绘 制,不会影响颜色缓存和深度缓存。只有当模板测试通过,才绘制该象素。使用模板 缓存,可以很方便地进行窗口坐标系的任意形状的裁剪。如图1 3 a 为正常情况下绘 图1 - 3 :使用模板缓存做任意形状的裁剪 5 浙江大学硕士论文 制出的图像,图l 一3 b 为模板缓存中的值,黑色表示值为0 ,白色表示值为1 。使用 g l s t e n c i l f u n c ( g l _ e q u a l ,0 ,0 x 0 1 ) ;的模板函数可以绘制出如图c 的效果。模板缓存 更多的用途还将在本文后面几章看到。 1 3 2 多纹理扩展 多纹理扩展( a r b _ m u l t i t e x t u r e ) 使得o p e n g l 能在一次绘制中处理多个纹理单元。 这样,原来需要多次绘制才能完成的操作,可能在一次绘制中就可以完成。大大加速 了多次绘制的时间,使得多次绘制的技术能更广泛地使用。在这里一个实体可以同时 和多个纹理相关,每一个纹理单元有自己的纹理坐标、纹理定义,并且每个纹理单元 之间可以用不同的方法组合。 1 3 3 纹理环境扩展 纹理环境扩展( a r b _ t e x t u r e _ e n v 4 ) 包括a r b _ _ t e x t u r e _ e n v _ _ a d d , a r b t e x t u r e e n v c o m b i n e ,a r b _ t e x t u r ee n vd o t 3 扩展。这些扩展加上o p e n g l 原来 有的纹理环境模式,使得o p e n g l 初步具备的可编程的着色能力。o p e n g l 原有 r e p l a c e ,m o d u l a t e ,d e c a l 模式,加上b l e n d ,a d d 模式( 不包括c o m b i n e 模式) ,可以完成如下计算: c v = c s c v = c f * c s c 。= c f * ( 1 一c s ) + c c + c s c v = c f 屺s 其中c f 为缓冲的内容,为上一个计算结果。c 。为纹理中读取的内容,c ,为写回 缓冲的结果,c 。为一个常数值。 而使用c o m b i n e 模式,可以完成更多的计算,计算的方式也更加灵活。表1 1 为c o m b i n e 模式可以完成的计算。表中a r g o 和a r 9 1 分别可以来自各个纹理单元 ( t e x t u r e n ) ,常数( c o n s t a n t ) ,主颜色( p r i m a r y _ c o l o r ) 或上一个结果 ( p r e v i o u s ) 。 6 浙江大学硕士论文 c o m b i n e 模式 纹理计算函数 r e p l a c e a r g o m o d u l 玎e a r g o * a r g l a d d a r 9 0 + a r g l a d d _ s i g n e da r 9 0 + a r g l - 0 5 i n t e r p 0 l a t e a r g o + a r 9 2 + a 唱1 + ( i a r 9 2 ) s u b t r a c t a r g o a r g l d o t 3r g b 4 + ( ( a r g o r - o 5 p ( a r 9 1 r - 0 5 ) + ( a r 9 0 9 一0 5 ) + ( a r g l g - 0 5 ) + ( a r 9 0 b 0 5 ) + ( a r g l b 一0 5 ) ) d o t 3 _ r g b a4 + ( ( a r 9 0 r - 0 5 ) + ( a r 9 1 r - 0 5 ) + ( a r 9 0 9 - 0 5 ) + ( a r g l g 一0 5 ) + ( a r 9 0 b 0 5 ) + ( a r g l b 0 5 ) ) 表卜1 :c o m b i n e 模式与纹理计算函数,来自i s l 1 3 4 寄存器组合扩展 寄存器组合扩展( n v _ r e g i s t e r c o m b i n e r s + ) 由n v i d i a 公司提出,实现的功能类似 于a r bt e x t u r ee n v * ,但是在输入值和进行的运算复杂度上增强了很多。寄存器组合 扩展分为普通组合和末组合两个部分,计算过程图1 4 。 图中虚线为计算的流程,可以看到,数据寄存器中的值首先由多个普通组合计算, 最后由末组合计算并输出。对于g e f o r c e 3 系列显卡,普通组合的数目达到8 个,而 纹理单元的数目最多可以 达到4 个( 不同的显卡,普 通组合以及纹理单元的数 目不同,具体见该显卡的 说明) 。用户可以选择使用 1 到8 个普通组合,最后通 过末组合计算输出。每一 个普通组合从数据寄存器 中获得输入,并将结果输 出到寄存器。而末组合也 从数据寄存器获得输入, 图卜4 :寄存器组合流程 将结果输出供后面阶段使 用。 浙江大学硕士论文 一个普通组合的计算过程如图1 5 : r g b 部分 r g b m 入输入映射r g b 函数 输出映射矗;2 j ;韶叉 一卜 a o p l b 1 _ j nb l r 一 c o 坤d c l 一 nd b o p 3 c d 叫卜 a 觚 一_ 一 b i 一 c d f c 1 。一 n d b o p 4 c d 图i - 5 :普通组合计算 一个普通组合的计算分为r g b 部分和a l p h a 部分,分别处理颜色的r g b 单元和 a l p h a 单元。两个部分的输入和计算各不相同。 其中r g b 输入和a l p h a 输入都可以为主颜色( p r i m a r y c o l o r ) ,高光颜色 ( s e c o n d a r y c o l o r l ,纹理单元的颜色( t e x t u r e n ) ,空闲单元0 或i ( s p a r e n ) , 雾化效果的颜色( f o g ) ,常数颜色0 或1 ( c o n s t a n t n ) 或零( z e r o ) 。 r g b 和a l p h a 的输入映射也是一样的。输入x 对应的输入映射f ) 可能的形式为: 坟x ) = x ; f i x ) = 一x : f i x ) = m a x ( o ,x ) ; f i x ) = 1 - m i n ( m a x ( 0 ,x ) ,1 ) ; f i x ) = 2 + m a x ( o ,x ) 一1 ; f ( x ) = - 2 + m a x ( o ,x ) + 1 ; f ( x ) - = r n a x ( o ,x ) 一0 5 ; f i x ) = 一m a x ( o ,x ) + o 5 ; r g b 函数计算中的o p l o p 2 o p 3 为下列五种组合中的任何一种: d o t d o t d i s c a r d ; 浙江大学硕士论文 中, d o t m u l t d i s c a r d ; m u i r d o t d i s c a r d ; m u l t m u l t m u x ; m u l t m u l t s u m ; a l p h a 函数计算中第一个和第二个操作必须为m u l t ,o p 4 可以为m u x 或s u m 。其 d o t = ( a r + b r + a g + b g + a b + b b ,a r + b r + a g + b g + a b + b b ,a r + b r + a g + b g + a b + b b ) ; m u l t = ( a r 4 b r , a g + b g ,a b + b b ) ; m u x = ( s p a r e 0 a l p h a = 0 5 ) ? a b :c d s u m = ( a r + b r , a g + b g ,a b + b b ) ; d i s c a r d 为不计算。 输出映射函数f i x ) 可以为: f ( x ) = x 2 ; f i x ) - - x ; f ( x ) = x 0 5 : f 【x ) = 2 x ; f 【x ) 宅+ ( x - 0 5 ) ; f ) 叫x ; 输出映射的结果送往数据寄存器供后面的单元计算使用。 末组合可见图1 - 6 图卜6 :末组合计算 9 浙江大学硕士论文 末组合的r g b 部分和a l p h a 部分的输入和普通组合一致。 a l p h a 部分不需要进行输入映射。r g b 部分的输入映射函数f ( x ) 只有两个,分别 为: f ( x ) = m a x ( 0 ,x ) f i x ) = 1 - m i n ( m a x ( 0 ,x ) ,1 ) 加法部件所做的计算为: c l a m p ( s p a r e 0 ) + c l a m p ( s e c o n d a r y c o l o r ) 其中c l a m p ( x ) = m i n ( m a x ( 0 ,x ) ,1 ) 相加后范围为【0 ,2 】,再通过后面的c l a m p 单元,将结果裁剪到【o ,1 】,供后面部分 使用。 r g b 函数有a ,b ,c ,d 四个输入,输出值为a b + ( 1 a ) c + d ,之所以使用这样 的输出计算,和常用的光照函数有关。 1 3 5 顶点编程扩展和象素编程扩展 顶点编程扩展和象素编程扩展包括a r b _ v e r t e x _ p r o g r a m , a r b _ f i a g m e n t _ p r o g r a m ,n v _ v e r t e x _ p r o g r a m ,n v _ f r a g m e n t ) m g r a m 。这几个扩展为 实现可编程着色语言的扩展,我们将在下一节讲到。 1 3 6 象素缓存扩展 象素缓存扩展( w o ke x tp b u f f e r ) 在普通的显示缓存之外,增加了象素缓存。象 素缓存的属性和操作方法和显示缓存一致,但是象素缓存不能用于显示,而只能用于 辅助纹理生成。在许多情况下,比如阴影图方法生成阴影,立方体环境贴图的生成, 过程纹理生成等情况下,都需要获得绘制的结果并将他们放到一个贴图中去。常规的 方法是: 1 使用g l r e a d p i x e l s 保存原来的场景 2 清除颜色缓存和深度缓存,绘制贴图的场景 3 用g l r e a d p i x e l s 将绘制的场景或者深度缓存读出 4 使用g l t e x l m a g e 2 d 生成贴图 5 使用g l d r a w p i x e l s 将原来的场景恢复 然而,这个方法弊病很多,主要是性能的降低。g l r e a d p i x e l s 和g l d r a w p i x e l s 在 非专业的显卡上没有经过硬件加速,执行起来速度非常慢。并且保存场景数据占据大 量的内存空间。 除此之外,步骤( 4 ) 的g l t e x l m a g e 2 d 速度也非常慢,这样的方法是 不能在绘制的过程中使用的,只能用作初始化数据中。 如果不使用传统的g l t e x l m a g e 2 d ,而使用g l c o p y t e x l m a g e 2 d 或者 g l c o p y s u b t e x l m a g e 2 d ,因为减少了显存到主存,再由主存到显存的过程,( 3 ) ( 4 ) 的时 1 0 浙江大学硕士论文 间可以大大节省。但是( 1 ) ( 5 ) 带来的效率的降低,还是不能由这个方法解决。 如果直接省略( 1 ) ( 5 ) 步骤,能使速度提高不少,但是,显示上又会出现问题。因为 这样的话,( 2 ) 到( 4 ) 使用的是用于显示的颜色缓存,用户可能会看到( 2 ) 到( 4 ) 的场景出 现在屏幕上,或者用于显示的颜色缓存已经存在数据,这时绘制会破坏颜色缓存,这 并不是用户所希望的。( 2 ) 到f 4 ) 只是计算的中间过程,而不是显示的结果。解决方法 是使用p b u f f e r 扩展。p b u f f e r ,称为象素缓存,是不能用于显示的o p e n g l 缓存。p b u f f e r 和一般的缓存的关系如图1 7 所示。 图1 7 :象素缓存和显示缓存的关系 1 4硬件加速的可编程着色 1 4 1光照模型 在介绍可编程着色之前,我们先介绍光照模型的概念和常用的光照模型。 光照模型是根据光学物理的有关定律,计算景物表面上任一点投射到观察者眼中 的光亮度大小和色彩组成的数学模型。光照模型根据计算时是否考虑周围环境对景物 表面的影响分为局部光照模型和全局光照模型。局部光照模型只考虑光源直接照射在 景物表面所产生的光照效果。而全局光照模型还要考虑周围环境对景物表面的影响, 如镜面对其他物体的映射,通过透明面观察到的后面的景物等。前面所说的辐射度算 法为计算全局光照的一种方法。由于全局光照的计算的实时性较差,并不为o p e n g l 所直接处理,我们只介绍局部光照模型。 简单的局部光照模型假定光源是点光源,物体是非透明体,不考虑折射,反射光 由环境光、漫反射光和镜面反射光组成。 环境光的特点是:照射在物体上的光来自周围各个方向,又均匀地向各个方向反 射。计算公式为: 浙江大学硕士论文 f t = i | 芷l 其中i a 为环境光强度( 常数) ;k 为物体表面对环境光的反射系数。 漫反射光是物体向周围均匀地反射的光线,根据朗伯( l a m b e r t ) 余弦定律可以给 出计算公式: i d = 吃t 州c o s s t j 其中& 为物体表面的漫反射系数;i p j 为某一点光源所发出的入射光强度;0 ; 为该光源的入射角,即物体表面法向量n 和点光源入射光线向量l j 之间的夹角( c o s o i = n - l i ) 。 为模拟高光,b t p h o n g 提出了p h o n g 镜面反射模型: ,= 墨o , c o s 。啦 j 其中磁为物体表面的法向量;n 为镜面反射光汇聚指数:a i 为某一点光源在物体 表面上产生的镜面反射光方向( r i ) 与视线方向( v ) 之间的夹角,即c o s 6 i = r i v 。 综上所述,物体表面任意一点向观察点的反射光强度i = i 。+ i d + i 。计算公式为: 1 = 厶局+ k 鸟+ 蜀c o s 。喁) i 或表示成各单位向量的点积形式: ,= f 。疋+ “k ( 三) + 墨( 丑汁j j 实际应用时,应对光强的红、绿、兰分量分别进行处理。 1 4 2非硬件加速的可编程着色语言r e n d e r m a n 早在1 9 8 4 年,c o o k 在他的论文【7 j 中提出了着色单元( s h a d e r ) 的概念,将可编程渲 染引入了计算机图形学。在他的论文中,他使用用户可定制的着色单元取代了传统的 固定的光照计算,使得在一个应用程序中,用户可以使用多个表面光照模型。用户可 以根据需要将不同的表面应用不同的光照模型,使得不同的表面可以使用不同的光照 模型计算,这样一方面减少了复杂模型的不必要的计算,另一方面,光照模型在需要 的时候也可以很复杂,从而生成逼真的真实效果。而后p i x a r 公司根据此思想推出了 r e n d e r m a n 标准,并大量地在动画片和电影中使用遵循该标准 8 1 的渲染软件。 在着色单元概念提出以前,有许多人提出了许多光照模型。每个光照模型都有所 不同,而当时的渲染器里光照的计算公式是固定的。如果想使用一种新的光照模型, 就需要重新改写程序。着色单元概念的提出,使得光照模型的使用更加灵活了。用户 可以自己编写表示光照模型的函数。如果需要使用新的光照模型,只需要重写对应的 函数就可以了。并且用户不必关心渲染器究竟是如何实现绘制的,或者采用何种方法 实现,他
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中心医院CT、DSA维保服务采购招标文件
- 西藏自治区2025年初中学业水平考试语文试题(含答案)
- 知识产权档案管理制度
- 广西南宁市横州市2024-2025学年八年级下学期期中检测数学试题(含答案)
- 巡查工作流程课件
- 岩石爆破基本原理课件
- 输电巡线安全培训总结课件
- 小麦的秘密课件
- 小鸭子走路课件
- 高端写字楼出售与长期租赁管理协议
- 电工套管试验原始记录
- 水运工程施工质量检验表格
- GB/T 12612-2005多功能钢铁表面处理液通用技术条件
- 三级安全教育档案模板(完整版)
- 2023年公务员职业道德培训考试题库
- 第三单元名著导读《朝花夕拾》之《二十四孝图》详解 课件(共17张ppt) 部编版语文七年级上册
- 八纲辨证-课件
- 房产归属协议书范本
- 服务类合同补充协议
- 学生休学申请表(新)
- 350吨履带吊地基承载力验算
评论
0/150
提交评论