基于贴片的图形渲染的制作方法

文档序号:6655888阅读:212来源:国知局
专利名称:基于贴片的图形渲染的制作方法
技术领域
本发明涉及一种逐贴片(tile-by-tile)地将顶点数据(vertex data)转换成输出图像以便在屏幕上进行显示的图形系统,所述顶点数据通过一组多边形来表示对象,一个多边形由至少三个顶点构成。
背景技术
欧洲专利EP 1127337描述了一种用于对计算机生成的三维图像进行描影(shading)的设备,其中通过一组平坦多边形(特别是三角形)来表示图像中的每个对象。为所述三角形的每个顶点提供顶点坐标(x,y,z)。三角形可以作为三角形带的一部分而被发送,如果不是按照这种方式发送,则可以通过将各顶点彼此进行比较来将各三角形转换成带。一个带占用较少的存储器区域,因为存储n个三角形只需要n+2个顶点而不是3n个顶点。此外,只需要一个指针来执行所述带内的所有对象。
根据在EP 1127337中描述的方法,为了渲染一个贴片的图形数据,对与该贴片重叠的带的所有三角形进行处理。例如,对作为与50个贴片重叠的三角形带的一部分的三角形进行50次处理,即使该三角形仅与单个贴片重叠。
发明概要本发明的一个目的是提供一种在第一段中阐述的图形系统,以便以更高的效率在屏幕上显示图像。本发明由独立权利要求限定。从属权利要求限定各有利实施例。
实现上述目的在于,所述系统包括输入端,用于接收顶点数据,所述顶点数据至少包括对应于图像中的每个顶点的3D空间坐标;贴片处理器,其适于将该图像细分为多个贴片并且确定各多边形带,其中每个多边形带包括至少一个多边形的序列,多边形带的每个后继多边形与其在先多边形共享一条边,该贴片处理器还适于确定每个多边形带的各子带,其中每个子带包括该多边形带当中的与单个贴片至少部分重叠的那些多边形,并且该贴片处理器还适于将该贴片与各重叠子带相关联;多边形-贴片数据库,其包括对应于每个贴片的显示列表,该显示列表包括与该贴片相关联的每一个子带的对应标识;以及输出端,用于实现对图像的渲染,以便在屏幕上进行显示。
为了确定哪些贴片由多边形覆盖,根据本发明的图形系统对于每个多边形只需要一次测试,而与多边形带所影响的贴片数量无关。在接收端处接收到顶点数据之后,由贴片处理器执行该测试。一个多边形带当中的与相同贴片重叠的那些多边形一同形成与该贴片相关联的子带。对于每个贴片,在多边形-贴片数据库中管理一个重叠子带列表。为了对每个贴片进行进一步处理,仅仅使用与该贴片重叠的那些多边形,并且不需要附加测试。如果对于每个贴片处理整个多边形带而不是子带,那么对于每个贴片以及作为与该特定贴片重叠的多边形带的一部分的每个多边形都将需要用于确定多边形是否与贴片重叠的测试。举例来说,对于影响50个贴片的包括100个多边形的带,所述已知设备需要5000次测试,而根据本发明的系统只需要100次测试。
所述3D空间坐标可以是模型空间坐标、世界空间坐标、眼空间坐标、屏幕空间坐标或者来自另一空间的坐标,从而所述坐标可以被映射到屏幕空间。
在本发明的另一方面,对于与特定贴片相关联的每一个子带的标识包括对于该子带的第一顶点、该子带的最后一个顶点以及/或者该子带中的多个顶点的索引。
当使用对子带的所述索引时,不需要将各子带存储为单独的多边形子带。相反,可以将各多边形子带存储为一个整体。从而降低了存储器尺寸需求以及所需的存储器带宽。
下面将参照下文描述的实施例对本发明的这些和其他方面进行阐述。
附图简述在附图中

