图形处理系统的制作方法

文档序号:12178808阅读:182来源:国知局
图形处理系统的制作方法与工艺

本发明涉及图形处理系统,具体地涉及用于图形处理流水线中例如在栅格化之前剔除图元的机制。



背景技术:

图形处理通常通过首先把要显示的场景(例如,3-D模型)分割成若干类似的基本分量或“图元”然后该图元经历期望的图形处理操作来进行。图形“图元”通常为简单多边形诸如三角形的形式。

用于输出(诸如要显示的帧)的图元通常使用从需要图形处理的应用(例如,游戏)接收的图形绘制指令(请求)由针对图形处理系统的应用程序接口来产生。

各图元通常由一组顶点来定义并表示为一组顶点。图元的各顶点通常将其与一组“属性”(即,用于顶点的一组数据值)关联。这些属性通常将包括位置数据和例如对于讨论中的顶点定义颜色、光照、法线、纹理坐标等的其他非位置数据(变量)。

为了由图形处理系统生成给定输出(例如,显示帧),通常将存在对于讨论中的输出定义的一组顶点。然后,为了输出而处理的图元将被指示为包括用于正在生成的图形处理输出的一组顶点中的给定顶点。通常,整体输出(例如,要生成的帧)将被划分为更小的处理单元,称为“绘制调用”。各绘制调用将具有对于各调用定义的各组顶点和使用这些顶点的一组图元。

在生成并定义了图元及其顶点时,其可以由图形处理系统进行处理以生成期望的图形处理输出(渲染目标),诸如用于显示的帧。这基本涉及栅格化并渲染图元,以(使用与被处理的图元的顶点关联的顶点属性)生成图形处理输出。

一些图形处理单元作为“基于块的”图形处理流水线操作,其中,二维图形处理输出或目标(即,渲染处理的输出,诸如要显示的输出帧)被渲染为多个较小面积的子区域,通常称为“块”。块被分别单独渲染(通常一个接一个地)。然后,组合所渲染的块,以提供完整的渲染输出(例如,用于显示的帧)。在这种结构中,渲染目标(输出)通常(按面积)划分为规则取大小和形状的渲染块(它们通常为例如正方形或矩形),但这不是必须的。

通常用于“成块”和“基于块的”渲染的其他措辞包括“组块”(渲染块被称为“大块”)和“桶”渲染。为方便起见,下文中将使用术语“块”和“成块”,但应理解,这些术语旨在包含所有另选和等同术语和技术。

在基于块的图形处理中,针对给定输出而要处理的图元(例如,组成当前处理的绘制调用的图元)被分类到各图元列表(块列表)中,图元列表指示对于图形处理输出(渲染目标)为处理目的所划分到的块,对于各块处理哪些图元。在这一点上,可以对于各块存在独立的图元列表,或者还可以或代替提供涵盖多个块的图元列表。给定图元可以包括在多于一个图元列表中,例如,在图元落在多于一个块中的情况下。图形处理器和处理流水线通常包括合适的成块器(成块级),其为该目的将图元分类到各图元列表中。

然后使用图元列表来确定在处理图形处理输出的给定块时应当栅格化并渲染哪些图元。

图元分类(成块)操作通常在“组装”用于渲染输出的图元之后进行(即,在用于渲染输出的顶点和对应的顶点连接信息已用于将用于渲染输出的一组顶点组装到所需的一组图元中之后),但在图元的任意栅格化之前进行。

因此,有利的是尝试在成块操作时或之前剔除(丢弃)图元以免进行进一步处理,以减小分类到块列表中的图元的数量(由此,减小随后处理(至少栅格化)的图元的数量)。

这种图元剔除的示例是视体剔除(view frustum culling)。在这种情况下,确定图元是否完全落在用于所生成的视锥外部,并且如果是,那么丢弃该图元(并且该图元不被成块器分类到块列表中)。然后,这避免了完全落在视锥外部的图元被成块器处理到块列表中(并且在图形处理流水线中被进一步处理)。



技术实现要素:

申请人相信还存在改进图元剔除操作的范围,特别是在基于块的图形处理单元的情况下。

根据本发明的第一方面,提供了一种图形处理流水线中处理图形图元的方法,所述方法包括以下步骤:

确定所述图元的特性是否满足特定条件;以及

当所述图元的所述特性满足所述特定条件时:

使用特定处理操作确定所述图元的朝向;以及

使用所述图元的所确定的朝向来确定是否剔除所述图元以免进行进一步处理;以及

当使用所述朝向确定剔除所述图元以免进行进一步处理时,剔除所述图元以免进行进一步处理。

根据本发明的第二方面,提供了一种图形处理流水线,该图形处理流水线包括:

测试级,该测试级可操作为确定所述图元的特性是否满足特定条件;

朝向确定级,该朝向确定级可操作为使用特定处理操作确定所述图元的朝向;以及

朝向剔除级,该朝向剔除级可操作为:

使用所述图元的所确定的朝向用于确定是否剔除所述图元以免进行进一步处理;并且

当使用所述朝向确定剔除所述图元以免进行进一步处理时,剔除所述图元以免进行进一步处理;

其中,

所述测试级可操作为响应于确定所述图元的所述特性满足所述特定条件而使得所述朝向确定级使用所述特定处理操作来确定所述图元的所述朝向。

本发明涉及要处理的图形图元的朝向用于确定是否剔除图元以免进行进一步处理的结构。要处理的图形图元将为向前或向后的(即,朝向视点或远离视点的)。图元可以基于它们的朝向来剔除(丢弃)。通常可以丢弃向“后”的图元,但如果期望,还可以或相反丢弃向前图元。

如下面将进一步讨论的,申请人已经意识到基于图元的朝向剔除图元以免进行处理例如可以在基于块的图形处理流水线中的成块处理之前有利地用于在成块操作之前剔除图元。然后,这进一步促进减小需要由成块器处理(随后至少栅格化)的图元的数量。

申请人还已经意识到将有利的是为了基于图元的属性(诸如且优选地为基于图元的尺寸)进行的朝向确定的目的而对图元不同处理。如下面将进一步讨论的,申请人已经意识到图元可以为了基于图元的属性(诸如图元的尺寸)进行的朝向确定的目的而被分类到不同的组中,并且意识到而且,然后通过对于各个组的图元不同地执行朝向确定,可以提供用于确定要处理的图元的朝向的更有效的系统。然后,这在对要处理的图元执行朝向确定时的功耗等方面具有优点,同时仍然允许基于图元的朝向有效地剔除图元的同时。

由此,在本发明中,使用特定(例如,所选并且优选地预定)处理操作来确定特定特性(例如,图元的尺寸)满足了给定条件的图元的朝向。

用于确定是否使用特定处理操作来确定图元朝向的图元特性可以为可以用于为了执行朝向确定的目的而对图元进行分类的图元的任何合适和期望特性。

在特别优选的实施方式中,图元特性为图元的尺寸。

优选地,图元特性(例如,尺寸)的指示或表示的一些形式被确定且然后用于确定图元特性是否满足特定条件。

在优选实施方式中,在确定特性是否满足特定条件之前首先估计图元的相关特性,诸如尺寸。由此,在特别优选的实施方式中,本发明的方法包括(并且流水线包括级(处理电路),该级可操作为)确定图元的相关特性(例如且优选地为尺寸)的估计和/或指示,然后确定图元的所估计特性(例如,尺寸)是否满足特定条件。

图元特性可以被以任何合适且期望的方式来确定并估计。

在特性为图元的尺寸的情况下,那么虽然可以将图元的面积用作图元尺寸的估计和指示(并且在一个实施方式中,是这种情况),但在特别优选的实施方式中,图元的尺寸根据它在给定方向上的范围来确定。最优选地,确定图元的有效“直径”的度量。

这例如可以通过估计图元在给定方向上(例如,沿着坐标轴中的一个或两个)的范围和/或通过考虑图元的侧(诸如图元的最长侧)的范围来进行。由此,例如,图元(例如,在x和y方向上的)长度和宽度的最大值(例如,最大水平和/或垂直范围)可以用作图元尺寸的指示且用于估计图元的尺寸。附加地或另选地,图元在给定方向上(例如,沿着x轴和y轴)的范围的和和/或图元的侧的长度的和可以用足图元尺寸的估计。

