基于图块的3d计算机图形系统中的显示列表控制流分组的制作方法

文档序号:6596039阅读:263来源:国知局
专利名称:基于图块的3d计算机图形系统中的显示列表控制流分组的制作方法
技术领域
本发明涉及3D(3-dimenSi0nal)计算机图形系统,尤其涉及基于图块(tile)的系统并致力于增强基于图块的绘制(rendering)的性能。
背景技术
随着技术的快速发展,3D计算机生成的图像的复杂度增加了。人们能够通过使用顶点和三角网格来容易地为非常复杂的3D对象(诸如人类运动)构建计算机模型。然后, 能够将这些类型的3D模型发送到3D计算机图形系统中,并在计算机屏幕上生成动画的3D 图像。计算机生成的3D动画图像广泛地用于3D计算机游戏、导航工具和计算机辅助工程设计工具中。3D计算机图形系统必须应对更复杂图形以及快速显示的要求。由于显示模型中的细节增加了,所以需要使用越来越多的原语(primitive)和顶点。而且随着纹理(texture) 和阴影(shading)技术的演进,越来越多的信息伴随有原语和顶点数据。在现代游戏中,一次绘制中会存在着超过百万个原语。因此,存储器的带宽是计算机图形系统性能的非常重要的因素。基于图块的绘制系统是众所周知的。这些系统将图像细分成多个矩形块或者图块。在英国专利GB2343603和国际专利申请号WO 2004/086309中,绘制表面被分成nXm 个像素图块的子表面。原语(类似于三角、线或点)仅在与这些原语重叠的图块中得到处理。在基于图块的3D计算机图形系统中,用于划分图块所执行的主要步骤如图1所
7J\ ο1、如图1中的101所示,输入原语和顶点的数据流。类似位置中的原语可以按时间顺序到达,类似于三角带和扇。2、宏图块引擎(macro tiling engine, MTE)将顶点转换成屏幕空间,移除可以被反向面对的(back faced)或者可以通过使用公知方法剪裁平面进行剪裁的原语。如图1 中的102所示,原语被分组到原语块中并被写入存储器中,其中,原语块具有固定的最大数量的顶点和原语。对于由所述原语覆盖的图块而言,原语和顶点的数量与原语块的存储器地址(原语块指针)一起被发送到图块引擎,以便将其添加到显示列表的控制流中。为了在获取原语和顶点数据时最小化存储器带宽的影响,原语被分组到原语块 (即依赖于针对原语块的边界框的宏图块)中。如图2所示,宏图块201是屏幕200的矩形区域,该宏图块201具有固定数量的图块202。宏图块可以是屏幕大小的四分之一或者十六分之一,其用于定位原语块并降低存储器的带宽。当原语块中的原语与宏图块交叉(cross) 时,它们被写入称为全局宏图块的专用宏图块中。这样,原语块中的参数数据就只被写一次。来自宏图块的原语仅能够由该宏图块内的图块进行访问,而来自全局宏图块的原语可以由所有的图块的进行访问。3、如图1中的103所示的图块引擎(TE)。将来自被写入宏图块引擎102中的原语块的每个原语与该原语块的边界框内部的每个图块进行核对。将该原语块添加到由该原语块中的任意原语所覆盖的图块的显示列表中。被写入与图块的显示列表相关联的控制流中的控制数据包括针对所述原语块中的原语和顶点的数量的原语块报头、针对被写入的原语块的存储器地址的原语块指针以及针对在图块中可见的原语的原语掩码(mask)。针对显示列表中的控制流数据,将分离的存储器空间分配给每个图块。在每个图块的控制流数据中,称为尾指针的存储器地址指针被用作针对下一个空闲地址。为了针对图块中的控制流来改善存储器访问,可以向图块引擎添加小的高速缓存器,即“尾指针高速缓存器”。图块中的控制流的末端的存储器位置被存储在尾指针高速缓存器中并被读取自尾指针高速缓存器,这降低了来自的图块引擎的主存储器访问。4、3D图像处理。在图3中,针对来自区域阵列300的屏幕的每个图块来执行基于图块的3D计算机图形系统中的3D图像处理。其遍历图3中每个图块301的控制流,并在图3中的控制数据302中从由原语块指针所指向的存储器地址中读取顶点和原语数据。对来自原语块的图块中的所有有效原语执行图像处理操作,诸如隐藏表面移除、纹理化以及阴影处理。图8中示出了基于图块的绘制的示例。作为屏幕一部分的宏图块MT0800内部具有16个图块801。两个三角带802、803以及一个大的三角804由宏图块引擎MTE 805进行处理,并被投影到MTO中的部分屏幕中。与这三个原语块相关联的顶点和原语数据被写入存储器807中的它们自己的存储器地址中。然后,这三个原语块的存储器地址指针被传递给用于进行图块化处理的图块引擎TE 806。图块引擎对所有的图块进行遍历,以确定图块内是否具有任何的原语以及与在图块中可见的原语块相关联的控制流数据是否被写入用于图块显示列表的存储器中。在示例性的显示中,T4中的控制流将包含针对原语块802 和804中的三个原语块的地址指针以及三角的三角可见掩码的控制数据。例如,原语块802 中的从左边开始的前三个三角以及来自原语块804的大三角在T4中是可见的。对于图块 TlO而言,控制流数据将仅由来自原语块803和804的信息构成。同时,将控制数据(诸如与原语块803相关联的顶点数据的地址指针)插入到针对图块T10、T11、T14和T15的控制流中,而将与原语块804相关联的控制数据插入到针对宏图块MTO中的每个图块的控制流中。在3D绘制处理808中,以图3中的300所示的区域阵列的顺序来对所有的图块逐个地进行处理。对于3D处理中的每个图块而言,如图3中的301所示,首先从存储器中读取来自控制流的控制数据。如图3中的302所示,从存储器中读取与图块控制数据中的原语块相关联的顶点和原语数据,因此对图块可见的所有的三角都被处理并被绘制到屏幕上。对于基于图块的计算机图形系统而言,在图块的基础上对图块执行绘制。基于图块的绘制的最大优点在于,其显著降低了对图形系统内部存储和存储器带宽的要求。基于图块的绘制的缺点是每个图块中的显示列表所需的控制数据的增加。显示控制数据需要被写入到三角覆盖(triangle cover)的所有图块中。对于覆盖许多图块的大三角而言,被写入的控制数据的总数量是相当大的。例如,屏幕尺寸为1920X1080的一次绘制可以被分成8160个像素为16X16的图
块。覆盖整个屏幕的大三角必须被添加到所有图块的显示列表中。如果对于控制数据而言需要2个32比特字,则对于单个全屏幕三角而言,总的控制流数据接近于64KB。在该情况中所需要的大数量的控制数据对基于图块的3D计算机图形系统中的绘制的性能具有显著的影响。英国专利申请No. 0717781. 9中呈现的系统同时处理两个图块以改善图块引擎的性能。来自两个邻近图块的控制流数据被组合成单个显示列表,根据上面的示例,这使得总的控制流数据为接近32KB。在这种情况中,控制流数据的大小是大约一半,但对于三角而言,这仍然是相当大数量的控制数据。