图1示出根据本发明的图形系统的一个实施例的示意图;图2示出包括顶点高速缓冲存储器的图形系统的示意图;图3示出显示在屏幕上的多边形带;
图4示意性地示出一种可能的TTDB数据结构;图5示出与两个贴片重叠的多边形;图6示出计算RGBA像素值的处理的流程图;以及图7A-7C说明顶点高速缓冲存储器的几个实施例的操作。
优选实施例的详细描述图1示出根据本发明的图形系统的示意图。该系统包括输入端101,以用于接收包括顶点数据和纹理数据的图形数据。纹理数据包括纹理图,并且被存储在纹理存储器106中。顶点数据包括将被显示的图形场景内的所有顶点的信息以及用于允许构造多边形的连接性信息。该信息例如可以包括限定屏幕空间中的顶点位置的(x,y,z)屏幕空间坐标、限定纹理空间中的顶点位置的(u,v)纹理坐标、限定顶点颜色(R、G、B代表红、绿、蓝)的RGBA值以及透明度(A)。输入端101处的图形数据可以由图形程序112提供,该图形程序例如是计算机游戏或者视频剪辑重放程序。该图形程序可以提供屏幕空间坐标或者其他3D空间坐标,比如模型空间坐标、世界空间坐标或者眼空间坐标。如果该图形程序不提供屏幕空间坐标,则可以使用顶点变换和照明单元(未示出)来将其他3D空间坐标映射到屏幕空间并且将屏幕空间坐标提供到输入端。
所述顶点数据被传递到贴片处理器102。该贴片处理器102接收作为多边形带的数据,或者其将顶点数据转换成多边形带并且将经过预处理的数据存储在被称为多边形-贴片数据库的数据结构中。一般来说,所述多边形是三角形,但是也可以使用其他形状的多边形,比如四边形和五边形。当使用三角形时,所述多边形-贴片数据库可以被称为三角形贴片数据库(TTDB)103。下文描述的大多数实施例将使用三角形。然而,应当注意的是,本领域技术人员可以容易地使用四边形、五边形或者其他其他多边形。将各顶点转换成多边形可以通过比较邻近顶点并且对相似顶点进行分组来实现。在根据本发明的图形系统中,相邻且相似的多边形被转换成多边形带。一个多边形带包括至少一个多边形的序列,其中每个后继多边形与其在先多边形共享一条边。使用三角形带来代替三角形降低了该系统的存储器尺寸和带宽需求,这是因为只需要一个顶点来限定一个新的三角形,因此只需要一个指针来指向所述带中的所有顶点。当使用单独的三角形时,需要三个顶点来限定一个新的三角形。对于每个贴片,贴片处理器102确定多边形带的哪些部分与该贴片重叠。接着限定各子带,其包括多边形带当中的覆盖特定一个贴片的那些多边形。下面将参考图5阐述用于确定多边形是否与贴片重叠的示例性算法。
各子带的几何数据以及指向与一个贴片重叠的所有子带的第一顶点的指针都被存储在TTDB 103中。TTDB 103包括对应于每个贴片的显示列表,其中具有指向与该贴片重叠的每一个子带的指针。后面将参照图4进一步阐述TTDB 103的结构。光栅化器105将来自TTDB 103和纹理存储器106的数据转换成RGBA像素值。后面将参照图5对由光栅化器105执行的处理进行详细描述。由光栅化器105计算的对应于贴片的RGBA像素值被写入到RGBA贴片缓冲器108中。所述RGBA像素值可能取决于深度测试,该深度测试涉及到对于该(x,y)像素坐标从Z贴片107读取深度(z)值。当产生了对应于一个贴片的所有RGBA像素值时,该RGBA贴片被复制到RGBA帧缓冲器110中。当对应于图形场景的所有贴片中的所有像素的RGBA像素值都在该帧缓冲器中时,可以在显示屏111上显示该图形场景或者可以将其发送到射束器。
诸如贴片处理器102和光栅化器105的数据处理单元以及用于临时存储由所述处理单元使用的信息的小存储器缓冲器(比如RGBA贴片缓冲器108)通常是图形处理芯片100的一部分。诸如TTDB 103、纹理存储器106以及RGBA帧缓冲器109的较大的存储器通常是在芯片外实现的。3D图形在芯片外纹理存储器和芯片上处理单元之间需要很多数据通信量。为了进行高效的图形处理,必须降低这一数据通信量。使用子带来代替整个多边形带会极大地降低该数据通信量。当处理贴片时,所述处理仅仅涉及覆盖该贴片的多边形。当使用整个多边形带时,必须处理该带的每个多边形,尽管仅有该带的一部分实际上覆盖正被处理的该贴片。此外,当使用根据本发明的方法时,极大地减少了所需的计算资源。
图2示出图形系统的一个实施例,其与图1所示的实施例相似,但是附加地包括顶点高速缓冲存储器204。某些多边形覆盖多于一个贴片。其结果是这些多边形是多于一个子带的一部分。在对几个贴片的处理期间将使用这些多边形的顶点数据。在图2所示的该图形系统中,顶点数据被临时存储在芯片上顶点高速缓冲存储器204中。通过使用芯片上顶点高速缓冲存储器204,进一步降低了来自芯片外存储器的数据通信量。
在所述图形系统的一个优选实施例中,顶点高速缓冲存储器204仅仅保持仔细选择的顶点。例如,仅与一个贴片重叠的各多边形的顶点将仅被处理一次,并且不必被保持在顶点高速缓冲存储器204中。此外,不必将仅与已处理过的贴片重叠的顶点保持在顶点高速缓冲存储器204中。只能高速缓冲存储器管理可以包括将贴片到贴片的处理方向与多边形带中的多边形到多边形的方向进行比较,以便确定是否将再次使用多边形。例如,如果一个多边形与第一贴片和第二贴片重叠、第二贴片在第一贴片的上方与之相邻并且贴片到贴片的遍历方向是从左到右以及从上到下,那么该多边形将不再被处理,并且不必将其保持在顶点高速缓冲存储器204中。相反,如果贴片到贴片的处理方向与多边形到多边形的方向相同,那么重叠多边形可能将被再次使用,并且优选地将其保持在顶点高速缓冲存储器204中。高效的高速缓冲存储器管理可以降低顶点高速缓冲存储器204和图形处理芯片100的所需尺寸。后面将参照图7A-7C进一步阐述高效的高速缓冲存储器管理的一些例子。
图3示出显示在屏幕上的多边形带30。该屏幕被划分为12个贴片t1-t12。例如可以根据芯片上存储器大小、处理功率、屏幕尺寸和场景复杂度来选择贴片大小。分辨率为320×240的移动电话屏幕例如可以被划分为32×16像素的10×15个贴片。在图3中,在屏幕上显示一个三角形带30。该三角形带30与t5、t6和t7三个贴片重叠。在根据本发明的图形系统中,贴片处理器102适于限定各子带,每个子带包括多边形带当中的与单个贴片至少部分重叠的那些多边形。在图3中可以限定三个子带。覆盖贴片t5的子带从顶点v3开始并且在顶点v9结束,覆盖贴片t6的子带从顶点v6延伸到v14,与贴片t7重叠的子带从v11延伸到v14。对于贴片t5的处理,从TTDB 103中取回顶点v3到v9。可以将顶点v6到v9存储在顶点高速缓冲存储器204中,以便在处理贴片t6的过程中再次使用。
图4示意性地示出一种可能的TTDB数据结构。该TTDB包括一个具有顶点数据的场景缓冲器。该场景缓冲器包括顶点阵列44和纹理指针阵列41。该顶点阵列44包括与各顶点相关的几何数据。可以使用XYZUVRGBA属性来编码一个顶点(x,y,x)坐标对应于顶点在屏幕空间或者另一个3D空间中的位置,(u,v)坐标对应于顶点在纹理空间中的位置,RGBA颜色值用于限定顶点的颜色和透明度。纹理指针阵列41包括指向纹理图的指针,其被存储在纹理存储器106中。
所述TTDB还包括对应于每个贴片的显示列表。在图4中示出对应于贴片t5(见图3)的显示列表42和对应于贴片t6(见图3)的显示列表43。所述显示列表包括至少两种类型的条目,其中可能包含诸如45和47的指向顶点的索引或指针(指向顶点阵列44中的顶点数据)以及诸如46和48的状态改变条目。由s条目所包含的状态改变数据可以是到纹理指针阵列中的索引或者可以是表明某一状态应当改变的代码。诸如雾、照明和其他使能/禁用OpenGL特征的其他状态改变被直接编码到s条目中。
每一个顶点指针指向一个子带的第一顶点。例如,对应于贴片t5的显示列表42包括指向图3中所示的子带的第一顶点v3的顶点指针45,状态改变条目46包含到纹理指针阵列41中的纹理指针49的索引。利用流水线的相同状态对该子带的所有顶点进行处理。当已经处理了该子带的最后一个顶点时,启动对下一个子带的处理,其中下一个顶点指针指向该下一个子带。使用相同的纹理对带中的所有三角形进行处理,直到到达新的纹理状态改变条目。
可以通过对于每个顶点检查该顶点是不是与所述贴片重叠的三角形的一部分来确定一个子带的结束。在所述图形系统的一个实施例中,所述显示列表还包括每一个子带的长度或者指向各子带的最后一个顶点的指针。在这样一个实施例中,当渲染所述贴片时,不需要对于每个顶点检查该顶点是不是正被处理的子带的一部分。
图5示出与贴片C和D重叠的多边形50。用于确定哪些贴片由三角形50覆盖的一种示例性算法可以包括以下步骤-通过确定构成该三角形的各顶点的最小x坐标值(xmin)、最大x坐标值(xmax)、最小y坐标值(ymin)和最大y坐标值(ymax)来创建围绕该三角形的边框。
-从所有贴片的完整集合开始。
-排除其最大x值小于xmin的所有贴片。
-排除其最小x值大于xmax的所有贴片。
-排除其最大y值小于ymin的所有贴片。
-排除其最小y值大于ymax的所有贴片。
剩余的贴片集合中的所有贴片都被所述三角形覆盖。在图1所示的图形系统中,该算法由贴片处理器102执行。应当预计到可以使用其他算法来确定哪个三角形覆盖哪些贴片。如果所述多边形不是三角形而是四边形、五边形或者其他类型的多边形,仍然可以使用相同的算法。
应当注意,利用上述算法,基本上是检测贴片与多边形的边框的重叠。当一个多边形覆盖三个贴片时,例如图3中的贴片t2、t3和t7,所述边框可能覆盖第四贴片(在本例中是t6)而该多边形本身实际上不覆盖该第四贴片。在这种情况下,所述多边形被限定为与该贴片重叠,尽管实际上是其边框而不是该多边形与该贴片重叠。结果,一个子带有时候可能包括实际上不覆盖相应贴片的多边形。然而,该不需要的多边形的各顶点可能仍然被存储(或者可以被存储)在顶点高速缓冲存储器204中,以便用于相邻贴片。该附加的多边形不会显著提高系统的技术需求,比如存储器大小、计算能力和带宽。利用一种稍为复杂的算法,有可能确切地知道哪些贴片由哪些多边形覆盖。
图6示出在光栅化器105中计算RGBA值的处理的流程图。在第一RETR步骤中,从TTDB 103中取回一个贴片的显示列表中的第一子带的一个三角形的顶点数据。接着在CALC步骤中,该光栅化器遍历该三角形内的所有像素,并且计算颜色、Z值、(u,v)纹理坐标以及从当前纹理图中获取对应于该坐标的纹理元素(texel)颜色(可能还用对应于每个像素的其他属性)。
在可选的深度测试步骤COMP中,将所计算出的z值与存储在z贴片缓冲器107中的z值进行比较。根据测试结果,用所计算出的z值来取代所存储的z值,并且在写入步骤WRT中将RGBA颜色写入到RGBA贴片缓冲器108中。在下一个步骤MP中,检测是否需要处理相同子带的更多三角形或者相同贴片上的更多子带。如果是的话,从第一RETR步骤开始处理下一子带的下一个三角形。如果不是,则将整个RGBA贴片缓冲器108复制到帧缓冲器110中。此后,在下一个步骤MT中,检查是否需要处理该帧上的更多贴片。如果是的话,再次从第一RETR步骤开始处理下一贴片的第一子带的第一三角形。如果不是,则可以在显示步骤DISP中在屏幕111上显示整个帧,或者将其发送到射束器。
在图7A-7C中阐述了高效的高速缓冲存储器管理的一些例子。在图7A中示出了多边形带70,其由顶点q1-q12构成。多边形70与贴片t21、t22和t23重叠。在图7A中高亮显示了子带71。在渲染贴片t22之前,将子带71的顶点q3-q10加载到顶点高速缓冲存储器204中(如果它们尚不在其中的话),从而通过最小化到芯片外存储器的带宽需求来实现对贴片的高效渲染。优选地,顶点高速缓冲存储器204包括渲染所述图像所仍然需要的所有顶点。可以通过提供顶点高速缓冲存储器204容易地实现该目标,该顶点高速缓冲存储器204足够大,以便包括图像的所有顶点数据。然而,这样一个大的顶点高速缓冲存储器204在生产成本和芯片面积方面将过为昂贵。
在顶点高速缓冲存储器204的一个优选实施例中,在渲染贴片之后,将用渲染其他贴片所需的顶点来重写不再用于渲染其他贴片的顶点。例如,需要构成图7B的高亮多边形的顶点q7-p10来渲染贴片t23。结果,在渲染贴片t22之后,必须将顶点q7-q10保持在顶点高速缓冲存储器204中。可以用渲染贴片t23所需的其他顶点来重写子带71的其他顶点q3-q6。
在另一个改进的实施例中,在渲染贴片之前,把随后将被用于渲染其他贴片的顶点加载到顶点高速缓冲存储器204中。例如,在渲染贴片t22之前,除了对子带71的顶点q3-q10进行高速缓冲存储之外,把渲染贴片t23所需的顶点q11和q12加载到该高速缓冲存储器中。在图7C中,当使用该改进的实施例时,阴影区域包括在渲染贴片t22之前被高速缓冲存储的顶点。利用该实施例,无法直接从顶点高速缓冲存储器204中取回渲染贴片所需的数据的几率被最小化。结果,所发生的高速缓冲存储器冲突变少。
应当理解,本发明还可以扩展到适于实践本发明的计算机程序,特别载体上的计算机程序。所述程序的形式可以是源代码、对象代码、代码中间源以及诸如部分编译形式的对象代码,或者可以具有适于实现根据本发明的方法的任何其他形式。所述载体可以是能够承载该程序的任何实体或装置。例如,所述载体可以包括诸如ROM的存储介质(例如CD ROM或半导体ROM)或者磁记录介质(例如软盘或硬盘)。此外,所述载体可以是可传输载体,比如可以通过电缆、光缆或者通过无线电或其他方式传送的电信号或光学信号。当在这种信号中包含所述程序时,所述载体可以由这种电缆或者其他装置构成。或者,所述载体可以是其中嵌入了所述程序的集成电路,该集成电路适于执行相关方法。
应当理解,上述实施例说明而不限制本发明,并且在不脱离所附权利要求书的范围的情况下,本领域技术人员能够设计出许多替换实施例。在权利要求书中,置于括号之间的任何附图标记都不应被视为限制该权利要求。“包括”一词不排除在权利要求中列出的元件或步骤之外的其他元件或步骤的存在。元件前面的冠词“一个”不排除存在多个这种元件。本发明可以通过包括几个不同元件的硬件来实现,并且可以通过适当编程的计算机来实现。在列举几个装置的设备/系统权利要求中,这些装置当中的几个可以由同一硬件项来实现。在彼此不同的从属权利要求中引述某些措施并不意味着不能使用这些措施的组合来获益。
权利要求
1.一种逐贴片地将顶点数据转换成输出图像以便在屏幕(111)上进行显示的图形系统,所述顶点数据通过一组多边形来表示对象,一个多边形由至少三个顶点(v3,v4,...,v14)构成,该系统包括输入端(101),其用于接收该顶点数据,该顶点数据至少包括对应于该图像中的每个顶点(v3,v4,...,v14)的3D空间坐标;贴片处理器(102),其用于将该图像细分为多个贴片(t1,t2,...,t12);确定各多边形带(30),每个多边形带(30)包括至少一个多边形的序列,多边形带的每个后继多边形与其在先多边形共享一条边;以及确定每个多边形带(30)的各子带,其中每个子带包括该多边形带(30)当中的与单个贴片(t1,t2,...,t12)至少部分重叠的那些多边形,以及将该贴片(t1,t2,...,t12)与各重叠子带相关联,多边形-贴片数据库(103),其包括对应于每个贴片(t1,t2,...,t12)的显示列表,该显示列表包括与该贴片(t1,t2,...,t12)相关联的每一个子带的对应标识(45,47);以及输出端(109),其用于实现对所述图像的渲染,以便在该屏幕(111)上进行显示。
2.如权利要求1所述的图形系统,其中,与所述贴片(t1,t2,...,t12)相关联的每一个子带的所述标识(45,47)包括对该子带的第一顶点的索引。
3.如权利要求2所述的图形系统,其中,与所述贴片(t1,t2,...,t12)相关联的每一个子带的所述标识(45,47)包括对该子带的最后一个顶点的索引。
4.如权利要求2所述的图形系统,其中,与所述贴片(t1,t2,...,t12)相关联的每一个子带的所述标识(45,47)包括该子带中的多个顶点。
5.如权利要求1所述的图形系统,还包括顶点高速缓冲存储器(204),其用于对与贴片(t1,t2,...,t12)相关联的各子带的顶点数据进行高速缓冲存储。
6.如权利要求5所述的图形系统,其中,所述顶点高速缓冲存储器(204)用于保持将被用于后续贴片的顶点数据。
7.如权利要求5所述的图形系统,其中,所述顶点高速缓冲存储器(204)用于预取将被用于后续贴片的顶点数据。
8.一种用于逐贴片地将顶点数据转换成输出图像以便在屏幕(111)上进行显示的方法,所述顶点数据通过一组多边形来表示对象,一个多边形由至少三个顶点(v3,v4,...,v14)构成,该方法包括以下步骤接收该顶点数据,该顶点数据至少包括对应于该图像中的每个顶点(v3,v4,...,v14)的3D空间坐标;将该图像细分为多个贴片(t1,t2,...,t12);确定各多边形带(30),每个多边形带(30)包括至少一个多边形的序列,多边形带(30)的每个后继多边形与其在先多边形共享一条边;对于每个多边形带(30)确定各子带,其中每个子带包括该多边形带(30)当中的与单个贴片(t1,t2,...,t12)至少部分重叠的那些多边形,以及将该贴片(t1,t2,...,t12)与各重叠子带相关联;填充多边形-贴片数据库,该多边形-贴片数据库包括对应于每个贴片(t1,t2,...,t12)的显示列表,每个显示列表包括与该贴片(t1,t2,...,t12)相关联的每一个子带的对应标识;以及实现对所述图像的渲染,以便在该屏幕(111)上进行显示。
9.一种计算机程序产品,其用于使得处理器执行如权利要求8所述的方法。
全文摘要
本发明涉及一种逐贴片地将顶点数据转换成输出图像以便在屏幕上进行显示的图形系统。所述顶点数据通过一组多边形来表示对象,并且包括对应于该图像中的每个顶点(q1,q2,...,q12)的3D空间坐标。一个多边形由至少三个顶点(q1,q2,...,q12)构成。所述系统包括一个贴片处理器,其用于将该图像细分为多个贴片(t21,t22,t23)以及确定各多边形带(q1-q12),每个多边形带包括一个多边形序列。该贴片处理器还适于确定每个多边形带(q1-q12)的各子带(q3-q10)。每个子带(q3-q10)包括该多边形带(q1-q12)当中的与单个贴片(t21,t22,t23)至少部分重叠的那些多边形。为了处理贴片(t21,t22,t23),只需要处理子带(q3-q10),也就是覆盖该贴片(t21,t22,t23)的各多边形。
文档编号G06T15/00GK1957377SQ200580016817
公开日2007年5月2日 申请日期2005年5月10日 优先权日2004年5月24日
发明者K·梅恩兹 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1