使用图元在给定方向上的范围允许更容易地识别非常长且薄的图元(因此,该图元可能仅在一个特定方向上是大的)。

优选地,使用图元的顶点的坐标来估计图元的尺寸(范围)。

在这种情况下,图元的顶点的坐标可以直接用作图元尺寸的指示(用于估计图元的尺寸)。例如,坐标的大小可以简单地用作图元尺寸的指示(用于估计图元的尺寸)。这例如可以用于检测远远延伸到期望渲染输出区域(画面)的“巨大”图元。例如,可以确定图元的顶点中的一个或更多个或全部的坐标是落在生成的渲染输出的区域的边缘处还是附近还是外部(例如,落在用于渲染输出的防护区域内或边缘处或外部)。

另选地或附加地,可以(并且在优选实施方式中为)通过对图元(例如,图元的顶点坐标的)执行一些初步处理来估计图元尺寸(例如,范围),该处理的结果然后用作图元尺寸的指示。

在优选的这种实施方式中,图元顶点的各坐标之间的差用于估计图元尺寸并用作图元尺寸的指示。然后,这将提供图元沿着各个坐标轴(x和y)的范围的一种度量。然后,例如,图元的最大差值(即,沿x或y方向的最大范围)可以用作指示图元的尺寸。

例如,在朝向确定操作包括确定图元的各顶点的坐标之间的差的情况下(这可以为朝向确定操作包括使用图元的顶点的坐标确定叉乘的情况),然后,这些比较或差确定的结果为了确定图元是否满足特定条件的目的可以用作图元的尺寸的指示。

对应地,在朝向确定本身生成图元尺寸的估计的情况下,那么尺寸估计可以用于确定为了朝向确定的目的如何对图元进行分类(对于朝向确定处理的剩余部分)。

考查图元特性(例如,尺寸)的特定条件可以为任何合适且期望的特定条件,用于确定图元的朝向的处理操作的选择可以基于该条件。

条件优选地为特定特性是大于还是小于特定(阈值)值。例如,在图元特性为图元的(估计)尺寸的情况下,条件优选地为图元的尺寸是小于还是小于等于(或大于还是大于等于)特定尺寸度量。最优选地,如果图元的(估计)尺寸小于特定阈值尺寸,那么使用特定的选择的处理操作来进行图元朝向的确定。由此,最优选地,为了使用特定处理操作来确定图元的朝向,图元特性所必须满足的条件是图元的“尺寸”是小于还是小于等于阈值尺寸度量。

由此,在一个优选实施方式中,如果图元的顶点中的一个或更多个或全部位于生成的渲染输出的边缘处或附近(例如且优选地位于防护区域的边缘处或内),则图元被认为满足使用特定处理操作来确定图元朝向的条件。在另一个优选实施方式中,如果图元各顶点的坐标之间的最大差小于或等于特定(优选地为所选的,优选地为所确定的)阈值,则确定图元满足使用特定处理操作进行确定图元朝向的条件。

图元的朝向可以以任何合适且期望的方式来确定。优选地,朝向通过确定图元的面积的符号来确定(因为面积符号可以指示图元向前还是向后的(通常“负”面积值将指示图元为向后的))。当然,如果期望,其他结构将是可能的。

图元的面积的符号可以以任何合适且期望的方式来确定。

在优选实施方式中,图元顶点的x/y坐标的叉乘的符号用于确定面积的符号,并因此确定图元的朝向。由此,在特别优选的实施方式中,在图元为具有三个顶点v0、v1以及v2的三角形(各顶点具有各x和y坐标)的情况下,三角形的面积(并且因此将指示三角形的朝向的面积符号)被确定为:

面积=((v1.x-v0.x)(v2.y-v0.y)-(v1.y-v0.y)(v2.x-v0.x))。

该算式给出由三角形的边缘中的两个形成的平行四边形的面积(因此将计算为三角形面积两倍的值)。然而,因为对于朝向确定感兴趣的是面积的符号(或面积是否恰好为零),于是可以为了确定朝向而忽略该算式不计算三角形的精确面积的事实(或者,如果期望,则可以直接修正该事实)。

以该方式确定三角形的面积符号的优点是算式(v1.x-v0.x)等从计算去除了顶点的绝对位置(因为算式提供顶点位置之间的差),因此即使三角形的顶点坐标本身是非常大的数,产生的差值也将仅依赖于三角形的实际尺寸,并且因此可以表达为较小的数,即使实际坐标值本身不能是较小的数。同样地,如上所讨论的,为了控制朝向确定和剔除操作的目的,这些差值可以用作图元尺寸的指示。

如果期望,则这些算式还对应于在执行成块操作且在生成表示图元的边缘的线方程式时的例如用于生成边界框的值,因此可以与图形处理流水线操作的其他步骤和级共享并重新使用。

在特别优选的实施方式中,确定图元是否是向后的。对应地,在优选实施方式中,当确定图元是向后的时,剔除图元以免进行进一步处理。然而,如果期望,则将对应地可以剔除向前的图元(或者可以剔除向前和向后图元这两者或向前或向后图元都不剔除)。

在图元特性满足特定条件时用于确定图元的朝向的特定处理操作可以为用于确定图元朝向的任何合适且期望的处理操作。在特别优选的实施方式中,是可以确定图元的朝向更有效和/或使用更少功率的处理操作。由此,在优选实施方式中,使用更有效且使用更少功率的处理操作来确定更小图元的朝向。

对于要用于渲染输出的顶点,其顶点坐标将通常以给定格式(诸如,以给定的浮点格式)从顶点着色级提供。因此,与在使用其初始的例如浮点格式的顶点坐标执行必要朝向确定的情况相比,在图元特性满足条件时用于确定图元朝向的特定处理操作优选地为能够更有效和/或使用更少功率确定图元的朝向的处理操作。

在一个优选的这种实施方式中,在图元特性满足特定条件时用于确定图元的朝向的处理操作为使用与初始提供的顶点坐标进行的全计算所需的数据值范围相比小的数据值范围来执行相关操作(计算)的处理操作。

另选地或附加地,特定处理操作使用与诸如且优选地使用定点格式和运算而不是浮点格式和运算而初始提供(并且需要处理)的顶点坐标的格式不同(另选)的(运算)格式来执行需要的计算。

由此,按照期望,例如,特定处理操作将可以使用另选格式但用针对初始供给的顶点数据的相同范围,或使用相同格式但比初始供给的顶点数据小的范围,或使用另选格式和比初始提供的顶点数据小的范围这两者来执行计算。

最优选地,在图元特性满足特定条件时用于确定图元朝向的特定处理操作以不同(另选)的格式(诸如且优选地定点处理)且使用更小范围的数据值执行计算。

相应地,在特别优选的实施方式中,在图元特性满足特定条件时使用的特定处理操作包括使用特定(优选地为所选的,优选地为所确定的)范围(以及比特格式和数量)的运算和数据值。在这种情况下,所用的(所支持的)数值范围优选地为比针对初始提供的(例如,且优选地从顶点着色操作至原始组装操作)顶点坐标的图元的顶点坐标所使用(并且支持的)的范围小的范围。

在特别优选的实施方式中,在图元特性满足特定条件时用于确定图元朝向的特定处理操作包括使用定点运算确定图元的朝向,并且具体地通过针对图元的坐标和朝向确定使用定点值。将定点运算和值用于朝向确定意味着例如与使用浮点运算和浮点值执行朝向确定相比,可以(在定点运算逻辑单元中)更有效且使用更少的功率来进行处理。

在特别优选的实施方式中,在图元特性满足特定条件时用于确定图元的朝向的特定处理操作包括在朝向确定中使用较小范围的数据值(例如用于图元的坐标)来确定图元朝向。

申请人在这一点已经意识到虽然使用例如定点运算和值来进行朝向确定允许比例如在使用浮点运算和浮点值时更有效地进行该处理,但将这种定点处理用于可能开始处理的所有图元可能不是期望的。由此,仅使用例如给定定点处理结构来确定全部图元朝向不是有效的。

这些实施方式通过首先考虑图元特性,具体且优选地为尺寸,来识别对于以更有效方式(例如,使用定点运算)执行朝向确定而言适宜的图元,然后(例如,使用定点运算和值)来相应地处理具有合适特性(例如,尺寸)的那些图元来解决这一点。然后,这具有以下效果:以该方式能够识别并处理就使用例如定点运算执行的更有效处理而言适宜的那些图元,但还可以不同地(且更合适地)识别并处理对于这种处理而言可能不那么合适的那些图元。