发明内容
本发明的优选实施方式提供了在基于图块的3D计算机图形系统中用于显示列表控制流分组的方法和装置。在基于图块的绘制系统中,覆盖多个图块的三角消耗了每个图块的存储器和带宽,并且必须在每个图块中设置参考。根据本发明实施方式的用于显示列表控制流分组的方法将基于图块的显示列表组织成图块组(tile group)以形成单个显示列表控制流,其中控制流数据被施加到所述图块组而非单个的图块。如果控制数据块中的控制流数据在图块中没有被引用,则在该图块中可以跳过整个的该控制数据块。通过采用基于图块组的显示列表控制流,所需要的控制流数据的数量减少了。该实施方式还引入了控制指针阵列来增加对控制流数据进行处理的效率。通过优化显示列表控制流,所呈现的方法降低了内部参数存储器的带宽,从而改善了基于图块的3D图形系统的性能。


图1示出了用于在基于图块的3D计算机图形系统中进行图块化所执行的主要步骤的概要图;图2示出了在基于图块的3D计算机图形系统中使用的屏幕上的宏图块;图3示出了在基于图块的绘制中显示列表控制流分组的概述;图4示出了针对宏图块中的显示列表控制流分组的数据结构的概述;图5示出了显示列表控制流分组中的控制数据块分组的数据结构;图6示出了横跨显示列表控制流分组中的控制数据块而被写入的控制流数据;图7示出了针对显示列表控制流分组的控制流数据的数据结构的概述;图8示出了基于图块的绘制过程的示例。
具体实施例方式在如上所述的基于图块的3D计算机图形系统中,图块引擎从宏图块引擎中获取原语块,并计算绘制原语所需的最小数量的图块。然后,在图3中的301处,对最小的图块列表进行处理,并将针对原语块的地址的原语块数据指针与存在于所述图块中的描述所述原语的原语报头字一起写入动态分配的存储器中作为控制流数据。每个图块都具有其自己的用于控制流数据的固定大小的存储器空间。存储器块由基于图块的3D计算机图形系统根据需要进行分配。当新的数据要被添加到控制流中时,对于超过当前分配的存储器块大小的特定图块而言,需要新的分配并通过使用流链接将旧的控制流链接到该新的分配。如果宏图块引擎经由终止信号指示场景的结束,则所有的图块都被处理并且用于有效区域中的图块的控制流以终止字结束。在基于图块的3D计算机图形系统中,用于原语块的索引数据和顶点可以被写入该原语块所属于的宏图块中,或者在该原语块的边界框与宏图块交叉时被写入全局宏图块中,并且仅被写入一次。但是对于包含大的原语的原语块而言,控制流数据或许需要被向原语所重叠的所有图块中写入多次。在极端情况(诸如全屏三角的情况)中,控制流数据必须被写入屏幕上的每个图块中。被写入的控制流数据的重复造成存储器带宽的增加。在本发明的优选实施方式中,来自基于图块的显示列表的控制流被优化成针对一组图块的控制流,而不是每个图块显示列表都具有一个控制流。控制流分组中的控制流在控制流分组的实施方式中,宏图块400中的图块被分成具有固定数量的图块的图块组,例如,图4中的401具有2X2个图块。图3中的区域阵列300和图3中的控制流 301和图4中的402都基于图块组而非基于图块。仍然是在逐个图块的基础上来进行绘制, 但是图块组中的图块将共享相同的区域报头字和控制流列表。基于控制流分组的参数流结构的优点在于由于控制流列表是基于图块组的,所以控制流列表的数量减少了,例如,大约减少到基于图块的控制流列表所需数量的四分之一。尾指针的数量也同样减少了。在图7中的701处,将在存储器中针对图块组的控制流分配的每个控制数据块的开始地址存储在控制指针阵列中,不需要链接指针。允许将控制数据写入交叉的控制数据块中。在图1中的104处,当控制数据块中的控制数据没有在图块中得到引用时,在3D 处理中可以跳过整个的该控制数据块。区域报头字被减少为每个图块组2个32比特,而不是每个图块2个32比特。对于2X2的图块分组而言,区域阵列存储器空间减少了 75%。在所提出的控制流分组方法中,对于宏图块参数流数据的三个实体(即区域阵列、控制流和顶点/索引块)而言,控制流和区域阵列的数据结构是不同的。然而,顶点/ 索引块数据在控制流分组中不被改变。修改控制流数据的方式是本发明的实施方式,现在通过示例进行描述。区域阵列区域阵列记录了针对每个图块的控制流的开始。该阵列是具有区域定义的毗邻组,每个区域定义由区域报头字和随后的控制基地址字构成。在提出的控制流分组方法中,该区域阵列是基于图块组的,例如2X2个图块而非单个图块。其存储下面的数据。
权利要求
1.一种用于绘制3D计算机图形图像的方法,该方法包括以下步骤 将要被绘制的所述图像细分成多个矩形区域;将在所述图像中可见的原语分配给多个原语块中的各个原语块; 确定哪些原语块包含与每个矩形区域相交的原语; 将所述矩形区域分组到多个固定大小的组中;为每个所述固定大小的组获得控制流数据,所述控制流数据确定绘制每个所述固定大小的组中的每个矩形区域需要哪些原语块;以及通过依次绘制每个组中的所述矩形区域,来使用用于每个所述固定大小的组的控制流数据绘制用于显示的所述图像。
2.根据权利要求1所述的方法,其中,提供区域阵列和控制基地址,所述区域阵列指示具有矩形区域的每个所述固定大小的组的区域报头,以及所述控制基地址指向由各个固定大小的组所引用的控制流数据的开始位置。
3.根据权利要求1或2所述的方法,其中,所述控制流数据包括针对绘制具有矩形区域的固定大小的组所需的每个原语块的原语块。
4.根据权利要求3所述的方法,其中,所述原语块包括具有每个原语1比特的原语掩码,并且该方法包括使用所述原语掩码来确定使用哪些原语来绘制所述固定大小的组的步骤。
5.根据权利要求4所述的方法,其中,所述原语块包括表示所述原语块中的顶点数量的原语块报头。
6.根据前述权利要求中任一项权利要求所述的方法,其中,所述控制流数据被写入存储器中的控制块组中,每个所述控制块组包含控制指针阵列,该控制指针阵列存储针对控制块的开始地址的数据,所述控制块包括要被链接到来自当前控制块的数据的控制流数据。
7.根据前述权利要求中任一项权利要求所述的方法,其中,针对具有矩形区域的每个固定大小的组,存储两个尾指针字。
8.一种用于绘制3D计算机图形图像的装置,该装置包括 用于将要被绘制的所述图像细分成多个矩形区域的模块;用于将在所述图像中可见的原语分配给多个原语块中的各个原语块的模块; 用于确定哪些原语块包含与每个矩形区域相交的原语的模块; 用于将所述矩形区域分组到多个固定大小的组中的模块;用于为每个所述固定大小的组获得控制流数据的模块,所述控制流数据包括用于确定绘制每个所述固定大小的组中的所述矩形区域需要哪些原语块的数据;以及用于通过依次绘制每个组中的所述矩形区域来使用用于每个所述固定大小的组的控制流数据绘制用于显示的所述图像的模块。
9.根据权利要求8所述的装置,其中,提供针对具有矩形区域的每个所述固定大小的组的区域阵列,以及提供指向具有矩形区域的各个固定大小的组的控制流数据的开始位置的控制基地址。
10.根据权利要求8或9所述的装置,其中,所述控制流数据包括针对绘制具有矩形区域的固定大小的组所需的每个原语块的原语块。
11.根据权利要求10所述的装置,其中,所述原语块包括具有1比特原语的原语掩码, 并且该装置包括用于使用所述原语掩码来确定使用哪些原语来绘制所述固定大小的组的模块。
12.根据权利要求11所述的装置,其中,所述原语块包括表示所述原语块中的顶点数量的原语块报头。
13.根据权利要求8-12中任一项权利要求所述的装置,其中,所述控制流数据被写入存储器中的控制块组中,每个所述控制块组包含控制指针阵列,该控制指针阵列存储针对控制块的开始地址的数据,所述控制块包括要被链接到来自当前控制块的数据的控制流数据。
14.根据权利要求8-13中任一项权利要求所述的装置,其中,针对具有矩形区域的每个固定大小的组,存储两个尾指针字。
全文摘要
提供了一种用于绘制3D计算机图形图像的方法和装置。该图像被细分成多个矩形区域,并且在该图像中可见的原语被分配给多个原语块中的各个原语块。确定哪些原语块包含与每个矩形区域相交的原语。然后将矩形区域分组到多个固定大小的组中,并获得针对每个固定大小的组的控制流数据,该控制流数据包含用于确定绘制每个第一固定大小的组中的矩形区域需要哪些原语块的数据。该控制流数据之后用于绘制用于显示的图像。
文档编号G06T15/00GK102265309SQ200980152369
公开日2011年11月30日 申请日期2009年12月23日 优先权日2008年12月23日
发明者X·杨 申请人:想象技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1