(计算机应用技术专业论文)移动平台上三维软绘制器的实现、优化和应用.pdf_第1页
(计算机应用技术专业论文)移动平台上三维软绘制器的实现、优化和应用.pdf_第2页
(计算机应用技术专业论文)移动平台上三维软绘制器的实现、优化和应用.pdf_第3页
(计算机应用技术专业论文)移动平台上三维软绘制器的实现、优化和应用.pdf_第4页
(计算机应用技术专业论文)移动平台上三维软绘制器的实现、优化和应用.pdf_第5页
已阅读5页,还剩48页未读 继续免费阅读

(计算机应用技术专业论文)移动平台上三维软绘制器的实现、优化和应用.pdf.pdf 免费下载

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

文档简介

浙江大学硕士学位论文 摘要 随着移动设备的迅速普及,移动平台已经变为一个非常重要的计算平台, 而如何在移动平台上提供三维绘制服务也成为一个热门研究课题。和传统的p c 平台相比,移动平台是一个资源受限的计算平台,而三维绘制却是一项对于计 算、存取等资源要求都非常高的应用。因此在移动平台上实现三维绘制就有重 要价值。 目前,为移动设备装备独立的图形加速卡还面临诸如能耗过高等困难,使 用c p u 来完成三维绘制任务成为一个比较实际的选择。本文将通过详细介绍我 们的三维软绘制器一一m o b i l e 3 d 一一中的实现细节和优化技术来说明我们为 移动设备实现三维软件绘制的方法和思路。m o i b l e 3 d 是一个严格遵循 o p e n g l 阻s 接口标准的、为掌上电脑和智能手机设计的软件绘制器,它具有绘 制性能高、对于资源要求低和易于扩展等特性。 本着对绘制性能和绘制质量相均衡的原则,m o b i l e 3 d 对各种绘制算法进行 了适当的裁剪,以保证其适应移动设备的需求。此外,本文还详细解释m o b i l e 3 d 中的各种性能优化算法,提出移动平台上软绘制优化算法的选择原则。在实现 m o b i l e 3 d 的基础上,本文介绍了一个移动平台三维绘制应用实例一一m r i 系 统。通过对这个应用实例的介绍,尤其是其三维绘制实现框架的介绍,详细描 述了在实际移动电话上进行三维应用开发的途径。 关键字移动平台三维软绘制移动图形实时编译o p e n g l i e s m o b i l e 3 d 浙江大学_ 唾士学位论文 a b s t r a c t w i t l l _ 1 l er a p i dp o p l l l a r i z a t i o no ft l l em o b i l ed e v i c e s ,i tl l a sb e c o m eo n eo ft h e m o s ti m p or t m tc o m p u t i r l gp l a t f o 瑚s 趾dh o wt op f o v i d ee 矗e c t i v e3 dr 鼬赫f o r r n o b i l ed e v i c e sh a sa l s ob e c o m eah o tr e s e a r c ha r e a c o 脚【p a 豫dw i mt l l ep cp l a 仃o r n l , m o b i l ep l a t f o n ni sar e s o u r c e l i m i t c dp i a t f o m l 、i t hl o wc a p a c i t yo fm e m o r y ,l o w d i s p l a yr e s o l 砸o na l l dn a r r o wb 孤d w i d m s i n c e3 dr e n d e r i n gi s o n es e r v i c em a t r e q u i r e sv e r yh i g hc o m p 砸n gp o w e r 姐d1 a r g em 咖o r yc a p a c i 劬ag r e a tm a n y c h a l l e n g e s ,n 删l y ,砸l ls p r i n gu pi 1 1i t sr e a l i z a t i o no nm o b i l ep l a t f b r n l a tp r e s e m ,i ne q u i p p i n gm o b i l ed e v i c e sw i m3 da c c e l e r a t i o n ,n l e r es t i l le x i s t s u c hd i 盛c u l t i e sa sc u r r e n tb a 仳e r i e s f 瓠l u r et oa 肋r d3 da c c e l e r a t i o n sh i 曲p o w e r c o n s u “l p t i o n l u c k i l y 艇蜘t oc p uc o m p u t i n gp o w e rt of u l 矗l l3 dr e n d e 曲g t a s ks e e m st ob eap m c t i c a lc h o i c e t h i st l l e s i si sm e a n tt oe l u c i d a t co l l ri d e a so f i m p l e m e 埘n g3 ds o f t 啪r er e n d c ro nm o b i l ed e v i c e sb ye x p l a i r 血gi n d e 【a i l 吐l e s o f t 呲r e l l d e 卜m o b i i e 3 d sr e a l i z a t i o n 谢t l li t so p t i m i z a t i o nt e c l l n o l o 辨m 0 b i l e 3 d i sas o f t w a r er e n d e rw h i c hs t r i c t l yf o l l o w so p e n g l 旧ss t a l l d a r da n di st a r g e t e d0 n l ep o c k e tp ca 王1 ds m a np h o n e w h a t sm o r e ,i tf e a t u r e sh i g hr c n d e r i n gc 印a c 咄 l o wd e m 姐df o rr e s o u r c e sa t l de 髂yn e x i b i l i 何 b a s e do n 也d e m 姐df o r resources a t l d e 髂yn e x i b i l i 何ba s e d o n 也ep r i n c i p l eo f b a l a n c i n g 也e render主ng e 虢c ta 1 1 d r e n d 甜n gs p e e d ,mo b i l e 3 dh a sg i v e nu ps o m ea d v a n c ef e a 时e s 觚d modi6ed s e v e r a l 打a d m o n a la l g o r i 山m st o m e e t 也er e q u i r e m e n t so f m o b i l e devicesthis也esis a l s oe x p l a i n sso m ec r i t i c a io p t i m i z a t i o 璐i nm o b i l e 3 dl i b r a r ya n ds 咖a r i z e s 吐l e nllest os e l e c t也eo p t 证l i z i n ga l g o r i t h m sf o r s o r w a r ef e n d e r o nm o b i l ed e v i c e s a t l a s t ,t h i s 也e s i s 、v il lf o c u so no n e a p p l i c a t i o n m r is y s t e m ,w h i c h i sa typicala p p l i c a t i o no f3 dr en d e r i n go nm o b i l e d e v i c e s i n 也i ss e c t i o n ,t h ek e yp a ni so n也e p r a c t i c a l a rc h i 把c t u r e f o r 3 dr e i l d e r i n go nt h e r e a ls m a r tp h o r l e s a n d tlle r e a d e r sc a n l l a v eawh o l ei m a g eo f t h e d e v e l o p 血ge n v i r o 砌e n tf o r 3ds applicationonsmanphones。 第一章概论 第一章概论 移动设备一般指能够方便携带、由电池供电的数字处理终端。最近几年来, 随着硬件价格的下降,以个人数字助理( p d a ) 和移动电话( m o b i l ep h o n e ) 为代 表的移动设备迅速得以普及。现在,移动设备已经成为一个非常重要的计算平 台,而移动设备便于携带的特性也使得这个计算平台的应用领域比传统的个人 计算机( p c ) 更加广泛。目前,各种传统计算平台上的应用在不断的向移动设 备延伸,而新出现的各种应用、服务在设计之初也越来越多地考虑移动平台的 应用需求。 三维( 3 d ) 应用是传统计算平台上( 如图形工作站、p c 机) 的重要应用 之一。随着虚拟仿真、三维游戏的大量应用,它已经成为这些计算平台上的基 本应用。在移动平台上,三维图形同样有很多应用场合,如三维导航、人机交 互等。所有的这些三维应用都需要有一个高效、灵活的三维绘制器来支持。目 前,以o p e n g l 1 】、d i r e c t 3 d 【2 为接口标准的图形加速设备已经在传统计算平 台上扮演了这个角色,但是移动平台现在还缺少这样的三维绘制器。所以如何 为移动平台提供高效、灵活的三维绘制器成为一个新的研究热点。本章首先简 单介绍移动平台和三维绘制的各自发展现状,然后讨论移动平台上三维绘制的 研究现状以及相应的接口标准,最后概括本文的内容、贡献和整个论文结构。 1 1 移动平台 移动平台指利用便携式移动设备进行各种数据计算、信息处理的计算平台。 该计算平台的目标是在保证移动设备便携特性的基础上提供尽可能好的数据处 理和计算能力。计算机自从2 0 世纪5 0 年代诞生以来保持着非常快的发展速度。 尤其是进入2 0 世纪8 0 年代,以提供通用计算为目标的个人计算机就一直在按 摩尔定律的速度发展。到上个世纪9 0 年代,一台几百美元的个人p c 在性能上 比8 0 年代的一台8 0 0 万美元的c r a yx m p 超级计算机甚至要高出1 0 到2 0 倍 3 。在硬件性能得到迅速提升的同时,其体积也在迅速减小,这让制造质高、 价廉的移动设备成为可能。目前,移动设备主要有手持设备、移动电脑和车载 系统这几类。其中手持设备特指可以一手握住,一手方便操作的移动设备,比 较常见的有随身电脑( p o c k e tp c ) 和智能电话( s m a r tp h o n e ) 。移动电脑一般 指可以方便携带并由电池供电的p c 系统,主要为膝上电脑( l 印t o p ) 。而现代 汽车中装备的移动计算设备则以电子导航器和视频播放器为主。一般来说,移 浙江犬学硕士学位论文 动电脑对于硬件体积的要求没有像手持设备那么严格,其电池供电能力也远远 强于一般的手持设备,所以它可以配置更多的硬件,拥有更多的功能e 现在的 膝上电脑一般都已经配备三维图形加速卡( 俗称显卡) ,可以提供比较好的三维 绘制功能。车载移动平台也可以借助车子自身的发电机供电而且对体积要求 也不太苛刻。所以在其上面提供三维绘制的空间也比较大。本文将主要关注目 前资源最为受限的手持设备,研究为这种设备提供高效三维绘制的方法和途径。 移动平台的快速发展还表现在专门针对移动设备的体系结构纷纷出现,其 中以a r m 【4 】最为典型。a r m 体系结构非常适合于移动平台,尤其是手持设备, 因为它具有下面的特点: 一它基于r j c s 体系结构,指令简单、高效,且有固定长度; - 它支持n u m b ( 1 6 位) a r m ( 3 2 位) 双指令集,有很高的指令密度; 它的寻址方式灵活简单,执行效率高; -该体系结构能耗底,适合以电池供电的移动设备; 现在,基于a r m 体系结构的移动设备已经站住了绝大部分市场份额。成为移动 平台上最为流行的体系结构。 由于受设备体积的限制,早期移动设备的通用计算能力都比较弱,一般只 能提供简单数据计算和文本处理等功能。随着大规模集成电路的快速发展,移 动设备的计算能力和存储能力都得到大大提高,其硬件设备已经能够达到五年 前p c 机的水准,可以支持如网络浏览、三维绘制等应用。表l - 1 为现在市面 上掌上电脑和智能手机能够拥有的硬件配置,。 表1 1 市场上常j i ! 移动设备的一般配置 部件名称掌上电脑智能手机 c p u3 1 2 删z2 0 0 删z 内存 1 2 8 6 4 m b 显示屏 2 4 0 x3 2 0 象素3 2 0 x2 4 0 象素 操作系统 w i n d o w sc e4 ow i n d o 臀sm o b e5 o 在移动平台的发展过程中,无线通信网络功不可没。由于无线通信网络的 推动,作为无线通信终端的移动电话才为普通消费者所接受。随着新一代( 3 g ) 掌卜电脑为h p i p a qh x 2 1 0 0 机器,智能手机为m o t o f o l 8i 9 3 0 帆器 2 第一章概论 通信网络的使用,整合无线通信和通用计算能力的移动电话必将会得到大大的 普及1 ,并成为移动计算平台的主要载体。 1 2 三维绘制 三维绘制指利用软件或者硬件从三维模型产生二维数字图像的过程,是计 算机图形学中的一个基本问题。自上个世纪6 0 年代开始,三维绘制技术就作为 一个基础研究课题不断向前发展。从早期的线绘制 5 】【6 】、g o l l r a n d 绘制【7 】及 p h o n g 光照模型嘲到后来的纹理映射【9 】,三维绘制得到的效果越来越好。光线 跟踪【l o 】【l l 】和辐射度方法【1 2 】【1 3 】的提出更是让照片级真实感绘制成为可能。 根据不同的应用需求,三维绘制可以分成实时绘制和非实时绘制两类。前者强 调绘制性能,要求最终的绘制速度能够达到交互的要求,主要应用在人机交互、 实时仿真方面;后者强调绘制效果,要求能够得到尽可能好的绘制效果,主要 应用在电影制作等领域。显然,移动平台的三维绘制应属于实时绘制领域,本 文的研究与开发也主要面向实时绘制。 在实时绘制领域,流水线技术的引入是一个非常关键的突破。流水线本来 是应用于工业制造领域,最早由福特汽车公司用来提高汽车装备的效率。在引 入流水线技术后,整个三维绘制任务被分成若干阶段并行处理,从而出现三维 绘制流水线。这种流水线机制能够大大提高三维绘制的效率,并且易于硬件加 速实现,所以被广泛的采用并最终成为现代三维硬件加速器的基础。整个三维 绘制流水线可以分成图1 1 中的三个基本阶段。 图卜1 三维绘制流水线的基本结构 上面的绘制流水线首先对用户的三维模型做坐标空间变换和光照着色,然后光 栅化模型中的图元,最后处理光栅化得到的每个片元( 丘a g m e n t ) 并把最终结 果输出显示。 早期的三维绘制流水线主要是用软件库实现,也就是完全用c p u 来执行三 维绘制任务,其代表作有q u a k ee n g i n e 【1 4 】、m e s a 3 d 1 5 】等。尽管这些软件库 根据中国商业部的统计,到2 0 0 6 年第一季度中国移动电话的用户数量已经达到2 2 亿 3 浙江大学硕士学位论文 不需要借助任何硬件图形加速卡就能够绘制出逼真的三维场景,但是三维绘制 的流处理特性决定了用于通用计算的c p u 并不适合用来运行三维绘制任务。于 是专门用于三维绘制的硬件加速卡大量出现,并装备在专门用作三维绘制的机 器( 即图形工作站) 上,其典型代表有s g i 公司的i n d i g o 系列。随着p c 机器 的普及和广泛使用。为p c 机器设计的图形加速卡也纷纷涌现。但是,为了降 低成本,早期的p c 平台图形加速卡一般只加速绘制流水线中的光栅化和片元 处理阶段,坐标变换和光照阶段仍然由软件驱动来处理。后来,坐标变换和光 照也渐渐被硬件加速,其代表产品有n v i d i a 公司的t n t 系列图形加速卡【1 6 】。 随着图形加速卡性能的不断提升和可编程图形加速卡【1 7 】【1 8 】的出现,图形加速 卡已经不仅仅能够提供基本的图形绘制功能,还可以用于多媒体解压、通用计 算等领域。目前的图形加速卡已经真正成为p c 平台上c p u 以外的“第二芯”。 为方便三维应用程序的移植制定三维绘制流水线的接口标准非常必要。 从s g i 图形工作站上图形硬件接口演化而来的开放标准一一o p e n g l 一一最终 被大量的厂商所接纳并成为p c 平台上面三维图形加速卡编程接口的工业标准。 同时,m i c r o s o r 公司d i r e c t 3 d 接口也在w i n d o w s 操作系统的迅速普及下得到 广泛的应用,尤其是在其推出8 o 版本后迅速被很多三维游戏引擎采用,成为 和o p e n g l 并驾齐驱的三维绘制流水线接口标准。 1 3 移动平台上的三维绘制 进入2 0 0 0 年后,移动平台成为一个非常引人注目的计算平台,尤其是在无 线网络通信的强烈推进下,移动设备普及得非常快。许多传统p c 平台和i n t e m e t 上的应用纷纷向移动平台上延伸。如电子邮件、网络游戏等都在移动平台上得 到了很好的应用。同样,三维绘制在移动平台上也有很多应用需求,如三维游 戏、交互界面和虚拟导航等( 参见图1 2 ) 。但是,移动平台自身的特点给在其 上实施三维绘制带来了巨大的挑战,具体可以总结为下面几点: 一 目前的移动设备电池还无法支持三维图形加速卡的能耗,所以只能借助 c p u 来完成三维绘制任务,即用软件来绘制三维图形; 移动设备的屏幕分辨率非常小,采样频率会比p c 低很多,这样走样现 象会非常明显; 4 第一章概论 图1 2 移动平台上的各种三维应用 一移动设备的内存带宽受限严重,c p u 的c a c h e 容量非常小,这极大得 限制了三维绘制的性能: _ 移动设备的存储设备容量小,还无法在本地实现对大规模场景数据的存 储和处理; 上面的问题给在移动平台上实现三维图形绘制带来了非常大的困难,许多在传 统p c 平台上的解决方案并不能在移动平台上直接使用,所以目前有很多研究 机构都投入了大量的人力、财力来研究适合移动平台上面的三维绘制解决之道。 本文主要研究如何利用移动平台上面的c p u 实现高效的三维绘制,即如何提供 一个高效、灵活的三维软绘制器。 针对移动平台自身的特点,传统的三维绘制流水线接口标准0 p e n g l 和 d i r e c t 3 d 都已经推出新标准一一o p e n g l i e s ( o p e n g l f o re m b e d d e ds y s t c m ) 【1 9 】 和d i r c c t 3 d | m ( d i r e c t3 dm o b i l e ) 2 0 】。其中,o p e n g l l e s 是传统0 p e n g l 接口 标准的子集,主要针对m o b i l ep h o n e s 和p d a s 等移动设备。这个标准剔除了很 多不适合移动平台的特性( 如立即模式绘制等) ,并且添加了一些专门针对移动 平台的新特性( 如定点数接口等) 。d i r e c t 3 d i m 是微软为w i n d o 、sc e 操作系统 设计的三维绘制接口标准,它完全兼容d i r c c t 3 d ,并针对移动平台做了许多优 化。同以前p c 平台一样,o p e n g l l e s 标准仍然是开放的工业标准,由一个工 业组织一一k l l r o n o sg r o u p 【2 1 一一来维护和更新;d i r e c t 3 d m 则仍然为 m i c r o s o 丘所独有,并已经内建在新的w i i l d o w c e 操作系统中。 如前所述,当前的移动设备还不能够集成独图形加速设备,三维绘制功能 仍然是由软件来实现。上述两个接口标准在设计之初也充分考虑到这一点,都 允许多种实现方法:纯软件实现、纯硬件加速和软硬件结合实现。在纯软件实 现领域,目前比较有代表性的产品有芬兰h y b r i dg r 印l l i c s 公司的g e r b e r a 【2 2 】 浙江大学硕上学位论立 和日本h ic o m 公司的m a s c oc 船p u l ee n g i n e 【2 3 】。其中前者完全遵循 0 p e n g lj e s 接口标准,并在n o k i a 公司的手机上得到了商业应用:后者则采用 自己的接口标准,目前已被s o n y e d c s s o n 的3 g 手机所采用。 在移动平台三维软件绘制库纷纷进入商业应用的同时,关于移动平台三维 绘制的硬件加速研究也在不断深入【2 4 1 【2 5 】。目前,能够成功进行商业应用的主 要是美国i m a g i n a t i o n1 e c l l i l o l o g i e s 公司提供的p o w e r v rm b x 和s g x 解决方案 【2 6 】。a r m 公司基于p o w 州rm b x 加速卡提出a r m3 dg r a p 挝c s s o l 埘o n s 【2 7 】,并已经授权给多个移动终端设备制造商。毫无疑问,在下一代的 移动终端设备中三维硬件加速卡将会被越来越多的采用。 j a v a 社区也在关注移动平台上面三维绘制的发展,j s r 1 8 4 【2 8 】( 又称 m o b i l eg m p h i c sa p i ) 标准的提出就是一个体现。j s r 1 8 4 是j 2 m e 【2 9 】平台上 面的一个可选配置,主要为j 2 m e 平台提供三维绘制服务。这个标准采用场景 管理树( s c e n eg r a p h ) 【3 0 】的方式对三维场景进行管理并绘制。它建立在 o p e n g l l e s 或d i r e c t 3 d m 之上并把所有绘制命令交给这些底层的绘制器( 或者 硬件加速卡) 来执行最后的绘制操作。目前,很多支持j 2 m e 平台的智能手机都 已经内建j s r 1 8 4 实现包。 同p c 平台一样,移动平台上的三维绘制最终必然会由硬件加速卡来实现, 目前的软件实现只会是一个过渡阶段。但是针对移动设备的软件绘制仍然是值 得研究的一个领域。首先,在目前移动设备基本还不配备硬件加速卡的情况下, 软绘制器仍然是唯一能够提供三维绘制的方案。即使在将来硬件加速设备普及 后,软绘制器的廉价仍然会让它有自己的使用空间;其次,软件实现库中的部 分内容( 如坐标变化及光照 绘翻凝集露嚣稚! 夔窿;辘麟弱鬻 x 第一章概论 e 8 6 8 平台上的实现。 1 5 本文的主要工作与组织结构 在对传统移动平台上的三维软绘制器进行深入研究后,结合一些硬件加速 卡的设计原理和移动平台的自身特点,本人在毕业设计中完成了一个 薹鬻茎薹i 羹自滓陌僻脓慷篷陶攫一,滔j 要i 妻;烈型引划卑善甍到鄄引州坑誊 雾圳到曼蠢础雕臣髫暇必剽翌星珂寸蛊劈:置嚣羞刿甄蜷悌嘲晤孺滔淄浠淳胜蕊单的一维线性插值就可以求出每个象素的各 种属性值。而对于三角形图元,绘制器则需要根据g o u 姗d 绘制方法中的双线 性插值法来求每个象素的各种属性值。在做g o u r 柚d 双线性插值前,绘制器首 先需要对三角形图元进行初始化,其目的是为了求出每种属性在整个三角形图 元内部的水平和垂直梯度变化值。下面将详细讨论这些梯度变化值的计算方法。 假设三角形a b c 变换到屏幕空间后的三个顶点为4 ( 工,m ) 、b ( x 2 ,y 2 ) 和 c ( 屯,儿) ,这三个顶点上的某种属性p ( 如顶点颜色值,顶点深度值等) 的值分别 为p 1 、p :和p ,。前面已经假设所有的属性在屏幕空间中的图元内呈线形变化, 所以有下面一组等式 ip - = 甜t + 砂l + c p 2 = 甜2 + 砂2 + c( 公式2 ) 【见= 盯3 + 蚍+ c 上面公式中,a ,b和c 为线性方程组的系数,同时a 和b 也是该属性p 在x 和y 方向上的偏导数, 即属性p 在水平和垂直方向上的梯度变化值。通过解公式2 中的线性方程组可以得到如下公式: 生:口:! 丝二鱼2 1 丝二苎2 二! 丝= 璺2 1 丝二苎2 喜如援二盖始二端盖二暑融二嚣 ( 黼) 生= 6 = 垫二旦塑 型二垫二旦坠 型 怕“叫 方 ( x ,一x t )( y 3 一y 1 ) 一( x 2 一x ) ( y :一y 。) 上式即为计算三角形图元内各个属性梯度变化值的方法( 注意:公式3 中的两个 分母符号正好相反) 。对于任何可以认为在屏幕空间内呈线性分布的顶点属性, 绘制器都可以使用公式3 计算其水平和垂直方向梯度值以完成初始化操作。 ( 2 ) 光栅化操作 1 浙江大学硕士学位论文 及其关键技术。 第三部分是本论文一个关键部分。关于m o b i l e 3 d 的优化技术将在这部分 进行系统的阐述,并提供实际的性能测试实验结果。此外,这部分还将仔细分 析移动设备对于性能优化算法的限制和要求,讨论为移动设备选择性能优化算 法的方法和原则。 第四部分介绍移动平台上的一个三维绘制应用实例一一m r i 系统。通过对 于这个系统的讨论,说明在移动设备( 尤其是智能手机) 上进行三维绘制应用 开发的系统框架。 第五部分对于整个论文进行总结,并对移动平台上三维绘制的发展进行展 望。对m o b i l e 3 d 库的改进方案也会在这部分进行介绍。 1 0 浙江大学硕士学位论文 - 完整的坐标空间变换。o p e n g l i e s 支持从局部坐标空间到窗口坐标空 间这一完整变换过程,并提供了完备的矩阵操作接口函数。但是 0 p e n g l l e s 不再支持自动纹理坐标生成过程; 一完整的顶点光照支持。0 p c n g l l e s 支持基于顶点的光照计算,并且提 供双面光照、颜色材质等特性; _ 完整的视域裁剪和背面剔除功能。0 p e n g l e s 支持基于视域体的裁剪 和背面剔除功能,能够在光栅化之前剔除大量不必要的绘制图元。但是 0 p e n g l i e s 并不支持用户自定义的裁剪平面,; _ 完整的纹理映射功能。o p e n g l l e s 支持基本的纹理映射操作,支持不 同的纹理过滤方式,支持m i p m a p 采样。除此之外,它还支持纹理对 象操作。但是,o p c n g l l e s 不支持多纹理单元t ; _ 完整的片元处理和缓存操作。o p g l i e s 提供完整的片元处理接口, 包括雾处理、a l p h a 测试、s t e n c i l 测试、深度测试、混合操作和逻辑操 作等。但是0 p e n g l i e s 不支持累积缓存及其操作,也不支持多绘制 b u 脏r 和对帧缓存的直接拷贝操作; _ 丰富的绘制状态查询和设置操作。o p e n g l j e s 提供完整的绘制状态设 置和查询函数,但是o p e n g l l e s 不再支持属性组操作; 2 2m o b i l e 3 d 的系统结构 m o b i l e 3 d 系统分成基础模块、核心模块、辅助工具模块和平台接口模块这 四部分,整体结构如图2 2 所示。 图2 - 2 m o b i l e 3 d 的系统结构 在o p e n g l 旧s1 1 标准中引入r 对十自定义裁剪甲面的支持。 ,在0 p e n g l i e sl l 标准中屈多能够支持阿个纹理单元 1 2 浙江大学硕士学位论文 目前,整个三维绘制流水线中各个阶段的实现技术都已经比较成熟,并且 很多已经实现硬件加速。但是由于m o b i k 3 d 是为移动平台而设计,所以在其 实现过程中寻找到绘制性能和绘制质量之问的均衡点就显得更为重要。下面将 重点介绍m o b i l e 3 d 所采用的绘制算法和实现技术,其中包括定点数运算、坐 标变换和光照计算、视域裁剪、图元光栅化、纹理映射以及辅助库( u g ) 。背面 剔除和片元处理将在第三章中结合优化技术讨论。 2 3 定点数运算和i n t e lg p p 库 三维图形绘制需要大量的浮点数运算,但是目前大多数移动设备都没有浮 点运算器,应用程序中浮点运算必须用软件来模拟,满足不了实时绘制的性能 要求,因此m o b i l e 3 d 采用了定点数运算来模拟浮点数运算。在m o b i l e 3 d 中, 它盼定点数基本格式为q 1 6 1 6 ,即高1 6 位表示整数部分,低1 6 位表示小数部 分。定点数可以使用整型来实现,定点数的运算也可以借助整数运算器完成, 这样就避开了浮点运算指令,提高绘制器的性能。当然,使用定点数模拟浮点 数也会带来一些问题。首先。定点数的表示范围要远远小于浮点数,在定点数 的各种基本运算实现中需要更加仔细地处理各种溢出可能。齐次,绘制流水线 的各个不同阶段对数据的表示范围有不同的要求,前端的几何处理阶段中 q 1 6 1 6 格式就基本能够满足需求,而在光栅化阶段中的插值运算就需要更大的 表示范围( 如透视纠正插值中要用到的1 z ) ,所以在具体实现中要适时地使用移 位操作调整定点数的格式。 除了自身实现的一组定点数运算函数外,m 0 b i l e 3 d 还可以选择采用i n l e l g p p ( g m p h i c sp e r f 0 眦a n c ep r i m “i v e s ) 【3 4 】库来加速定点数运算。i n t e lg p p 库是 由i n t c l 公司为i m e lx s c a l e 移动平台设计的图元性能优化库,主要提供如定点 数运算、矩阵操作等最基本的运算功能。它针对i n t e ix s c a l e 平台做了大量的优 化工作,具有很好的执行效率。 2 4 坐标变换和光照 当用户的模型数据进入绘制流水线后,第一步处理就是要对模型的顶点进 行坐标变换和光照计算。用户输入的顶点坐标在表示为齐次坐标后通过模型视 图变变换和窗口变换后转化为二维屏幕坐标。所有的这些变换操作都 以矩阵运算的形式完成。m 0 b i l e 3 d 中实现了各个变化矩阵的设置函数接口,并 浙江大学硕士学位论文 例,而目前的移动设备一般都不会配备浮点运算器( f p u ) ,所以 0 p e n g l i e s 就支持用定点数来模拟浮点运算,并且为其提供一组单独 的接口。为方便应用程序的移植,0 p e n g l l e s 标准还将保留传统的浮 点数接口: _ o p e n g l i e s 剔除了对拾取操作的支持。在目前的移动平台上,三维应 用还是以显示为主,拾取操作的需求不是特别强烈。另外,拾取操作的 实现代价比较大,不适合移动平台; _ 0 p e i l g l i e s 还剔除了对显示列表的支持。在传统的p c 平台上面,显示 列表是提高绘制性能的重要途径。但是对显示列表的支持需要消耗大量 的内存,在内存受限的移动平台上只好放弃; o p e n g l l e s 还做了很多别的裁剪和优化操作,如不再支持一维纹理和 三维纹理,限制支持的纹理格式,减少支持的图元类型,取消对求值程 序和n u r b s 样条的支持等; 上面的所有裁剪和优化都使得0 p e n g l i e s 更加适合移动平台。同时也大大的减 小了软实现库的文件大小z 。 o p c n g l i e s 标准有c o 眦o n 和c o n l r n o n - l i t e 两个配置,其中后者只支持 定点数接口,而前者则包含定点数接口和传统的浮点数接口。这样即方便软绘 制器的实现,又能够保证接受传统的浮点数输入。在m o b i l e 3 d 中,浮点数接 口函数先把输入参数转化为定点数格式,然后调用对应的定点数接口函数完成 真正的操作。 和o p e n g l 标准相同,o p e i l g l i e s 标准也不包含与本地窗口系统相关的接 口函数,这部分接口由各个不同的窗口平台自己提供,如x 、聃n d o w s 中的g l x 和w i n d o w s 中的w g l 。由于备个不同平台提供的接口函数都不一致,应用程 序的移植变得非常麻烦,所以k h f o n o sg r o u p 专门制定了一个用来描述 o p e n g l l e s 和本地窗口系统之间交互的接口标准一一本地平台图形接口标准 ( e g l 【3 3 】) 。e g l 可以为绘制命令创建绘制环境( c o n t e x t ) 和绘制目标( s u r f - a c e ) , 同步0 p e n g l l e s 和本地窗口平台的绘制操作。但是现在的e o l 标准还不能像 第二章m o b i l e 3 d 的设计与实现 完成图元初始化操作后,绘制器开始光栅化每个图元。每个图元有很多种 顶点属性,但是实际的光栅化过程并不总是需要对所有的顶点属性进行线性插 值运算。例如,没有开启纹理映射时就不需要纹理坐标的插值运算。在硬件实 现的绘制器中,每一种顶点属性的插值运算都是由一套独立的硬件逻辑单元来 处理,而且所有的这些逻辑单元又是并行执行的,所以即使对部分无效的顶点 属性做了逻辑插值也不会影响整个光栅化速度。但是,软实现过程的所有顶点 属性插值操作都需要由c p u 来完成,不必要的插值运算将会极大地影响光栅化 速度。为了避免任何不必要的插值操作,m o b i l e 3 d 利用宏替换技术为每种顶点 属性组合都实现一个专门的光栅化处理函数。在处理每条绘制命令之前, m o b i l e 3 d 会根据当前的所有顶点属性状态( 有效或者无效) 选择一个相应的光栅 化处理函数,并用该函数来光栅化这个绘制命令中的所有图元。下面为 m o b i l e 3 d 中光栅化处理函数的实现代码片断: ,川川川川川川川 t 顶点属性有颜色值( c a l 。r ) 、纹理坐标( t e x t u r e ) 、深度值c d e p t h ) 和雾( f 。g ) ; * 模板测试( s t e n c i l ) 状态被用来确定在光栅化过程中是否需要支持对模板缓存的参逃操作 光栅化处理函数名字中对应字母大写表示该函数包含相应属性的插值处理,小写贝! 厘之i 川川川t 川, 该光栅化函数只包含对于颜色和雾强度的插值操作,函数名称为r a 8 t e r t 譬i 鱼n g l e 。- c t d p s d e 鲢n e 襄a s t e r t r i a n 9 1 e r a s t e r t r i a n 9 1 e c t d f s * d e f i n eh a 8 g 口u r a u d c o l o r1 瞽d e f i n eh a 8 t e x t u r e0 # d e f i n eh a s d e p t ho # d e f i n eh a s f o g1 嚣d e f i n eh a s s t e n c i l0 # i n c i u d e ”r a s t e r i z e r t r i a n g l e i n 工”这里包古真正的实现代码 在r a s t e r i z e r l a i l g l e i n l 文件中的实现则如下: v o i dr a s t e r t r i a n g l e ( r a s t e r i z e r r a s t e r i z e r ,v e r t e x a ,v e r t e x b ,v e r t e x c f 光栅化三角形圈元 f o r ( y ;m 土“y ;y 0 则表示该图元的顶点顺序为逆时针( c c w ) ;如果s o 则表示该图 元的顶点顺序为顺时针( c w ) ; ( 2 ) 提前的深度测试 我们常常称在光栅化之后的处理阶段为片元处理流水线( f m 咄n t p i p e l i n e ) 。这个阶段是整个绘制流水线最耗时间的地方,因为图元光栅化后得 到的片元数量是巨大的,而每个片元又需要经过多个阶段处理才能得到最终结 果。对于第一个原因,需要在流水线的前端进行优化以尽可能多地剔除那些不 需要绘制的图元,减少进入光栅处理阶段的图元数量。如剔除掉所有背面图元、 做各种视域裁剪和遮挡测试等。而第二个原因则需要尽可能早的剔除对最终输 出结果没有影响的片元,避免不必要的片元操作。提前的深度测试e 是为避免 不必要片元操作,m o b i l e 3 d 采用了这一技术来提高系统的整体绘制性能。首先, 让我们分析一下0 p e n g l l e s 中的标准片元处理流水线( 参见图3 1 ) 。 片元操作 抖 酣 一 篓i 片元j 蠢鼙 墨 鞠 悃匡 + 作 苷 b q 倒7 臂r 测 丛 试 图3 1 o p e n g l i e s 标准片元处理流水线 在这个标准流水线中,深度测试放在流水线中比较靠后的位嚣。因此,片元完 全有可能在做完前面的纹理应用和各种测试后却在深度测试中被丢弃,这样就 会浪费很多时间来做无用操作,尤其是在纹理应用操作中可能还会涉及到非常 费时的纹理采样操作。一种更好的做法是把深度测试提前,把那些根本通不过 深度测试的片元提前剔除掉。m o b i l e 3 d 的实现中把深度测试提前到二维剪除操 作与纹理应用操作之间,其片元处理流水线如图3 2 所示。 浙江大学砸士学位论文 片元操作 一。 纹 8 畏抖芝 片壳 维 乎 _ 理 fq 禽 +黧_ 曩 - 篓 剪 淫 霄 测 + 除 试 刊 怍作 乍 式 图3 - 2 m 0 b i i e 3 d 中的片元处理流水线 m o b i l e 3 d 的片元处理流水线中,片元在做完二维剪除操作后马上进行深度测 试。没有通过深度测试的片元被直接丢弃掉,只有通过深度测试的片元才能继 续下面的片元操作,这样就可以避免大量不必要的片元操作。表3 2 比较了使 用和没有使用这种优化方法的绘制性能。: 表3 - 2 提前的深度测试操作的性能表现 测试指标优化前优化后 提升1 = l :麟; 帧速率1 4 2 8 f r e s e c1 5 2 7 f r e s e c1 0 7 填充率 1 5 6 k p i x e l s e c 2 2 6 k p i x e l s e c1 4 5 三角形绘制速率 1 2 6 5 k t r i s e c 1 3 4 5 k t r i s e c 1 0 6 从上表明显可以看出,提前的深度测试可以大大提升绘制器填充率的表现,也 就是片元处理流水线的性能。需要注意的是这样的流水线变动会引来新的问题, 那就是它已经破坏了0 p e n g l i e s 中片元处理操作的原来逻辑。当应用程序开启 了模板( s t e n c i l ) 测试时,片元可能会通过模板测试但不能通过深度测试,标准流 水线会把该片元的相应信息写到模板缓存中,但在变动后的流水线则会在深度 测试后直接丢弃这个片元。所以,这个新流水线结构的实现过程中还需要对模 板测试处理进行特别的修正。 3 2 运行时编译 0 p e g l i e s 流水线是一个状态机,即根据流水线中的各种状态确定该怎样 处理输入的数据。状态机的软件实现过程中经常存在一个问题,即在状态变化 不频繁的情况下存在很多不必要的状态检测和比较操作。在o p e n g l l e s 片元流 水线的软件实现中。这个问题显得更为明显。软件实现片元处理流水线时,绘 上血数据是存没有使用后面介绍的j i t 技术下测试得到的。 3 0 第三章m 曲i l c 3 d 的性能优化 制器需要对光栅化得到的每巧嘴元进行各个绘制状态的检测和比较操作,以确 定怎样处理这个片元( 参见下面代码片断) 。但是一条绘制命令的所有片元处理 过程都应该一致,并不需要每獬$ 来检测状态和比较状态。由于每条绘制指令 产生的片元数量非常大( 常常是三角形图元的上百倍【4 9 】) ,这种不必要的状态检 测和比较操作就更加频繁出现。 v o i dd o p r a g 旧n t ( r a s t e r i z e r + r a s t e r i z e r t 茸r a g m e n t + r a j m e h t ,i n i t i a l i z a t i o n s ,d e p t ht e s t 燃地堂二楚塑陛! 墅粤她地l 一( 鉴查焦翅j e g t f i e d2 b u f e r v a l u e = i n f o 一) d e p t h b u f f e r o f f 8 e 七 ; f 蕊蕊淼嚣赫面磊忑昌一蕊漾蔽_ 1 c a s ec o m p a r i 5 0 n f u n 。a l w a y s :d e p t h t e s 七芷t r u e ;b r e a b c 丑s ec 唧a r i $ o n f n n c l e s 8 : d e p t h t e 8 t = d e p 七h v a l u e z b u f

温馨提示

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

评论

0/150

提交评论