此外,申请人已经意识到在实践中,当生成渲染输出时,将存在足够图元适于以更有效方式(例如,使用定点运算)确定图元朝向(并且然后因此可以被剔除),使得为了该目的基于图元特性(例如,尺寸)对图元进行分类而可能需要的任何附加处理和电路值得(并且例如与仅提供能够同样地处理可以被开始处理的全部图元的朝向确定和剔除级相比)。

在特别优选的实施方式中,在图元特性满足特定条件时所用的特定处理操作包括使用特定(优选地为所选的、优选地为所确定的)精度和范围(即,比特格式和数量)的定点运算和定点值。在这种情况下,所用的定点范围优选地为比如初始提供的(例如且优选地,从顶点着色操作至原始组装操作)图元的顶点坐标的范围(无论是定点还是浮点的)小的范围。

在特定处理操作包括使用定点运算和定点值执行图元朝向确定的情况下,可以以任何合适且期望的方式生成要使用的定点格式的需要值(例如,顶点坐标)。例如,例如可以以浮点格式表达的初始顶点坐标可以被适当地转换为定点格式。当然,其他结构将是可能的。

相应地,到定点格式的转换可以发生在图形处理流水线操作和级中的任何期望且合适的点和级(只要该转换在使用定点运算进行的朝向确定发生之前即可)。在优选实施方式中,“定点”值生成发生在图元根据转换后的顶点和顶点连接信息组装之后,并且优选地发生在为了朝向确定和剔除操作的目的而进行的任何尺寸估计之前。

在特定处理操作包括使用定点运算和例如所选范围的定点值执行图元朝向确定的情况下,在优选实施方式中,图元特性必须满足的特定条件基于特定处理操作所使用的定点运算的(最大)范围。由此,在特别优选的实施方式中,根据例如图元的尺寸确定图元的相关数据值(例如,顶点坐标)是否可以使用特定朝向确定处理操作所使用的定点数据值范围来表达,并且如果这些数据值可以使用该定点值范围来表达,那么使用特定定点处理操作(而不是其他)来确定图元的朝向。

在图元特性满足特定条件时用于确定图元朝向的特定处理操作包括整个朝向确定操作并且与其有关。在这种情况下,图元的朝向将例如使用定点运算和定点值来整体确定。

附加地或另选地,在图元特性满足特定条件时用于确定图元朝向的特定处理操作可以与用于整个图元朝向确定操作的特定部分(例如,一些但不是全部)有关。例如,如果图元特性满足所需条件,则朝向确定的初始步骤可以使用给定形式的处理操作(例如,使用浮点运算和浮点值)来执行,然后,整个朝向确定处理的稍后步骤使用特定处理操作(例如,使用定点运算和值)来执行。

由此,在优选实施方式中,在图元特性满足特定条件时用于确定图元朝向的特定处理操作包括针对图元的整个朝向确定的一部分(但不是全部)所使用的处理操作。

当图元特性不满足使用特定处理操作来确定图元朝向的特定条件时,可以且优选地相对于朝向确定以不同方式来处理图元。

在一个优选实施方式中,当图元特性不满足特定条件时,不是仅确定图元朝向(即,图元不经历任何朝向确定和剔除),相反,将图元向前传递到流水线的下一级(例如且优选地传递到成块级)以处理。

由此,在一个优选实施方式中,测试级可操作为在确定图元特性不满足特定条件时使得图元的处理省略(绕开)朝向确定级,即,使得图元不被朝向确定级处理,相反优选地由流水线中朝向确定级之后的下一级(例如且优选地为处理流水线的成块级)来处理图元。

在另一个优选的实施方式中,当图元特性不满足使用特定处理操作来确定朝向的特定条件时,相反地使用另一不同处理操作来确定图元朝向。在这种情况下,实际上将存在可以用于确定图元朝向的两个不同处理操作,然后基于图元特性,例如尺寸,来选择这些处理操作中的哪一个用于确定图元朝向。

由此,在优选实施方式中,朝向确定级可操作为使用至少两个不同处理操作来确定图元朝向(并且在一个优选实施方式中,该级可操作为使用两个(并且仅两个)不同处理操作来确定图元朝向),并且测试级可操作为使得通过流水线的朝向确定级基于所测试的图元特性(例如,尺寸)(并且具体地为基于该特性是否满足特定条件)使用处理操作中的一个来处理图元。

在这些结构中,可以用于确定图元朝向的其他处理操作可以为可以确定图元朝向的任何合适且期望的处理操作。在优选实施方式中,其他处理操作是比在图元满足特定条件时的处理操作效率低和/或将使用较多功率或处理周期的处理操作,诸如使用浮点运算和值(例如,在图元特性(例如,尺寸)满足特定条件时所使用的处理操作使用定点运算和值的情况下)。

这里还应注意,因为用于针对较小图元进行朝向确定的特定处理操作可以意味着与仅使用单一机制来确定要考虑的全部图元的朝向相比,在考虑可能需要处理的全部图元时整体上效率会更高,所以如果期望,那么在图元特性不满足特定条件时用于确定图元的朝向的其他处理操作按照可能在一些方面(例如,在性能而言)比其他处理操作差的方式可以成为确定图元朝向的处理操作,从而相反例如针对较小面积或较小的功率进行优化。

用于确定图元朝向的其他处理操作可以为这样的处理操作:使用定点运算和定点值,但该定点值具有比在图元特性(例如,尺寸)满足特定条件时所使用的处理操作大的范围。

然而,在优选实施方式中,例如在图元特性不满足特定条件时用于确定图元朝向的其他处理操作使用浮点运算和浮点数据值(例如,针对图元顶点坐标)来确定图元朝向。

在要使用浮点运算和浮点数据值来确定图元朝向的情况下,再次地,优选地通过确定图元的面积的符号来确定图元朝向(但使用浮点运算和浮点数据值来确定图元面积)。

图元的面积的符号可以以任何合适且期望的方式使用浮点运算和浮点数据值来确定。在优选实施方式中,由w坐标的符号和图元的卷绕修改的、图元的顶点的x/y坐标的叉乘(表达为浮点值)用于确定面积的符号并因此确定图元的朝向。

在优选实施方式中,处理路径中的一个使用定点运算和定点值来确定图元的朝向,并且处理路径中的另一个使用浮点运算和浮点值来确定图元的朝向,或者完全绕开图元的任意形式的朝向确定和剔除。在该结构中,优选地,如果图元在特定尺寸以下,则使用定点处理路径,但如果图元在特定尺寸以上,那么使用针对朝向确定的浮点或绕开路径。

还可以存在可以用来对图元进行测试的多个不同特性条件,例如且优选地,阈值尺寸度量,这种条件均具有用于朝向确定的对应关联处理操作。由此,在这种情况下,图元将分类成例如各尺寸范围,然后,各个图元“尺寸”范围具有用于朝向确定的对应关联处理路径(操作)。由此,实际上将存在图元特性(例如,尺寸)的相应范围,各范围具有用于图元朝向确定的相应不同关联处理操作(路径)。

例如,可以存在各使用定点运算但具有不同(最大)范围(以及例如或者全然省略朝向剔除操作和或者将浮点运算用于朝向确定的进一步处理路径)的两个朝向确定路径,这些不同处理操作的用于图元确定的各特性(例如,尺寸)范围用于讨论的图元。

由此,在特别优选的实施方式中,图形处理流水线支持多个不同处理路径以确定图元朝向,并且基于图元特性,诸如且优选地尺寸,来确定这些处理路径中的哪一个要用于图元。

还可以的是在整个朝向确定操作中具有多个点,在这些点处,图元的特性,诸如尺寸,用于确定或选择在确定图元朝向时要用于图元的下一(或将来)处理操作(例如,处理操作的形式)。

例如,可以基于顶点坐标的绝对大小来进行朝向确定处理操作的首次这种选择,以或者在顶点坐标的绝对大小在阈值之上时选择浮点运算处理路径,或者在顶点坐标的绝对大小不在阈值之上时选择定点减法,然后基于减法的结果选择两个不同定点处理路径中的一个。

以本发明的方式对图元的朝向的确定并基于图元的朝向(潜在地)对图元的剔除可以在图形处理流水线操作的任何合适且期望级确定,例如且优选地在尝试基于图元的朝向剔除图元以免进行进一步处理可以是合适且期望的情况下。

在特别优选的实施方式中,图形处理流水线为基于块的图形处理流水线,并且以本发明的方式进行的朝向确定和剔除在图形处理流水线操作的成块级(成块器)之前执行,使得能够基于图元的朝向被剔除的任何图元不被成块操作处理(不被分类到图元列表中)。这具有减小可以由成块操作处理的图元的数量的优点。

由此,在特别优选的实施方式中,以本发明的方式基于图元朝向(潜在地)剔除图元的操作在图形处理流水线的图元组装级之后但在图形处理流水线的任何成块级(操作)之前执行。

相应地,图形处理流水线优选地还包括成块级,该成块级可操作为将要处理的图元分类到与要生成的图形处理输出(渲染输出)的特定区域对应的相应列表中,并且测试级、朝向确定级以及朝向剔除级全部设置在图形处理流水线的成块级之前(并且在之前操作)。

类似地,在特别优选的实施方式中,图形处理流水线包括图元组装级,该图元组装级根据针对要生成的图形处理输出(渲染输出)的一组顶点和顶点连接信息生成一组要处理的图元,并且测试级、朝向确定级以及朝向剔除级设置(且操作)在图元组装级之前(但优选地在成块级(若有的话)之前)。

朝向确定和剔除级(和操作)还优选地发生在图元的任何栅格化(图形处理流水线的栅格化级)之前。

除了本发明的朝向确定和剔除操作之外,如果期望,本发明的处理图形图元的方法和图形处理流水线可以包括其他图元剔除测试和剔除操作(并且在优选实施方式中,是这种情况)。例如,图元还可以经历视体剔除操作,其中,确定图元是否落在视锥内。还可以确定图元是否如此小以至于它将在栅格化级处不被栅格化到任何采样位置。

由此,在优选实施方式中,图形处理流水线还包括视体剔除级和小图元剔除级中的至少一个(并且优选地为全部),该视体剔除级测试图元以确定图元是否在视锥内,小图元剔除级测试图元以确定图元是否如此小以至于它们在被栅格化时实际上将不覆盖任何采样点。

这些另外的图元剔除级可以设置(且操作)在朝向确定级和朝向剔除级(和操作)之前,使得仅是通过这些其他图元剔除操作和级的图元才经历朝向确定和剔除操作。

在优选实施方式中,任何视锥图元剔除级设置(且操作)在朝向确定级和朝向剔除级(和操作)之前,使得仅通过视体剔除操作和级的图元才(潜在地)经历朝向确定和剔除操作。

在优选实施方式中,因为任何小图元剔除级可以与朝向确定级(和操作)共享一些计算,所以任何小图元剔除级设置在朝向确定级和朝向剔除级(和操作)之后或与它们并行设置(即,与它们并行或在它们之后操作)。

在特别优选的实施方式中,本发明的方法包括且本发明的图形处理流水线包括优选地在上述本发明的朝向确定和剔除操作之前(预先)执行的其他朝向剔除操作和级。该群体朝向剔除操作和级优选地将图元的顶点的各坐标进行比较,以确定这些坐标是大于还是小于还是等于彼此,然后使用这些比较的结果确定基于图元朝向是否可以剔除图元。

再这一点上,申请人已经意识到,依赖于各顶点坐标比较结果(即,它们是大于还是小于还是等于彼此),可以基于这些顶点坐标比较将图元分类为向后的、向前的、具有零面积或是“未知”的(即,无法根据顶点坐标比较来确定其朝向)。由此,对于一些图元,可以根据图元的顶点坐标的比较来确定图元是向前还是向后的,并因此基于此来剔除图元(如果期望)。

该其他朝向确定和剔除操作可以根据期望来实施。优选地,存在查找表,该查找表指示相应(并且优选地指示每个相应)图元是向前还是向后(并且优选地还有图元是否具有零面积)的比较结果的组合,使得剔除操作可以简单地通过执行在查找表中的查找来执行。

由于边界框确定将通常需要图元的各顶点对之间的比较以确定边界框的边缘,所以该结构可以对于在图元进行成块(准备图元列表)时使用边界框的基于块的图形处理流水线是特别有利的。然后,为了生成边界框,这些比较的结果可以对应地用于对查找表进行索引,以针对该初始朝向剔除操作和级而(在合适情况下)识别图元朝向。

该初始朝向剔除级优选地在本发明的“主”朝向确定和剔除之前执行。然后,这具有以下优点:朝向可以直接确定的一些图元可以在甚至更早的级处被剔除,从而减小了经历更复杂的朝向确定和剔除操作的图元的数量。

在这些结构中,如果顶点坐标作为浮点值被初始提供但然后针对本发明的主朝向确定和剔除操作而可以被转换为对应定点值,那么优选地,针对该初始朝向确定和剔除操作对顶点坐标的比较作为浮点值来处理,然后,仅那些通过了该初始朝向确定和处理操作的图元(及其顶点)被转换为定点值以进行随后的朝向确定和处理操作。

还将可以在合适的情况下在各种不同剔除操作之间共享处理结果。例如,在计算的处理操作中的一些处理操作所使用的项还可以用于处理(例如,剔除)操作中的其他处理操作中的情况下,然后,如果期望,则可以保存有关的项并将这些项重新用于处理操作中的多个,而不是重新计算它们。

如果图元通过了向后确定和剔除操作(或不经历(绕开)该操作),那么优选地该图元还被处理例如可以生成相关数据以在渲染输出中(潜在地)显示该图元。这优选地包括对图元进行栅格化和渲染(着色)。

在基于块的图形处理流水线的情况下,通过(或不经历)向后确定和剔除操作的任意图元优选地经历成块操作并被包括在合适的图元列表中。然后,在要生成的图形输出的全部图元已被分类到它们各自的图元列表中时,可以处理相应块以生成图元输出(通过对包括在针对该块的图元列表中的图元进行栅格化并渲染(着色))。

在给定图元已被处理时,可以根据期望将所处理的图元数据(例如,采样位置值)写到例如缓冲器,然后,在已处理要考虑的全部图元时,将缓冲器中的数据写出到例如主存储器中的帧缓冲器中。

虽然上面具体参照用于要生成的图形输出的给定图元的处理描述了本发明,但如本领域技术人员将理解的,优选地可以对于生成的给定图形输出而开始处理的多个图元(并且优选地对于每个图元)重复本发明。对应地,可以对于要生成的连续图形输出,例如,对于要显示的帧的序列,来重复处理。

要生成的渲染输出可以包括要由图形处理流水线生成的任何渲染输出。由此,该渲染输出可以包括例如要在基于块的图形处理系统中生成的块和/或输出片段数据的帧。本发明可以用于可以使用图形处理流水线生成的全部形式的输出,诸如用于显示的帧、渲染到纹理输出等。在优选实施方式中,渲染输出为输出帧。

图形处理的最终输出例如可以写到例如主存储器中的帧缓冲器中,然后,从该帧缓冲器,该输出被提供到例如显示器以显示,或以其他方式处理。

本发明可以在任意期望且合适图形处理系统和流水线中来实施。然而,在优选实施方式中,图形处理系统和流水线为基于块的(成块)图形处理系统和流水线。在这种情况下,流水线优选地还包括用于存储块采样值的块缓冲器和/或操作,以(例如,在块缓冲器中的数据完整时)将块缓冲器中的数据写出到外部(主)存储器(例如,到帧缓冲器)。

上面描述了涉及在本发明的方式的操作中的图形处理流水线的元件。如本领域技术人员将理解的,图形处理流水线可以另外包括并且优选地确实包括图形处理流水线通常包括的其他处理级中的任一个或一个或更多个(并且优选地包括全部)。由此,例如,图形处理流水线优选地包括可操作为栅格化通过(或绕开)朝向剔除操作的图形图元以生成要处理的图形片段的至少一个栅格化器和可操作为处理由栅格化器生成的片段以生成渲染的片段数据的栅格化器。在优选实施方式中,渲染器为可编程片段着色器的形式或包括可编程片段着色器。

图形处理流水线优选地还包括以下中的一个或更多个(并且优选地包括全部):顶点着色级;图元组装级;成块器(成块级);图元设置级;块缓冲器,该块缓冲器用于存储块采样值;和/或写出单元,该写出单元操作为(例如,在块缓冲器中的数据完整时)将块缓冲器中的数据写出到外部(主)存储器(例如,到帧缓冲器)。

图形处理流水线还可以含有图形处理流水线可以含有的任何其他合适且期望的处理级,诸如深度(或深度和模板)测试器、混合器等。

在优选实施方式中,图形处理流水线包括一个或更多个存储器和/或存储装置和/或与一个或更多个存储器和/或存储装置通信,该存储器和/或存储装置存储这里所述的数据和/或存储用于执行这里所述的处理的软件。图形处理流水线还可以基于图形处理流水线的输出与主微处理器和/或与用于显示图像的显示器通信。

当然,其他结构将是可能的。

在特别优选实施方式中,本发明的各种功能在单个图形处理平台上执行,图形处理平台生成和输出例如写到用于显示装置的帧缓冲器的、渲染后的片段数据。

本发明可以在任意适当的系统中实施,诸如基于适当构造的微处理器的系统。在一些实施方式中,本发明在计算机和/或基于微处理器的系统中实施。

本发明的各种功能可以以任意期望且合适的方式执行。例如,本发明的功能可以在硬件或软件中实施(根据期望)。由此,例如,本发明的各种功能元件、级和“装置”可以包括合适的处理器、控制器、功能单元、电路、处理逻辑、微处理器结构等,它们可操作以执行各种功能等,诸如适当专用硬件元件(处理电路)和/或可以被编程以以期望方式操作的的可编程硬件元件(处理电路)。

这里还应当注意的是,如本领域技术人员将理解的,本发明的各种功能等可以在给定处理器上重复和/或并行执行。等同地,各种处理级可以共享处理电路等(如果期望)。

此外,图形处理流水线的处理级和单元中的任一个或更多个或全部可以具体实施为处理级电路,例如更多个固定功能单元(硬件)处理电路的形式和/或可编程为执行期望操作的可编程处理电路的形式。等同地,处理级和处理级电路中的任一个或更多个可以作为单独的电路元件提供给其他处理级或处理级电路中的任一个或更多个,和/或处理级和处理级电路中的任一个或更多个或全部可以至少部分由共享的处理电路形成。

本领域技术人员还将理解,本发明的所述实施方式中的全部可以酌情包括这里所述的优选和可选特征中的任一个或更多个或全部。

根据本发明的方法至少部分地可以使用软件(例如,计算机程序)实现。由此将看到当从另外实施方式看时,本发明提供计算机软件,该计算机软件当安装在数据处理装置上时专门适用于执行这里描述的方法;计算机程序元件,该计算机程序元件包括计算机软件代码部,用于在程序元件在数据处理装置上运行时执行这里描述的方法;和计算机程序,该计算机程序包括代码装置,该代码装置当程序在数据处理系统上运行时适用于执行这里描述的方法的所有步骤。数据处理器可以是微处理器系统、可编程FPGA(场可编程门阵列)等。

本发明还扩展到计算机软件载体,该计算机软件载体包括这种软件,这种软件当用于操作图形处理器、渲染器或包括数据处理装置的微处理器系统时与所述数据处理装置结合使所述处理器、渲染器系统执行本发明的方法的步骤。这种计算机软件载体可以是物理存储介质,诸如ROM芯片、CD ROM、RAM、闪存或盘,或可以是信号,诸如电线上的电信号、光信号或无线电信号,诸如卫星等。

还将进一步理解的是,不是本发明的方法的所有步骤都需要由计算机软件执行,并且由此根据更宽方面,本发明提供了计算机软件并且这种软件安装在计算机软件载体上,用于执行这里阐述的方法的步骤中的至少一个。

本发明可以因此适当地具体实施为用于与计算机系统一起使用的计算机程序产品。这种实现可以包括一系列计算机可读指令,该一系列计算机可读指令固定在有形、永久介质上,诸如计算机可读介质,例如,磁盘、CD-ROM、ROM、RAM、闪存或硬盘。还应当包括一系列计算机可读指令,在有形介质(包括但不限于,光学或模拟通信线)上,或无形地使用无线技术(包括但不限于,微波、红外或其他传输技术),这些指令经由调制解调器或其他接口装置可发送到计算机系统,。该系列计算机可读指令具体实施这里之前描述的功能的所有或一部分。

本领域技术人员将理解这种计算机可读指令可以以多种编程语言来写,用于与许多计算机架构或操作系统一起使用。进一步地,这种指令可以使用任意存储技术来存储(存储技术现在或将来包括但不限于半导体、磁或光),或使用任意通信技术来发送(通信技术现在或将来包括但不限于光学、红外或微波)。预期的是,这种计算机程序产品可以作为可去除介质来分发,附有已打印的文档或电子文档,例如,现成软件;例如在系统ROM或固定盘上预加载有计算机系统;或在网络(例如,因特网或万维网)上从服务器或电子公告栏分发。

附图说明

现在将仅以示例的方式并参照附图来描述本发明的多个优选实施方式,附图中:

图1示出了可以根据本发明操作的图形处理流水线的实施方式;

图2更详细地示出了图1的图形处理流水线的前端处理操作;

图3和图4示出了根据本发明的图1的图形处理流水线的前端处理操作的第一实施方式;

图5和图6示出了根据本发明的图1的图形处理流水线的前端处理操作的第二实施方式;

图7和图8示出了根据本发明的图1的图形处理流水线的前端处理操作的第三实施方式;

在适当的情况下,在附图中,类似的附图标记用于类似的部件。

具体实施方式

现在将在处理计算机图形以显示的背景下描述本发明的优选实施方式。

当计算机图形图像要被显示时,它通常首先被限定为一系列图元(多边形),这些图元然后被划分(栅格化)为用于依次图形渲染的图形片段。在正常图形渲染操作期间,渲染器将修改与各片段关联的(例如)颜色(红色、绿色和蓝色,RGB)和透明度(阿尔法、α)数据,使得可以正确地显示片段。一旦片段已经完全穿过渲染器,则它们的关联数据值存储在存储器中,准备好输出。

图1示意性示出了可以根据本发明操作的图形处理流水线1的实施方式。图1中所示的图形处理流水线1是基于块的渲染器,并且将由此生成渲染输出数据阵列的块,诸如要生成的输出帧。(如本领域技术人员将理解的,如果期望,可以使用其他渲染结构。)

在基于块的渲染时,不是整个渲染输出(例如,帧)如在中间模式渲染那样被一下子有效处理,而是渲染输出(例如,要显示的帧)被划分为多个较小的子区域(通常称为“块”)。各个块(子区域)被单独(通常一个接一个地)渲染,然后渲染后的块(子区域)被重组,以提供完整的渲染输出(例如用于显示的帧)。在这种结构中,渲染输出通常被划分为规则大小和成形的子区域(块)(它们通常是例如正方形或矩形),但这不是重要的。

渲染输出数据阵列可以通常是旨在显示在显示装置(诸如屏幕或打印机)的输出帧,但还可以例如包括中间数据,中间数据旨在用于后期渲染(还称为“渲染到纹理”输出)等。

图1示出了图形处理流水线1的与本实施方式的操作有关的主要元件和流水线级。如本领域技术人员将理解的,可以有图1未例示的图形处理流水线的其他元件。这里还应当注意的是,图1仅是示意性的,并且例如,实际上,所示的功能单元和流水线级可以共享重要的硬件电路(即使它们在图1中被示意性地示出为单独级)。还将理解的是,如图1所示的图形处理流水线的各个级、元件和单元等可以根据期望来实现,并且因此将包括例如适当的电路和/或处理逻辑等,用于执行需要的操作和功能。

如图1所示,图形处理流水线1包括多个级,其中包括“前端”处理级8、栅格化级3、早期Z(深度)和模板测试(stencil test)级4、片段着色级6、后期Z(深度)和模板测试级7、混合级9、块缓冲器10以及降采样和写回(多采样分辨)级11。

前端处理级8在用于生成渲染输出的图元被栅格化之前执行若干处理操作,包括组装用于处理的图元且准备图元列表,该图元列表指示针对为了处理目的而将渲染输出划分成的各块应处理哪些图元。下面将参照图2-图8更详细地描述该前端处理。

图形处理流水线1的栅格化级3操作以将组成渲染输出(例如,要显示的图像)的图元栅格化为各个图形片段以处理。为了这样做,栅格化器3针对代表要生成的渲染输出的采样位置的阵列测试要渲染的图形图元,以确定图元覆盖哪些采样位置(若有的话)。然后,栅格化器3生成具有用于渲染图元的适当位置(代表合适的采样位置)的图形片段。

栅格化器3生成片段,该片段处理用于对由图元覆盖的渲染输出的采样位置中的各采样位置进行采样。然后,将这些片段向前发送至流水线的剩余部分以处理。

早期Z/模板级4对其从栅格化器3接收的片段进行Z(深度)测试,以预见是否任何片段可以在该级被丢弃(剔除)。为了这样做,早期Z/模板级4将从栅格化器3发布的片段的深度值(与片段关联的深度值)与已经渲染的片段的深度值(这些深度值存储在作为块缓存器10的一部分的深度(Z)缓冲器中)进行比较,以确定新片段是否将由已经被渲染的片段遮蔽。同时,执行早期模板测试。

通过片段早期Z和模板测试级4的片段然后发送到片段着色(渲染)级6。片段着色级6对通过早期Z和模板测试的片段进行适当的片段处理操作,以处理片段,以生成用于渲染输出(例如,用于片段的显示)的适当片段数据等,如本领域中已知的。

该片段处理可以包括任何合适且期望的片段着色处理,诸如对片段执行片段着色器程序、向片段应用文理、向片段应用雾化或其他处理等,以生成合适的片段数据,如本领域中已知的。在本实施方式中,片段着色级6是为可编程片段着色器的形式,但如果期望,其他结构(诸如还或相反使用固定功能片段着色单元)将是可能的。

然后,存在“后期”片段Z和模板测试级7,其尤其对着色后的片段执行流水线结尾深度测试,以确定经渲染的片段是否将实际在最后输出中看到。该深度测试使用针对在块缓冲器10中的Z缓冲器中存储的片段位置的Z缓冲器值,以通过将从片段着色级6发布的片段的(与该片段关联的)深度值与已渲染的片段的深度值(如存储在深度缓冲器中的)进行比较,来确定用于新片段的片段数据是否应当代替已渲染的片段的片段数据。该后期片段深度和模板测试级7还对片段执行任意需要的“后期”阿尔法和/或模板测试。

通过后期片段测试级7的片段然后经历(如果需要)任何必须的与已经存储在混合器9中的块缓冲器10中的片段的混合操作。对片段需要进行的任何其他剩余操作(诸如,抖动等(未示出))也在该级执行。

最后,(混合后的)输出片段数据(值)被写到块缓冲器10,从该块缓冲器10,它们可以例如被输出到帧缓冲器以显示。用于输出片段的深度值还适当被写到块缓冲器10内的Z缓冲器中。块缓冲器和Z缓冲器对于缓冲器代表的各采样点(实质上是对于所处理的块的各采样点)分别存储适当的颜色等或Z值。由此,块缓冲器存储当前被处理的渲染输出(例如,要显示的图像)的一部分的片段数据阵列。

在本实施方式中,提供了三个块缓冲器。各块缓冲器将它的片段数据以32x32阵列存储(即,对应于要生成的输出中(例如,在要显示的图像中)的采样位置的32x32阵列)。因此,各32x32数据位置块缓冲器可以以4x反走样(即,在每像素采用4个样本时)对应于例如要显示的帧的16x16像素“块”。

这些块缓冲器可以作为单独缓冲器来提供或实际上可以全部为同一较大缓冲器的部分。块缓冲器位于(本地于)图形处理流水线(芯片)。

在该实施方式中,三个块缓冲器中的两个用于存储各采样点的颜色(红、绿、蓝)值(为此目的可以使用一个块缓冲器,但优选为两个),并且一个块缓冲器用于存储各采样点的Z(深度)值和模板值。当然,其他结构将是可以的。

来自块缓冲器10的数据输入到降采样(多采样分辨)级11,并且从那里输出(写回)到输出缓冲器13(可能不在图形处理平台本身上),诸如显示装置的帧缓冲器(未示出)。(该显示装置可以包括例如包括像素阵列的显示器,诸如计算机监视器或打印机。)

降采样单元11将块缓冲器10中所存储的片段数据降采样到针对输出缓冲器(装置)的合适分辨率(即,使得生成对应于输出装置的像素的像素数据阵列),以生成用于向输出缓冲器13输出的输出值(像素)14。

本实施方式中的图形处理流水线1中的降采样单元11被配置为能够在一个降采样操作(时钟周期)中将来自块缓冲器10的四个采样位置值降采样到用于向输出缓冲器13输出的单个输出值例如14。

该降采样可以以任何合适的方式发生。在本实施方式中,数据的线性混合用于降采样数据。然而,如果期望,其他结构将是可能的。如果需要,则降采样单元11还可以将适当的伽马校正应用于向输出缓冲器13输出的数据,或者这可以例如作为片段着色操作或以任意其他合适且期望的方式而进行。

在已处理渲染输出的块且其数据导出到用于存储主存储器(例如,到主存储器中的帧缓冲器(未示出))时,然后处理下一块,以此类推,直到处理了足够的块以产生整个渲染输出(例如,要显示的帧(图像))为止。

当然,用于图形处理流水线1的其他结构将是可能的。

图2更详细地示出了图1中所示的图形处理流水线1的前端处理8。

如图2所示,本发明的实施方式中的前端处理8包括三角形组装器(组装级)20、偏离画面三角形剔除单元(级)21、三角形向后确定和剔除单元(级)22以及成块器(成块单元级)23。(在本实施方式中,假定要处理的图元为三角形的形式。然而,如果期望,则可以使用其他形式的图元(并且将以与本实施方式中所示的三角形对应的方式处理)。)

三角形组装器20将用于要生成的渲染输出的顶点组或流转换成要处理的期望图元序列和组,以生成渲染输出。为了这样做,三角形组装器20使用用于生成渲染输出顶点组的经适当转换的位置属性24连同由用于图形处理流水线的应用程序接口提供的、定义了应如何组合顶点以形成要渲染的图元(三角形)的(例如,顶点索引形式的)连接信息25。

经转换的位置属性24可以例如从对被提供初始顶点属性执行顶点着色操作以例如提供适当经转换顶点的顶点着色级(未示出)来提供。

如果期望,则三角形组装器20还可以拒绝退化三角形(例如,顶点中的两个或更多个位于同一位置的三角形)。

偏离画面三角形剔除单元21接收由三角形组装器20组装的三角形并确定它们是否完全位于用于要生成的渲染输出的定义边界外部。如果三角形完全位于相关渲染边界外部,那么剔除该三角形。

向后确定和剔除单元22操作为确定图元(三角形)是否是向后的,并且剔除向后图元以免进行进一步处理。下面将参照图3-图8更详细地描述根据本发明的、用于执行该操作的若干优选实施方式。

如图2所示,向后确定和剔除单元22尤其包括“微三角形”剔除单元26、三角形面积计算器27以及向后剔除单元28。

微三角形剔除单元26操作为丢弃如此小以至于将错过所有用于生成渲染输出的全部采样点的任意三角形。为了这样做,微三角形剔除单元26针对三角形的边缘确定并使用线算式,以检查三角形是否错过在栅格化处理期间将被考虑的全部采样点。如果三角形将错过全部采样点,那么该三角形太小,因此被剔除。

面积计算器27确定通过微三角形剔除单元26的任何三角形的面积的符号。

向后剔除单元28使用由面积计算器27计算出的三角形面积的符号来识别并剔除任何向后图元(三角形)。

虽然本实施方式将微三角形剔除单元示出为在面积计算器27和向后剔除单元28之前操作,但在其他实施方式中,微三角形剔除单元26可以在面积计算器27和向后剔除单元28之后操作或与面积计算器27和向后剔除单元28并行操作。实际上,这可以是期望的,因为微三角形剔除单元可以与这些单元共享一些计算。

然后,将通过向后剔除级22的任何图元(三角形)提供给成块器23,该成块器23操作为识别应针对渲染输出的哪些块对图元进行处理(基于渲染输出内图元的位置),并且将指示应处理讨论中的图元的适当命令添加到针对讨论中的块的相关图元列表29。

成块器(成块级)23可以操作为以任何合适且期望的方式将图元分类到块中。在优选实施方式中,对于考虑的各三角形生成边界框,然后针对渲染输出测试该边界框,以确定图元(潜在地)落在内的渲染输出区域(并且由此确定块)。如果期望,则还可以或代替使用除了边界分箱之外的成块结构,诸如正合分箱。

图3-图8示意性示出了根据本发明的、用于图2中所示的前端处理的操作的三个优选实施方式。

图3和图4示出了第一实施方式,在该第一实施方式中,超过特定尺寸的三角形(图元)不经历任何向后剔除面积计算或剔除测试,但更小的三角形经历具体使用定点处理和所选范围的数据值的更紧凑的面积计算和向后剔除测试。

图3示出了处理级和单元,并且图4为示出了该本发明的该实施方式中的前端处理操作的对应流程图。

如可以看出的,图3更详细地示出了图2中所示的前端处理的级和单元。

如图3所示,在三角形组装级20之后,在本实施方式中,提供给图形处理流水线且在例如顶点着色级以浮点格式处理的三角形顶点坐标首先由定点转换器30转换成定点格式的对应坐标组。

定点转换器30还操作为将落在要处理输出周围的防护区域的边缘外部的任意坐标钳制(设置)到位于防护区域边缘上的值。

浮点三角形顶点坐标可以以任何合适且期望的方式转换成定点格式。在本实施方式中,定点格式优选地能够代表具有所定义的最大坐标值范围和最小精确度的采样位置的栅格,使得定点坐标将具有完全定义的最大值和定义的最小精度(诸如像素的1/256)。这可以在例如初始提供的浮点坐标值被同样地约束以对齐到这种采样位置的栅格的情况下是特别适当的。

用于三角形顶点坐标的实际定点格式可以根据期望来选择,例如,根据要使用的坐标值的最大范围和精度来选择。这可以基于图形处理流水线作为一部分的整个数据处理系统的最大所支持输出(例如,画面)尺寸(并且在优选实施方式中,是这种情况)。例如,对于16kx16k像素的最大所支持画面尺寸,以1/256像素最小精度,合适的定点格式将是带符号的16:8定点格式。当然,其他结构将是可能的。

这样转换的图元然后在偏离画面剔除单元(级)21中经受偏离画面剔除。该单元可以以任何合适且期望的方式确定图元是否是偏离画面的。例如,该单元可以确定全部三个顶点是否处于同一画面边缘的不可视侧上(例如,全部x<0,或者全部y>画面高度)。如果期望,则该单元还可以或代替执行视体剔除。

然后如图3所示(并且对应于图2),未因偏离画面而剔除的任何三角形提供给向后确定和剔除单元22。

作为向后确定和剔除操作的第一级,由尺寸估计器31估计三角形的尺寸(面积)。

在本实施方式中,尺寸估计器31通过确定三角形的顶点中的任一个是否位于防护区域边缘上来估计三角形的面积。(如果三角形的顶点中的任一个已经被钳制到防护区域边缘,那么或者图元巨大且将需要例如全浮点计算来确定其能见度(如果期望),或者图元小并且完全偏离画面的一侧(在这种情况下,该图元可能已被无关紧要地拒绝,但如果没有,则可以在此时拒绝)。)

如果尺寸估计器31确定三角形的顶点不位于防护区域边缘上,那么三角形被确定小到足以经历向后剔除操作,因此三角形被传递到微三角形剔除单元26以测试。

如果三角形未被微三角形剔除单元(级)26剔除,则该三角形被传递到面积计算器32,然后传递到向后剔除单元28。

在该实施方式中,面积计算器28被配置为使用针对图元顶点的定点值来确定三角形面积的符号,因此能够以相对有效的方式对于三角形执行面积计算。

在该实施方式中,面积计算器32将具有三个顶点v0、v1以及v2(各顶点具有各x和y坐标)的三角形的面积的符号确定为:

面积=((v1.x-v0.x)(v2.y-v0.y)-(v1.y-v0.y)(v2.x-v0.x))

顶点坐标v1.x、v0.x等为针对这些坐标的适当定点格式值。

该算式给出由三角形的边缘中的两个形成的平行四边形的面积(因此将计算为三角形面积两倍的值)。然而,因为对于朝向确定关注的是面积的符号(或面积是否恰好为零),于是为了朝向确定可以忽略该算式不计算三角形的精确面积的事实(或者,如果期望,则可以直接修正该事实)。

面积计算器32可以且优选地是包括可以执行面积计算所需的减法和乘法的定点运算逻辑单元。

向后剔除单元28然后使用由面积计算器32计算出的三角形面积的符号来确定三角形是否是向后的。如果确定三角形是向后的,那么向后剔除单元28剔除该三角形。

如果三角形通过向后剔除确定,那么该三角形被传递到成块器23以成块。

如图3所示,如果尺寸估计器31确定三角形太大而不能经历向后剔除操作,那么该三角形仅被直接发送到成块器23,即,对于该三角形省略(跳过)微三角形剔除26、面积计算32以及向后剔除28操作。

在这一点上,申请人已经意识到,对于较小的三角形,可以确定它们的面积并使用定点运算和数据值执行向后剔除操作,这从而允许以相对有效的方式进行该处理。然而,申请人还已经意识到使用定点运算和值来进行三角形面积计算和向后剔除操作可能不适于可以开始渲染的所有三角形,并且具体地,这种结构可能不适于在处理非常大的三角形时使用。

本发明通过使用尺寸估计器31来根据要处理的三角形的尺寸对要处理的三角形进行分类,然后绕过(跳过)针对定点运算向后确定和剔除操作不适用的非常大的三角形的定点运算向后确定和剔除操作来解决该问题(但是对于定点向后确定和剔除有效的任何较小三角形将经过向后确定和剔除操作)。

这样,向后剔除可以在成块操作23之前以相对有效的方式执行,并且不需要提供例如用于对三角形的所有情况的支持,并且具体地对以该方式可能无法令人满意地处理的大三角形的支持。

图4是示出了用于图3中所示的前端处理流水线结构的操作序列的流程图。

如图4所示,前端处理以三角形组装器20收集顶点索引以组装正在处理的三角形开始(步骤40)。然后确定三角形是否是退化的(步骤41)。如果确定三角形是退化的,那么拒绝该三角形(步骤52)。

另一方面,如果确定三角形不是退化的,那么获取针对该三角形的浮点顶点数据(步骤42)并且将该数据转换成对应的定点值(步骤43)。

然后将落在防护区域外部的任何顶点钳制到防护区域边缘(步骤44)。

然后确定三角形是否是完全偏离画面的(步骤45)。如果确定三角形是完全偏离画面的,那么拒绝该三角形(步骤52)。

如果在步骤45处确定三角形不是完全偏离画面的,那么确定三角形的顶点中的任一个是否处于防护区域的边缘处(步骤46)。

如果确定所有顶点处于防护区域的边缘处,那么确定三角形为“大”,因此被假定为在画面上(步骤51),由此直接提供给成块操作(步骤53)(即,绕开(跳过)向后确定和剔除步骤47-50)。

如果在步骤46处确定三角形的顶点未全部处于防护区域的边缘处,那么该三角形被分类为“小”(即,该三角形的尺寸被确定为适于执行定点向后确定和剔除操作),因此在步骤47处确定用于三角形的尺寸估计。

然后,在步骤48处确定三角形是否足够小以至于错过所有采样点(并且如果是这样,则拒绝该三角形(步骤52))。如果三角形不小至错过所有采样点,那么使用定点运算和顶点已经转换成的顶点坐标值来计算三角形的面积符号(步骤49)。

然后,使用步骤49处计算的面积符号确定三角形是否是向后的(步骤50)。

如果三角形是向后的,那么拒绝该三角形(步骤52),但如果它不是向后的,那么该三角形经历成块操作(步骤53),并且将适当的三角形数据写到适当的块列表中(步骤54)。

然后可以以类似的方式处理下一三角形,以此类推,直到已处理要考虑的所有三角形为止。

图5和图6示出了根据本发明的在图2中所示的前端处理的第二实施方式。图5示出了处理级和单元,并且图6为示出了该本发明的该实施方式中的前端处理操作的对应流程图。

如可以从图5和图6看出的,在该实施方式中,三角形基本上以与图3和图4中所示的实施方式相同的方式来处理,除了尺寸估计器31确定三角形的顶点位于防护区域边缘上(图6中的步骤46)(即,确定三角形太大而不能经历定点向后剔除操作),然后不是将三角形直接发送到成块器23(以及成块步骤53),而是仍然计算三角形的面积符号,以对于该三角形执行向后剔除确定,但该过程是在浮点面积计算器60(图5)中使用浮点运算和针对顶点坐标的值进行(在图6中的步骤65处)。

为了这样做,面积计算器60在图6中的步骤65处取得针对三角形顶点的初始浮点值,并且通过取由图元的w坐标的符号和卷绕修改的、针对图元的顶点的x/y坐标(表达为浮点值)的叉乘,使用那些浮点值来计算三角形的面积符号。

浮点面积计算器60可以并且优选地是包括浮点运算逻辑单元,该浮点运算逻辑单元可以执行对于面积计算必需的减法和乘法。

然后,这意味着无法使用定点面积计算器32为了三角形朝向确定的目的而处理(图6中的步骤49)的三角形仍然可以经历向后剔除和确定操作。然而,仅被尺寸估计器31确定为不适于使用定点运算和值处理的那些三角形在面积计算器60中使用浮点运算和值来处理(图6中的步骤65),从而确保将消耗较多功率且可能花费数个时钟周期的浮点运算仅对于被确定为无法使用定点处理来处理的那些三角形执行。

在向后确定和剔除单元22支持三角形的定点和浮点处理这两者的情况下,如图5和图6中所示的实施方式中,然后可以根据期望选择并改变使用定点路径或浮点路径处理三角形之间的划分。例如,在上述实施方式中,假定定点路径用于例如数据值能够使用16:8定点数据值格式来表达的三角形(数据值无法以该方式表达的任何三角形然后使用浮点处理路径来处理)。然而,例如,可以将定点路径设置为支持使用定点8:8格式的数据值,数据值无法以该格式表达的任何三角形然后经由浮点处理路径来处理。这仍然将促进向后确定和剔除单元比例如使用浮点运算和数据值简单地处理全部三角形具有更小的面积并使用更低的功率。

图7和图8示出了根据本发明的在图2中所示的前端处理的第三实施方式。图7示出了处理级和单元,并且图8为示出了该本发明的该实施方式中的前端处理操作的对应流程图。

如可以从图7和图8看出的,在该实施方式中,三角形基本上以与图5和图6中所示的实施方式相同的方式来处理,除了向后确定剔除级22支持用于确定图元的面积的符号的两个定点处理路径70、71(即,“窄”定点面积计算器70和“宽”定点面积计算器71)之外。“窄”定点面积计算器70能够使用多达一定尺寸(比特数)的定点数据值来执行运算操作。“宽”定点面积计算器71能够使用较大尺寸(比特数)的定点数据值来执行运算操作。

在该实施方式中,尺寸估计器31因此识别给定图元是“巨大的”并因此应使用浮点面积计算器60为了向后确定的目的而计算它的面积,是“大的”并因此应使用宽定点面积计算器71为了向后确定的目的而计算它的面积,或者是足够小使得可以使用窄定点面积计算器70为了向后确定的目的而计算它的面积。

(如图7和图8所示,要使用窄定点面积计算器70处理的任何“小”三角形也经历微三角形剔除操作26(图8中的步骤48)。)

如图8所示,尺寸估计器31通过确定三角形的顶点中的任一个是否位于防护区域的边缘处(图8中的步骤46)来确定要处理的三角形是否为“巨大的”并因此应使用浮点面积计算器60为了向后确定的目的而计算它的面积(图8中的步骤65)。还可以或相反可以使用针对三角形的浮点坐标的绝对大小来确定三角形是否是“巨大的”(并因此应使用浮点运算来计算它的面积),例如坐标中的任一个是否大于216

如果在步骤46处确定顶点都不位于防护区域的边缘处(即,三角形足够小,以使用定点运算来处理),那么在步骤47处确定图元的尺寸的另外估计。该尺寸估计可操作为将图元分类到适于使用“窄”或“宽”定点值来计算它的面积。

这可以以任何合适的方式来进行,但在优选实施方式中,尺寸估计在步骤47处通过计算各顶点坐标对(v1.x-v0.x、v2.y-v0.y、v1.y-v0.y以及v2.x-v0.x)之间的差(如上所讨论的差用作面积计算的一部分)来计算。尺寸估计器31确定这些减法运算的结果是否可以全部使用由窄定点格式面积计算器70使用的窄定点格式来表示(步骤80)。

尺寸估计器31可以并且优选地是包括定点运算逻辑单元,该单元可以执行面积估计必需的减法。

如果确定顶点坐标减法的结果足够小以能够使用窄定点面积计算器70的窄定点格式来表达,那么如图8所示,然后在微三角形剔除单元26中测试该三角形以确定该三角形是否足够小以致不覆盖任何采样点(步骤48)。如果三角形未被微三角形剔除单元26拒绝,那么在窄定点面积计算器70中使用窄定点值执行面积计算的剩余部分(即,减法结果的必需乘法和这些结果的减法)(步骤81)。

另一方面,如果在步骤70处确定步骤47处执行的减法运算的结果无法使用窄定点格式来表达,那么相反在宽定点面积计算器71中使用宽定点值来计算图元的面积的符号(步骤82)。再次,在该结构中,宽定点面积计算器71执行用于在步骤47处估计尺寸而生成的差值的必需乘法和这些结果的减法,以然后提供面积的符号。

窄定点面积计算器70可以并且优选地是包括定点运算逻辑单元,该定点运算逻辑单元可以执行使用特定格式(尺寸)的定点值进行的面积计算(面积计算的剩余部分)必需的减法和乘法。

宽定点面积计算器71可以并且优选地是包括定点运算逻辑单元,该定点运算逻辑单元可以执行使用较大格式(尺寸)的定点值进行的面积计算(面积计算的剩余部分)必需的减法和乘法。

然后,这允许使用较小(并且由此更节能)的窄定点运算处理足够小的三角形,而不是例如处理不需要使用浮点运算(使用相同更宽定点运算)来处理的所有三角形。

在向后确定剔除单元支持两种形式的三角形定点处理的情况下,如图7和图8中所示的实施方式中,然后可以根据期望选择并改变使用各不同定点路径以及不同定点路径的相对“尺寸”来处理三角形之间的划分。例如,宽定点路径(面积计算器71)可以使用16:8格式定点数字,窄定点路径(面积计算器70)使用4:8格式定点数字。

从减去顶点坐标得到的差值可以使用窄定点格式表达的三角形然后可以使用窄定点处理路径来处理,其他三角形使用宽定点处理路径来处理。由此,例如,具有多达假设16像素(和/或采样位置)的最大尺寸的三角形可以使用窄定点处理路径来处理,具有16至1000像素(和/或采样位置)的最大尺寸的三角形使用宽定点格式处理路径来处理,并且具有大于1000像素(和/或采样位置)的尺寸的任何三角形使用浮点处理路径来执行。

该实施方式中的窄定点面积计算器70和宽定点面积计算器71可以根据期望来设置。例如,它们可以为完全单独的运算处理单元,或者窄定点面积计算器70可以为宽定点面积计算器71的子集(子单元)(即,使得宽定点面积计算器单元71的子集用于执行窄定点面积计算)。

如果期望,则对上述实施方式的若干修改、变形以及添加将是可能的。

例如,顶点的浮点坐标的大小除了可以用于“识别”“巨大”三角形之外,还可以用于决定如何针对三角形(图元)执行任何边界框导出(例如,是否使用定点坐标(例如,使用24:8顶点坐标)或浮点坐标(例如,FP32坐标)来进行边界框导出)。例如,还将可以:如果确定坐标的大小对于可用的定点处理路径太大但实际上不使用定点表示的精度的全部,则向下调整坐标(即,图元)以“适合”定点处理路径。

虽然上面已经参照作为三角形被处理的图形图元描述了本实施方式,但将理解,本发明同等地(对应地)用于其他形式的图形图元,并不仅仅是三角形(如果期望)。

可以从上面看出本发明,至少在其优选实施方式中,提供了一种用于执行图元的向后剔除的更有效机制,例如在基于块的图形处理流水线中的成块操作之前。这在本发明的优选实施方式中至少通过根据图元尺寸对要处理的图元进行分类并且然后基于图元的尺寸为了针对图元的向后确定和剔除操作的目的选择处理路径来实现。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1