首页 / 专利库 / 电脑图像 / 视锥体裁剪 / 图形图元的裁剪

图形图元的裁剪

阅读:635发布:2020-06-07

专利汇可以提供图形图元的裁剪专利检索,专利查询,专利分析的服务。并且公开了图形图元的裁剪。本 发明 描述了用于参照裁剪边界(65)对图形图元(60)进行裁剪的技术。在已经从图元 存储器 (38)读取了图 块 的图元列表之后,裁剪步骤(10)可针对待 渲染 的图形 帧 的每个图块被分别执行。裁剪可仅对较大的图元执行,其中较大的图元的尺寸超过给定 阈值 。参照裁剪边界(65)对图元(60)进行的裁剪可被不精确地执行,以便于仅生成单裁剪图元,其中单裁剪图元可延伸至超过裁剪边界。由裁剪生成的被裁剪的图元可被用于图元设置操作的深度函数计算,而不被用于边缘判定。,下面是图形图元的裁剪专利的具体信息内容。

1.一种处理用于待显示的的图形图元的方法,所述方法包括以下各个步骤: 将每个图元分配给组成所述待显示的帧的多个图中的至少一个图块; 对于每个图块,在图元存储器中存储图元列表,所述图元列表识别出被分配至相应图块的图元的顶点的顶点数据;以及 分别针对每个图块执行图块处理,所述图块处理包括: (i)从所述图元存储器读取所述图块的所述图元列表; (ii)如果所述图元列表识别出满足裁剪条件的目标图元,则执行参照裁剪边界对所述目标图元执行裁剪的裁剪操作以生成在所述图元列表中未被识别出的被裁剪的图元的至少一个附加顶点的附加顶点数据,相较于所述目标图元,所述被裁剪的图元延伸至所述裁剪边界以外更少的量; (iii)通过使用在所述图元列表中被识别出的所述顶点数据和由所述裁剪操作生成的所述附加顶点数据来执行至少一个进一步的图形处理操作;以及 (iv)输出由针对所述图块的所述至少一个进一步的图形处理操作生成的显示数据。
2.根据权利要求1所述的方法,其中由所述裁剪操作生成的所述附加顶点数据被存储在高速缓冲存储器中,所述高速缓冲存储器相较于所述图元存储器具有较低的访问延迟。
3.根据权利要求1所述的方法,其中所述附加顶点数据由用来从所述目标图元的所述顶点数据确定所述附加顶点数据的权重值表示。
4.根据权利要求1所述的方法,其中所述裁剪边界对应于视锥体的边界。
5.根据权利要求1所述的方法,其中所述裁剪边界在视锥体的边界之外。
6.根据权利要求1所述的方法,其中如果所述目标图元延伸至超过所述裁剪边界,则满足所述裁剪条件。
7.根据权利要求1所述的方法,其中如果所述目标图元延伸至超过所述裁剪边界并且表明所述目标图元的尺寸的图元尺寸参数超过了预定阈值,则满足所述裁剪条件。
8.根据权利要求1所述的方法,其中所述至少一个进一步的图形处理操作包括以下各个操作中的至少一个操作: 图元设置操作,该图元设置操作包括用于确定哪些位置在所述图元的边缘的内部或外部的边缘判定和用于确定深度函数的深度函数判定中的至少一个,其中所述深度函数用来确定所述图元内的深度值;以及 光栅化操作,该光栅化操作用于计算多个被用于表示所述图元的图形片元位置数据。
9.一种用于处理用于待显示的帧的图形图元的设备,所述设备包括: 分配电路,该分配电路被配置成将每个图元分配至组成所述待显示的帧的多个图块中的至少一个图块; 图元存储器,该图元存储器被配置成存储针对每个图块的图元列表,所述图元列表识别被分配至相应图块的图元的顶点的顶点数据;以及 图块处理管线,该图块处理管线被配置成分别针对每个图块执行图块处理,所述图块处理包括: (i)从所述图元存储器读取所述图块的所述图元列表; (ϋ)如果所述图元列表识别出满足裁剪条件的目标图元,则执行参照裁剪边界对所述目标图元执行裁剪的裁剪操作以生成在所述图元列表中未被识别出的被裁剪的图元的至少一个附加顶点的附加顶点数据,相较于所述目标图元,所述被裁剪的图元延伸至所述裁剪边界以外更少的量; (iii)通过使用在所述图元列表中被识别出的所述顶点数据和由所述裁剪操作生成的所述附加顶点数据来执行至少一个进一步的图形处理操作;以及 (iv)输出由针对所述图块的所述至少一个进一步的图形处理操作生成的显示数据。
10.一种用于处理用于待显示的帧的图形图元的设备,所述设备包括: 分配装置,该分配装置用于将每个图元分配至组成所述待被显示的帧的多个图块中的至少一个图块; 图元存储装置,该图元存储装置用于存储针对每个图块的图元列表,所述图元列表识别被分配至相应图块的图元的顶点的顶点数据:以及 图块处理装置,该图块处理装置分别针对每个图块执行图块处理,所述图块处理包括: (i)从所述图元存储装置读取所述图块的所述图元列表; (ϋ)如果所述图元列表识别出满足裁剪条件的目标图元,则执行参照裁剪边界对所述目标图元执行裁剪的裁剪操作以生成在所述图元列表中未被识别出的被裁剪的图元的至少一个附加顶点的附加顶点数据,相较于所述目标图元,所述被裁剪的图元延伸至所述裁剪边界以外更少的量; (iii)通过使用在所述图元列表中被识别出的所述顶点数据和由所述裁剪操作生成的所述附加顶点数据来执行至少一个进一步的图形处理操作;以及 (iv)输出由针对所述图块的所述至少一个进一步的图形处理操作生成的显示数据。
11.一种处理用于显示的图形图元的方法,其中所述图元具有被表示为浮点格式的顶点坐标,所述方法包括以下各个步骤: 基于待处理的目标图元的所述顶点坐标确定表明所述目标图元的尺寸的图元尺寸参数; 如果所述图元尺寸参数超过了预定阈值,则参照裁剪边界在所述目标图元上执行裁剪操作以生成至少一个被裁剪的图元,并且通过使用所述至少一个被裁剪的图元执行至少一个图形处理操作,其中相较于所述目标图元,所述至少一个被裁剪的图元延伸至所述裁剪边界以外更少的量;以及 如果所述图元尺寸参数未超过所述预定阈值,则省略针对所述目标图元的所述裁剪操作,并且通过使用所述目标图元执行所述至少一个图形处理操作。
12.根据权利要求11所述的方法,其中所述图元尺寸参数包括所述目标图元的所述顶点坐标之一的幅度。
13.根据权利要求11所述的方法,其中所述预定阈值具有使得所述图元尺寸参数未超过所述预定阈值的图元由所述至少一个图形处理操作处理而不产生由浮点精度损失导致的误差的值。
14.根据权利要求11所述的方法,其中所述裁剪边界对应于视锥体的边界。
15.根据权利要求11所述的方法,其中所述裁剪边界在视锥体的边界之外。
16.根据权利要求11所述的方法,其中所述裁剪操作参照所述裁剪边界精确地对所述目标图元进行裁剪以生成所述至少一个被裁剪的图元。
17.根据权利要求11所述的方法,其中所述裁剪操作生成对应于所述目标图元的单裁剪图元;并且 如果所述目标图元处于所述裁剪边界之内的部分不能仅通过使用一个图元来表示,则所述裁剪操作生成所述单裁剪图元,其中所述单裁剪图元的一部分延伸至超过所述裁剪边界。
18.根据权利要求11所述的方法,其中所述裁剪操作生成用于从所述目标图元的所述顶点数据确定所述至少一个被裁剪的图元的附加顶点数据的权重值。
19.根据权利要求11所述的方法,其中所述至少一个图形处理操作包括以下各个操作中的至少一个操作: 图元设置操作,该图元设置操作包括用于确定哪些位置在所述图元的边缘的内部或外部的边缘判定和用于确定深度函数的深度函数判定中的至少一个,其中所述深度函数用于确定所述图元内的深度值;以及 光栅化操作,该光栅化操作用于计算多个被用于表示所述图元的图形片元的位置数据。
20.—种用来处理用于显示的图形图元的装置,其中所述图元具有被表示为浮点格式的顶点坐标,所述装置包括处理电路,所述处理电路被配置用于: (i)基于待处理的目标图元的所述顶点坐标确定表明所述目标图元的尺寸的图元尺寸参数; (ϋ)如果所述图元尺寸参数超过了预定阈值,则参照裁剪边界在所述目标图元上执行裁剪操作以生成至少一个被裁剪的图元,并且通过使用所述至少一个被裁剪的图元执行至少一个图形处理操作,其中相较于所述目标图元,所述被裁剪的图元延伸至所述裁剪边界以外更少的量;以及 (iii)如果所述图元尺寸参数未超过所述预定阈值,则省略针对所述目标图元的所述裁剪操作,并且通过使用所述目标图元执行所述至少一个图形处理操作。
21.—种用来处理用于显示的图形图元的设备,其中所述图元具有被表示为浮点格式的顶点坐标,包括处理装置的所述设备用于: (i)基于待处理的目标图元的所述顶点坐标确定表明所述目标图元的尺寸的图元尺寸参数; (ϋ)如果所述图元尺寸参数超过了预定阈值,则参照裁剪边界在所述目标图元上执行裁剪操作以生成至少一个被裁剪的图元,并且通过使用所述至少一个被裁剪的图元执行至少一个图形处理操作,其中相较于所述目标图元,所述被裁剪的图元延伸至所述裁剪边界以外更少的量;以及 (iii)如果所述图元尺寸参数未超过所述预定阈值,则省略针对所述目标图元的所述裁剪操作,并且通过使用所述目标图元执行所述至少一个图形处理操作。

说明书全文

图形图元的裁剪

技术领域

[0001] 本技术涉及图形处理领域。更具体地,涉及用于处理图形图元的方法和装置。

背景技术

[0002] 当处理3D图形时,要显示的场景通常被分成许多被称为“图元”的基本组件以便使3D图形处理操作能够更加容易实现。图元通常是简单多边形的形式,诸如三形。每个图元通常由组成该图元的顶点定义,并且每个顶点将与其代表在该顶点位置处的图元的特定的数据值相关联,例如,顶点的X和Y位置、深度(Z)值、颜色和透明度值等等。
[0003] 在图形处理系统中,使用为给定图元的每个顶点定义的数据实现图元设置阶段以便于确定用于该图元的多个函数,诸如表示图元的几何边缘的边缘函数以及被用于确定图元内任意特定点的深度值的深度函数。图元设置阶段还可确定其他函数,诸如插值函数,其中插值函数表示诸如颜色值之类的属性将在图元上变化的方式。
[0004] 图元设置阶段之后,图形图元可经过光栅化阶段,其中执行光栅化操作以便于确定被用于表示该图形图元的多个图形片元,光栅化操作确定那些图形片元中的每一个片元的X坐标和Y坐标。光栅化之后,图形片元经过渲染阶段,其中图形片元经历上色(coloring)操作、着色(shading)操作等等以便于生成用于显示在显示器上的输出。
[0005] 在最终显示中,每一个图形片元(数据元素)可对应于单一像素(图片元素),或者在片元和显示像素之间可能不是一对一对应的情况,例如,其中在显示最终图像之前,在被混合的图像上执行诸如缩小尺寸之类的特定形式的后处理。
[0006] 在3D图形处理中,在概念上渲染在所谓的“视锥体”内发生,实际上,视锥体是在观察者的位置前面的表示三维体积的盒子,在该三维体积内的图元可能需要被渲染以用于显示。视锥体被有效地定义为具有上、左、下和右边缘面(边缘面定义了表示视锥体边缘的视口)以及表示视锥体前平面和后平面的近深度面和远深度面(表示了目标能够显现的最近和最远的距离)。视口通常对应于显示屏幕的大小。
[0007] 通常希望只渲染实际上将要被看到的,S卩,在视锥体内的场景部分,并且实现它的一种已知技术是在执行上述图元设置、光栅化以及渲染处理之前,参照视锥体边缘面和深度面“裁剪”图元。通常这需要从几何上生成新图元以便于表示在裁剪处理之后保留在视锥体内的图元部分。然而,这样的裁剪处理相当复杂和费时,并且很难实施。如共同拥有的美国专利8,115,783所描述的,一种已知的试图和减少所需的裁剪量的技术被称为“保护带裁剪”,其中美国专利8,115,783的全部内容在此通过引用被并入本文中。在保护带裁剪中,边缘面(参照该边缘面出于裁剪的目的测试图元)被扩展为超过视锥体(在视锥体外部)。虽然在一些保护带布置中,保护带被设置为诸如已定义数量的像素或片元之类的有限值,但是在可替代的布置中,裁剪区域边缘面被有效地设置为“无限”,因此使用无限保护带。因此,这样的方法使几何处理阶段能够避免裁剪,而是随后当处理片元以保证在视锥体外部的片元不被显示时,附加步骤能够被采取。
[0008] 然而,尽管避免裁剪解决了与裁剪处理自身相关联的问题,但是缺乏裁剪的渲染增加了其自身的一组问题。在不进行裁剪的情况下,图元可能延伸到视锥体或保护带之外相当远的地方。在一些情况下,图元可能表现为无限。如果这种相当大的图元没有被裁剪,则在后续计算中它们能够导致数值精度问题或稳定性问题。因此,存在许多与执行裁剪相关联的问题。本技术图使裁剪更加有效。发明内容
[0009] 一个方面包括一种处理用于被显示的的图形图元的方法,该方法包括以下步骤:
[0010] 将每个图元分配至组成被显示的帧的多个图中的至少一个图块;
[0011] 对于每个图块,在图元存储器中存储图元列表,所述图元列表识别被分配至相应的图块的图元的顶点的顶点数据;以及
[0012] 分别针对每个图块执行图块处理,该图块处理包括:
[0013] (i)从图元存储器读取图块的图元列表
[0014] (ii)如果图元列表识别出满足裁剪条件的目标图元,则执行用于参照裁剪边界来裁剪该目标图元的裁剪操作以生成针对在图元列表中未被识别出的被裁剪的图元的至少一个附加顶点的附加顶点数据,相较于目标图元,被裁剪的图元延伸至裁剪边界以外更少的量;
[0015] (iii)使用在图元列表中被识别的顶点数据和由裁剪操作生成的附加顶点数据执行至少一个进一步的图形处理操作。
[0016] (iv)输出由用于图块的该至少一个进一步的图形处理操作生成的显示数据。
[0017] 基于图块的图形处理系统将被显示的帧分成多个图块,然后分别处理每个图块以生成表示将在对应的图块中显示的图形的显示数据。当所有图块已经被处理时,帧作为一个整体能够被显示。在基于图块的技术中,通常在被分配至每个图块的图元被存储在图元存储器中之前完成参照裁剪边界的图元裁剪。然而,裁剪能够导致使用附加顶点数据生成的附加的被裁剪的图元。因此,裁剪操作可能增加需要从图元存储器读取的数据量。由于相同的图元可出现在多个图块中,因此任何与在图元存储器中的被裁剪的图元相关联的附加数据均可能需要被多次读取,因此在图元存储器之前执行裁剪可能大大增加在图元存储器和用于执行每个图块的处理的处理系统的其他部分之间传送的总线流量,这可能会限制性能。
[0018] 为了解决这些问题,作为替代,用于减少图元延伸至超过裁剪边界的范围的处理操作可在已从图元存储器读取用于给定图块的图元列表之后在逐图块的基础上被执行。其后,任何由裁剪操作生成的被裁剪的图元能够被用于该图块的进一步的图形处理操作而无需任何附加顶点数据被存储在图元存储器中,避免了对于庞大图元存储器总线带宽的需要。因此,在比常规系统晚的阶段执行裁剪能够解决上面所讨论的一些问题。
[0019] 缓存存储器可被提供以用于存储由裁剪操作生成的附加顶点数据。相较于图元存储器,缓存存储器具有较低的访问延迟,因此相较于图元存储器缓存存储器能够被更有效率地访问。这是很有帮助的,这是因为多个图块可能需要相同的被裁剪的图元。当处理一个图块时已为被裁剪的图元生成附加顶点数据时,如果其他图块需要相同的数据,附加顶点数据能被存储在缓存中以供使用,以使得不必再次生成附加顶点数据。
[0020] 对于在图元列表中的每一个图元,顶点数据可定义图元的每个顶点的各种属性。例如,属性可包括表示每个顶点的X,y位置的顶点坐标以及其他顶点属性,诸如颜色、深度或不透明度等等。类似地,附加顶点数据可标识对应的被裁剪图元的附加顶点属性。在一些实施例中,附加顶点数据可使用绝对数据值来标识这些属性。然而,在其他实施例中,将被裁剪的图元的附加顶点数据通过用来从目标图元的原始顶点数据确定附加顶点数据的权重值来表示可能更有效率,其中被裁减的图元从该目标图元中获得。例如,附加顶点数据的一些不同属性可能与使用相同权重值的原始顶点数据对应的属性相关联,因此使用权重值能够帮助减少定义被裁剪的图元的顶点所需的数据量。在一些示例中,权重值可能以线性的方式与原始顶点数据相结合,而在其他示例中权重值可定义原始顶点数据的非线性变化以生成附加顶点数据。
[0021] 用于裁剪的裁剪边界可对应于视锥体的边界(例如,对应于显示屏的边缘)。或者,裁剪边界可以在视锥体的边界的外部(例如裁剪边界对应于视锥体外部的保护带的情况)。
[0022] 判定目标图元是否被裁剪的裁剪条件可具有各种形式。在一些情况下,任何延伸至超过裁剪边界的目标图元均可被裁剪。在其他情况下,可能存在进一步的标准,诸如目标图元的大小是否大于给定阈值(此条件将在下面参照本技术的第四至第六方面被更加详细的说明)。因此,裁剪并非对于每个穿过裁剪边界的图元来说都是必要的。
[0023] 至少一个进一步的图形处理操作可包括,例如,图元设置操作或光栅化操作。
[0024] 用于参照裁剪边界裁剪目标图元的裁剪操作可采用各种形式。在一个示例中,目标图元可被精确地裁剪至裁剪边界以便使被裁剪的图元对应于在裁剪边界内部的目标图元的区域(“精确裁剪”)。在另一示例中,“不精确的裁剪”可被执行以便使被裁剪的图元不精确地对应于在裁剪边界内部的目标图元的区域,并且被裁减的图元可包括在裁剪边界外部的部分(参见下文本技术的第七至第九方面的讨论)。此外,裁剪操作可能包括“伪裁剪”操作,其中被裁剪的图元被用于后续图形处理的一些部分(例如,深度函数判定),而图形处理的其他部分使用原始目标图元(参见下面所讨论的第十至第十二方面)。附加顶点数据能够被用于像裁剪发生一样创建/仿真新图元。
[0025] 第二方面包括用于处理用于将被显示的帧的图形图元的装置,该装置包括:
[0026] 分配电路,该分配电路被配置用于将每个图元分配至组成将被显示的帧的多个图块中的至少一个图块;
[0027] 图元存储器,该图元存储器被配置用于为每个图块存储图元列表,该图元列表识别被分配至相应图块的图元的顶点的顶点数据;以及
[0028] 图块处理管线,该图块处理管线被配置用于分别为每个图块执行图块处理,该图块处理包括:
[0029] (i)从图元存储器读取图块的图元列表;
[0030] (ii)如果图元列表识别满足裁剪条件的目标图元,则执行用于参照裁剪边界来裁剪目标图元的裁剪操作以生成针对在图元列表中未识别出的被裁剪的图元的至少一个附加顶点的附加顶点数据,相较于目标图元,被裁剪的图元延伸至裁剪边界以外更少的量;
[0031] (iii)使用在图元列表中识别出的顶点数据和由裁剪操作生成的附加顶点数据执行至少一个进一步的图形处理操作;以及
[0032] (iv)输出由针对图块的至少一个图形处理操作生成的显示数据。
[0033] 第三方面提供了用于处理将被显示的帧的图形图元的装置,该装置包括:
[0034] 分配装置,该分配装置用于将每一个图元分配至组成被显示的帧的多个图块中的至少一个图块;
[0035] 图元存储装置,该图元存储装置用于为每个图块存储图元列表,该图元列表识别被分配至相应图块的图元的顶点的顶点数据;以及
[0036] 图块处理装置,该图块处理装置用于分别对每个图块执行图块处理,该图块处理包括:
[0037] (i)从图元存储装置读取图块的图元列表;
[0038] (ii)如果图元列表识别出满足裁剪条件的目标图元,则执行用于参照裁剪边界来裁剪目标图元的裁剪操作以生成针对在图元列表中未识别出的被裁剪的图元的至少一个附加顶点的附加顶点数据,相较于目标图元,被裁剪的图元延伸至超过裁剪边界以外更少的量;
[0039] (iii)使用在图元列表中识别出的顶点数据和由裁剪操作生成的附加顶点数据执行至少一个进一步的图形处理操作;以及
[0040] (iii)输出由针对图块的至少一个进一步的图形处理操作生成的显示数据。
[0041] 第四方面提供了一种处理用于显示的图形图元的方法,其中图元具有被表示为浮点格式的顶点坐标,该方法包括以下步骤:
[0042] 基于将被处理的目标图元的顶点坐标,确定表明该目标图元尺寸的图元尺寸参数;
[0043] 如果图元尺寸参数超过了预定阈值,则参照裁剪边界在目标图元上执行裁剪操作以生成至少一个被裁剪的图元,其中,相较于目标图元,该被裁剪的图元延伸至裁剪边界以外更少的量,并且使用至少一个被裁剪的图元执行至少一个图形处理操作;以及
[0044] 如果图元尺寸参数没有超过预定阈值,则省略对目标图元的裁剪操作,并且使用该目标图元执行至少一个图形处理操作。
[0045] 如上面所讨论的,执行裁剪可能是复杂、缓慢和难以实施的,因此,一些“无裁剪”的系统完全避免了裁剪。然而,无裁剪渲染本身会产生问题,这是因为图元的顶点坐标(因此一般来说图元内的位置)通常被表示为浮点格式。这意味着当图元变得非常大时,浮点格式不再具有足够的精度来表示在图元的全部范围内细微变化的位置坐标的值。这可能导致诸如纹理化操作之类的后续操作产生由于缺乏用于表示位置坐标的浮点精度而例如丢失分辨率的问题。
[0046] 然而,本技术认识到了仅对于非常大的图元出现由失去浮点精度导致的问题。较小的图元不会导致浮点精度问题或稳定性问题,这是由于表示较小的图元的极限的位置所需的数值范围能够在浮点格式内适用,并且仍保留足够的位空间来表示坐标的细微变化。通过确定表明目标图元尺寸的图元尺寸参数,并且基于图元尺寸参数是否超过预定阈值来判定是否执行裁剪操作,许多较小的图元能够避免与裁剪处理相关联的处理复杂度和开销(对于较小图元,原始目标图元能够被用于后续图形处理而没有浮点精度误差的险),同时依然可以针对较大的图元执行裁剪操作。这将大大降低所需的裁剪量,并因此促进了总吞吐量。
[0047] 有许多参数能够被用作确定是否执行裁剪操作的图元尺寸参数。一种简单的方法可使用目标图元的顶点坐标之一的幅度作为图元尺寸参数(特别是顶点坐标幅度中的最大幅度)。或者,顶点坐标的更加复杂的函数可被用作图元尺寸参数。
[0048] 预定阈值可被选择成具有使得任何具有未超过阈值的图元尺寸的图元能够被后续图形处理操作处理而不产生由损失浮点精度导致的误差的值。阈值的具体值将取决于图形处理使用哪种浮点表示法。例如,已经发现对于单精度浮点值来说,如果未裁剪的图元沿着顶点坐标的坐标系的任意一个轴延伸至不超过32K(215)像素,则该未裁剪的图元不会导致浮点精度的损失。因此,通过设定使得长于215像素的图元被认为具有超过阈值的尺寸的阈值,裁剪可被限制于具有浮点精度损失风险的较大三角形。还可以使用216像素阈值,这是由于这可能更为方便一一216像素可能是要支持的最大所需分辨率,因此相较于屏幕减半的特殊情况,向顶点逻辑添加一个额外位可能更加容易。现实内容和基准的检验发现在实践中99%以上的图元小于此阈值,因此即使它们跨过了裁剪边界也不需要裁剪。因此,即使针对剩下的1%的图元的裁剪操作需要大量的处理,这也不会显著影响图形处理管线的总吞吐量。
[0049] 尽管尺寸指示符可以表明是否应该被裁剪的三角形的尺寸,但是如果具有大尺寸指示符的三角形的边缘被具有较小尺寸指示符的较小的图元共享以便不会被裁减,则具有大尺寸指示符的三角形的边缘可以不被裁剪。这保证了对所有共享边缘的图元平等地裁剪那些共享边缘。
[0050] 至于第一至第三方面,裁剪边界可对应于视锥体的边界,或者可以是视锥体外部的另一边界,诸如保护带的边界。用于判定图元尺寸的预定阈值可被设置为对应于在裁剪边界之外的阈值边界,以使得延伸至阈值边界以外的图元被裁剪并且完全置于阈值边界内的图元保持不被裁剪,而任何跨过阈值边界的图元参照裁剪边界被裁剪而不是参照对应于尺寸阈值的阈值边界。
[0051] 至于第一至第三方面,如上面所讨论的,裁剪操作可包括精确裁剪、不精确裁剪或伪裁剪。此外,任何生成的被裁剪的图元可使用用于从原始目标图元的顶点数据确定被裁剪的图元的顶点数据(例如,顶点坐标或其他诸如颜色或深度的属性)的权重值来表示。然后,任何后续图形处理操作(诸如,图形设置操作或光栅化操作)能够对目标图元的顶点数据应用权重值以确定被裁剪的图元的相应的值。
[0052] 第五方面提供了用来处理用于显示的图形图元的装置,其中图元具有被表示为浮点格式的顶点坐标,
[0053] 该装置包括处理电路,处理电路被配置成:
[0054] (i)基于待处理的目标图元的顶点坐标确定表明该目标图元的尺寸的图元尺寸参数;
[0055] (ii)如果图元尺寸参数超过预定阈值,则在目标图元上参照裁剪边界执行裁剪操作以生成至少一个被裁剪的图元,其中相较于目标图元,该被裁减的图元延伸至裁剪边界以外更少的量,并且使用至少一个被裁剪的图元执行至少一个图形处理操作;以及
[0056] (iii)如果图元尺寸参数未超过预定阈值,则对目标图元省略裁剪操作并且使用目标图元以执行至少一个图形处理操作。
[0057] 第六方面提供了用来处理用于显示的图形图元的装置,其中图元具有以浮点格式表示的顶点坐标,
[0058] 该装置包括处理电路,处理电路用于:
[0059] (i)基于待处理的目标图元的顶点坐标确定表明该目标图元的尺寸的图元尺寸参数;
[0060] (ii)如果图元尺寸参数超过预定阈值,则在目标图元上参照裁剪边界执行裁剪操作以生成至少一个被裁剪的图元,其中相较于目标图元,该被裁减的图元延伸至裁剪边界以外更少的量,并且使用至少一个被裁剪的图元执行至少一个图形处理操作;以及
[0061] (iii)如果图元尺寸参数未超过预定阈值,则对目标图元省略裁剪操作并且使用目标图元以执行至少一个图形处理操作。
[0062] 第四至第六方面的特征可以与第一至第三方面的特征相结合以提供基于图块的处理系统,其中在读取给定图块的图元列表之后,确定在图元列表中的目标图元是否具有超过预定阈值的尺寸参数,如果是这样,则在该目标图元上执行裁剪,而在图元列表中具有未超过阈值的尺寸的目标图元则不被裁剪。
[0063] 或者,第四、第五和第六方面可独立于第一、第二和第三方面而被使用。例如,用于裁剪的尺寸阈值可被提供在立即模式渲染器而不是基于图块的系统中,或者被提供在图元被分配至具体的图块之前执行裁剪操作的系统中,其中对于该系统,其后在存储在图元存储器中的图元列表识别出被裁剪的图元。
[0064] 第七方面提供了一种处理用于显示的图形图元的方法,其中图元具有以浮点格式表示的顶点坐标,该方法包括以下步骤:
[0065] 参照裁剪边界在目标图元上执行裁剪操作以生成对应于该目标图元的单裁剪图元,其中相较于目标图元,该单裁剪图元延伸至目标图元以外更少的量;以及
[0066] 使用被裁剪的图元执行至少一个图形处理操作;
[0067] 其中如果裁剪边界内的目标图元的内部无法仅使用一个图元来表示,则裁剪操作生成包括对应于所述图标图元的内部的内部区域和超过裁剪边界的外部区域的单裁剪图J L.ο
[0068] 按照惯例,如果参照裁剪边界裁剪图元,则一个或多个被裁剪的图元被生成,其中该被生成的图元精确地对应于处于裁剪边界内的图元的内部。然而,这会增加所需图元的数量。如果无法仅使用一个图元来表示目标图元的内部,则多个图元可被生成,并且所生成的每个附加的图元将具有附加顶点和相关联的顶点数据。这会需要大量的存储。
[0069] 本技术认识到将图元精确地裁剪至裁剪边界是非必要的。通过允许被裁剪的图元的一些部分延伸至超过裁剪边界,通常可以生成对应于目标图元的单裁剪图元,因而避免了生成多图元的需要。因此,由裁剪操作生成的附加顶点数据量能够被减少,使得处理和存储器的使用更有效率。
[0070] 裁剪操作可保证所生成的单裁剪图元完全处于第二边界之内,其中第二边界在裁剪边界外部。第二边界可以是这样的:任何处于第二边界内部的图元能够由后续图形处理进行处理而没有由于浮点精度的损失而导致的误差。例如,第二边界可对应于上文针对第四至第六方面提到的32K像素边界。只要被裁剪的图元被裁剪至第二边界内,后续处理就将产生正确的结果,并且这对于裁剪如何被执行将允许更大的自由度,以便于单裁剪图元能够被生成以使得裁剪成本更小。
[0071] 此外,由裁剪操作生成的被裁剪的图元的任何附加顶点数据均可使用用于从目标图元的原始顶点数据确定附加顶点数据的权重值来表示。从目标图元生成单裁剪图元同时该单裁剪图元仍然处于第二边界之内或满足一些其他标准的方式可能不止一种。如果有多个可能被选为被裁剪的图元的候选图元,则裁剪操作可选择单裁剪图元以便减少与处理用于被裁剪的图元的权重值相关联的存储和处理开销。因此,如果特定的被裁剪的图元能够帮助减少所需的存储量和所需的用于处理表示被裁剪的图元的附加顶点数据的权重值的处理量,则此图元能够优先于其他图元被选择。
[0072] 第七方面可被用于立即模式渲染系统中。然而,第七方面可能对基于图块的渲染系统尤其有用,这是因为在基于图块的渲染系统中对于不同的图块,同一图元可能需要被处理多次。通过减少附加图元的数量,可以使基于图块的处理更加有效率。
[0073] 第八方面提供了用来处理用于显示的图形图元的装置,其中图元具有被表示为浮点格式的顶点坐标,
[0074] 该装置包括处理电路,处理电路被配置成:
[0075] (i)参照裁剪边界在目标图元上执行裁剪操作以生成对应于该目标图元的单裁剪图元,其中相较于目标图元,单裁剪图元延伸至裁剪边界以外更少的量;以及
[0076] (ii)使用被裁剪的图元执行至少一个图形处理操作;
[0077] 其中如果不能仅使用一个图元来表示处于裁剪边界内的目标图元的内部,则裁剪操作生成包括对应于所述目标图元的内部的内部区域和超过裁剪边界的外部区域的单裁剪图元。
[0078] 第九方面提供了用来处理用于显示的图形图元的装置,其中图元具有被表示为浮点格式的顶点坐标,
[0079] 包括处理装置的该电路用于:
[0080] (i)参照裁剪边界在目标图元上执行裁剪操作以生成对应于该目标图元的单裁剪图元,其中相较于目标图元,单裁剪图元延伸至裁剪边界以外更少的量;以及
[0081] (ii)使用被裁剪的图元执行至少一个图形处理操作;
[0082] 其中,如果不能仅使用一个图元来表示处于裁剪边界内的目标图元的内部,则裁剪操作生成包括对应于所述目标图元的内部的内部区域和超过裁剪边界的外部区域的单裁剪图元。
[0083] 如果需要,第七至第九方面可与第一至第三方面相结合,使得当在基于图块的混合系统中在从图元存储器读取给定图块的图元列表之后的阶段执行裁剪时,裁剪操作可能是针对第七至第九方面所讨论的不精确裁剪。类似地,第七至第九方面可与第四至第六方面相结合以提供一种系统,其中基于图元尺寸作出是否执行裁剪操作的决定,并且如果需要裁剪操作,则如第七至第九方面中所述对于裁剪边界执行不精确的裁剪。
[0084] 第十方面提供了处理用于显示的图形图元的方法,其中图元具有被表示为浮点格式的顶点坐标,该方法包括以下步骤:
[0085] 执行图元设置操作,该图元设置操作包括用于判断哪些位置在目标图元边缘的内部或外部的边缘判定,以及用来确定用于确定目标图元内的深度值的深度函数的深度函数判定;以及
[0086] 使用目标图元、边缘判定和深度函数执行进一步的图形处理操作;
[0087] 其中如果目标图元满足裁剪条件,则使用被裁剪的图元来执行深度函数判定,其中相较于目标图元,被裁剪的图元延伸至裁剪边界以外更少的量,并且所述边缘判定是使用不经过裁剪的目标图元来执行的。
[0088] 图形图元的处理通常包括图元设置操作,其确定图元的各种属性。图元设置通常可包括用于确定哪些位置在给定图元的边缘内部或外部的边缘判定。在一些示例中,边缘判定可确定用于在数学上表示图元的边缘的边缘函数,其后边缘函数能够被用于确定哪些位置处于图元边缘内部或外部。在其他情况中,边缘判定可执行与图元的顶点坐标相联系的向量和与感兴趣的点的坐标之一相联系的向量的交叉乘积,然后交叉乘积的符号可表明感兴趣的点是否处于图元的内部或外部。图元设置操作还可包括深度函数判定,其中深度函数判定用来确定用于图元内给定点处的深度值的深度函数。
[0089] 本技术认识到上面所讨论的浮点精度问题通常在深度函数判定期间发生而不是在边缘判定期间发生。因此,为了简化处理,如果由于目标图元满足裁剪条件而需要进行裁剪,则深度函数可通过使用由裁剪操作生成的被裁剪的图元来确定,而边缘判定仍可基于原始目标图元而不经过裁剪。然后,进一步的图形处理操作可使用原始目标图元(未被裁剪的)、确定的边缘函数或其他表明点是否处于图元的内部或外部的数据以及深度函数。这减少了边缘判定的复杂度。图元的许多其他属性还可基于原始目标图元来确定,因而生成用于计算这些图元设置函数的附加图元不是必要的。对于深度函数,临时裁剪的图元能够被生成,但是处理的其他部分并不需要临时裁剪的图元。因此,该技术使得为深度函数解决了与浮点向量坐标的使用相关联的数值问题而没有影响图形处理的其他部分的与裁剪相关联的增加的复杂度(例如,附加的图元或附加的顶点)。
[0090] 尽管精确裁剪能够被执行,但是如上面第七至第九方面所讨论的,执行不精确的裁剪以便于仅仅需要单裁剪图元可能更有效率。对于被裁剪的图元仅被用于深度函数计算而不用于图形处理的其他部分的情况,如果被裁剪的图元有可能被选择,那么相较于处于裁剪边界内的目标图元的内部,裁剪图元具有更小的区域,而不会对后续图形处理的结果产生不利影响。这能够在选择被裁剪的图元时提供更大的自由度,这对于减少裁剪的成本可能是有用的。
[0091] 第十一方面提供了用来处理用于显示的图形图元的装置,其中图元具有被表示为浮点格式的顶点坐标,该装置包括:
[0092] 图元设置电路,该图元设置电路被配置成执行图元设置操作,其中图元设置操作包括用来确定哪些位置在目标图元边缘的内部或外部的边缘判定以及深度函数判定,其中深度函数判定被用来确定用于确定目标图元内的深度值的深度函数;以及
[0093] 处理电路,该处理电路被配置成使用目标图元、边缘判定和深度函数执行进一步的图形处理操作;
[0094] 其中如果目标图元满足裁剪条件,则图元设置电路被配置成使用被裁剪的图元执行深度函数判定以及使用未经裁剪的目标图元执行边缘函数判定,其中相较于目标图元,被裁剪的图元延伸至裁剪边界以外更少的量。
[0095] 第十二方面提供了用来处理用于显示的图形图元的装置,其中图元具有被表示为浮点格式的顶点坐标,该装置包括:
[0096] 图元设置装置,该图元设置装置用于执行图元设置操作,其中图元设置操作包括用来确定哪些位置在目标图元边缘的内部或外部的边缘判定和深度函数判定,其中深度函数判定用来确定用于确定目标图元内的深度值的深度函数;以及
[0097] 处理装置,该处理装置使用目标图元、边缘判定和深度函数以执行进一步的图形处理操作;
[0098] 其中如果目标满足裁剪条件,则图元设置装置被配置成使用被裁剪的图元执行深度函数判定和使用未经裁剪的目标图元执行边缘判定,其中相较于目标图元,被裁剪的图元延伸至裁剪边界以外更少的量。
[0099] 第十至第十二方面可与前文的任何方面相结合。
[0100] 在一些示例中,方法可使用被存储在计算机可读存储介质上的计算机程序来实施。当计算机程序由计算机执行时,其可控制计算机以执行处理图形图元的方法。附图说明
[0101] 通过下面的示例实施例的详细描述并参考附图,本技术的其他方面、特征和优势将是显而易见的。
[0102] 图1是示出了处理用于显示的图形图元的流程图
[0103] 图2A和图2B示意性地示出了用于执行图形处理的图形处理装置的一部分;
[0104]图3示出了视锥体和在视锥体外部的能够对其执行裁剪的保护带的示例;
[0105] 图4示出了用于参照裁剪边界对图元进行裁剪的裁剪操作的示例;
[0106] 图5示出了对裁剪边界精确裁剪图元的示例;
[0107]图6示出了生成部分在裁剪边界外部的被裁剪的图元的不精确裁剪的示例;
[0108] 图7示出了出于深度函数计算的目的对图元进行“伪裁剪”并对其他函数使用原始未裁剪图元的示例;
[0109]图8示出了能够被用于执行本技术的计算机系统的示例。

具体实施方式

[0110] 图1是示出了根据一个示例由图形处理管线执行的步骤的流程图。图2A和图2B示出了图形处理管线的部分的示例。在步骤2中,几何输入被接收。几何输入识别出多个在帧中待显示的图形图元。每一个图元对应于简单多边形(诸如三角形或四边形)。对于每一个图元,几何输入识别出图元的顶点和一些顶点数据,该顶点数据表示每个顶点位置处的各种属性,例如,顶点的X和y坐标、深度⑵值和颜色、阴影或透明度值之类的。在步骤4中,如本领域所知的,顶点阴影被执行以将各种转换应用于这些图元(或者更具体地,应用于定义图元的顶点)以生成顶点的被修改的属性。顶点阴影步骤还可被称为转换/光照操作。
[0111] 在步骤6中,图元和相关联的顶点数据经历图块步骤,其中每个图元被分配至至少一个组成待显示的帧的图块。基于每个图元的顶点位置,可以做出每个图元是否有可能与特定图块重叠的预估,并且如果是这样的,则该图元被分配至该图块。如果一些图元被预期穿过多个图块,则它们可被分配至不止一个图块。然后,定义对应于每个图块的图元的图元列表被存储在图元存储器中。图元列表可包括识别每个图元的顶点数据的任何数据结构(例如,图元列表不一定需要被实现为列表数据结构)。
[0112] 然后,每个图块的图元列表被分别处理以生成对应的图块的输出数据。在一些示例中,一次可能处理单个图块。在其他示例中,图形处理管线可具有多个并行处理路径,以便使多个图块能够被一次处理,但是每个图块依然是与其他图块分开处理的。因此,在步骤8中,待处理的下一图块的图元列表从图元存储器被读取。
[0113] 在步骤10中,对当前被处理的图块执行裁剪处理。如图3中所示,表示3维体积的视锥体11可被定义,其中在该3维体积内的图元可能需要被渲染用于显示。锥体11由上、左、下和右边缘面以及近深度面和远深度面来界定,其中边缘面定义了通常对应于图形将在其中被渲染的显示屏幕的尺寸的视口,对应于视锥体11的前面和后面的近深度面和远深度面表示当图元被显示时,该图元能够出现的距离观察者的最近距离和最远距离。由于处于视锥体外部的图元最终将不会被显示,可以参照视锥体11对图元进行裁剪以减少所需的处理量。一些标准(诸如,OpenGL和DirectX)需要执行这样的裁剪。然而,实现裁剪处理可能是缓慢和困难的,这是由于裁剪可能需要生成附加图元。因此,一些系统可通过提供如图3中所示的视锥体11外部的保护带13来选择减少裁剪量。通过参照保护带13而不是视锥体11来裁剪图元,裁剪量可被减少。
[0114] 因此,参照裁剪边界进行的图元的裁剪可在步骤10中被执行,其中裁剪边界可对应于视锥体11或保护带13或另一边界。如下面将要讨论的,该裁剪能够以许多方式来执行。在图1的示例中,在步骤8中的图块的图元列表已从图元存储器被读取之后,每个图块的裁剪操作10被分别执行。这意味着不需要如对于在图块步骤6之前执行裁减步骤10的系统的情况那样从图元存储器读取任何在裁剪期间生成的附加顶点数据。因此,在步骤8之后执行裁剪处理10有助于减少所需的图元存储器带宽量。
[0115] 在步骤12中,基于图元列表中的图元和在裁剪操作10期间生成的附加顶点数据执行图元设置操作。图元设置操作使用为当前被处理的图块的每个图元定义的顶点数据以确定该图元的多个属性。这些属性可包括用来确定图元边缘的位置的边缘判定,用来确定图元的深度值的变化的深度函数判定和表示图元的属性(诸如,颜色值、阴影值或透明度/不透明度值)的变化的插值函数。用来执行图元设置操作的技术是本领域已知的技术。这些技术能够被修改以将裁剪步骤10作为预备步骤合并在图元设置操作12中。因此,在裁减步骤10生成的任何附加图元也经历图元设置操作12。例如,裁剪步骤10可生成被裁剪的图元的附加顶点,该附加顶点可通过使用权重来表示,其中权重确定如何从图元列表中的图元的原始顶点数据确定所对应的被裁剪的图元的顶点数据。图元设置步骤12可在执行图元的各种函数的判定之前通过使用加权属性值对来自图元列表的顶点数据应用权重。此向顶点值应用权重的技术类似于在插值函数中实际插入一些顶点属性,从而可能将执行插入的处理单元重用到权重计算上。
[0116] 在对当前图块的图元设置完成之后,在步骤14中执行光栅化操作以将每个图元转换为图形片元。任何已知的光栅化技术均可被使用。例如,每个图形片元可对应于待显示的像素或小像素群。每个片元可与指定片元位置的X,y坐标相关联。
[0117] 在步骤16中,初期深度测试步骤被执行。深度测试是用于使用在步骤12中的图元设置操作期间计算的深度函数来确定由光栅化操作输出的每个图形片元的深度值的操作。对于图块的每个X,y位置,Z缓冲值可被维护以跟踪距离观察者最近的片元。参照Z缓冲值,深度测试步骤16确定每个片元是否将被显示或将被另一更加靠近观察者的片元阻挡。如果存在比Z缓冲值当前所指的片元更加靠近的片元,则Z缓冲值被更新为该更加靠近的片元。一般来说,如果该片元比老片元更加靠近,则深度函数被设置为通过,但是深度函数可具有任何比较功能,从而它可以是相反的,尽管这种情况不太常见。
[0118] 在步骤18中,片元阴影操作被执行以确定每个片元的各种属性。例如,片元着色可包括上色操作、着色操作、透明度操作和其他用于确定被初期深度测试步骤16确定为显示的每个片元的外观的操作。一个或多个着色程序可被调用以执行每个图形片元所需的操作。从片元阴影步骤输出的片元经历后期深度测试步骤20,其中后期深度测试步骤20类似于步骤16中的初期深度测试操作。例如,在步骤18中的片元阴影操作可能已经确定一些片元是半透明的,从而可能必须将该片元的属性与之前所绘的片元的属性混合。因此,后期深度测试步骤20能够确定哪个片元是下一最靠近观察者的片元。在步骤22中,混合操作被执行以将最靠近的片元的属性与在该片元之后的一个或多个片元混合。
[0119] 在步骤24中,被处理的片元被输出至帧缓冲器的对应的图块。帧缓冲器存储要输出到显示器的显示数据。帧缓冲器具有对应于每个图块的存储区域。每当随着步骤8至22完成图块处理时,该图块的输出数据被置于帧缓冲器的对应区域。步骤26确定当前帧的所有图块是否已被处理。如果还未被处理,则方法返回至步骤8以处理另一图块。当最后一个图块已被处理时,方法进行至步骤28,其中帧缓冲器的内容被输出至显示器。
[0120] 图2A和图2B示出了用于执行图1中的方法的图形处理管线30的部分。例如,管线30可以是图形处理单元(GPU)的一部分。图2A示出了用于执行步骤2至6的图形处理管线30的一部分,其中这些步骤通常对整个帧共同执行。几何缓冲器32存储定义了每个图元的顶点数据的几何数据。几何数据被输入至顶点着色器管线34以执行顶点着色步骤4。顶点着色器管线34转换图元的顶点数据,例如实现位置转换或顶点光照转换。其后,镶图单元36将图元的顶点数据装入对应的图块中并且生成每个图块的图元列表,该图元列表识别对应于图块的图元的顶点数据。每个图块的图元列表被存储在图元存储器38中。图元的每个顶点的顶点数据可包括顶点位置处的X,I坐标、深度值、颜色或透明度属性以及顶点的其他属性。
[0121] 图2B示出了用于单独为每个图块执行图块处理(图1中的步骤8至28)的图形处理管线30的一部分。图元设置单元40被提供以读取来自图元存储器38的当前图块的图元列表。图元设置单元40是执行步骤10中的X,y裁剪操作以及图元设置操作12的被修改的图元设置单元。这不同于已有的系统,在已有的系统中,在图元列表被存储在图元存储器38之前,执行参照视口或保护带的X,y裁剪。由图元设置单元40执行的裁剪操作可生成附加顶点数据,其中该附加顶点数据定义了未在原始图元列表中的一个或多个被裁剪的图元的附加顶点。附加顶点数据伴随来自图元列表的原始顶点数据经历图元设置操作12。图元设置单元40可将在裁剪操作10中生成的附加顶点数据存储在缓存44中。如果另一图块需要相同的附加顶点数据,则相较于再次从图元列表生成附加顶点数据,从缓存44访问会快得多。
[0122] 当图元设置单元40已经完成裁剪和设置操作时,然后图元的顶点数据被传送至光栅器42,其中光栅器执行光栅化操作14。光栅器42的输出被传送至Z模板单元44,其中Z模板单元44执行初期深度测试步骤16。片元着色器管线46在Z模板单元44的输出上执行片元着色操作18,然后,被着色的片元被传回至Z模板单元44以执行后期深度测试步骤20。其后,后期深度测试的输出被提供到混合器单元47,其中混合器单元47执行任何所需的混合操作22。然后,混合后的输出被写入帧缓冲器48的相应的图块中。当所有图块均完成时,用于当前帧的帧缓冲器48的内容被输出至显示器。控制电路50被提供以用于控制图形处理管线30的各种单元。
[0123] 图1中步骤10中的裁剪操作可通过不同的方式被执行。通过任何已知的现有技术可执行参照视锥体11的近深度面和远深度面的图元的深度裁剪。下面的详细描述将说明参照由视锥体11的上、下、左和右平面组成的视口或另一个裁剪边界(诸如,保护带13)执行x,y裁剪的各种示例。
[0124] 图5示出了裁剪的示例。在图5的左上部分中,图元60被示为延伸至超过视口 65的边缘(裁剪边界)。图元60处于视口之外的部分最终将不会被显示。为了减少光栅化、深度测试、片元着色和混合步骤必须生成和处理的片元量,可通过将图元60替换为被裁剪的图元68将图元60精确地参照视口 65进行裁剪,其中被裁剪的图元68精确地对应于原始图元60在视口 65内的部分(参见图5的右上部分)。在此示例中,处于视口 65内的部分不能用单一图元(此示例中的三角形)来表示,因而需要多个被裁剪的图元68来匹配原始图元60在视口 65内的部分。这意味着需要多个附加顶点70来表示新的被裁剪的图元68,其中每个顶点数据具有表示顶点位置、深度或颜色值等等的相应顶点数据。由于许多图元可能均需要裁剪,所以裁剪可能导致大量新顶点数据的产生。
[0125] 如图5的下半部分所示,通过使用权重来表示每个新顶点,附加顶点信息量能够在一定程度上被减少,其中权重从原始图元60的原始顶点72的属性确定对应的新顶点70的属性。对于三角形图元,可使用重心坐标系,其中重心坐标系参照轴i,j,k定义了权重,轴i,j,k穿过三角形对面的顶点、与三角形的边缘之一成直角延伸(参见图5左上部分所绘制的轴i,j,k)。对于每个轴,权重从在三角形边缘处的O值扩大到在三角形相对的角的I值。因此,如图5的下半部分所示,通过使用A = (1,0,0), B = (0,1,0)和C= (0,0,1)的坐标(i,j,k)来表示三角形的顶点A,B,C的权重。
[0126] 然后,通过使用关于原始顶点72(A,B,C)的顶点数据的权重可表示附加顶点70(D,E,F)的相对应的顶点数据。在此示例中,附加顶点D使用权重(0.4,0,0.6)来表示,该权重表明顶点D的x,y坐标能够被确定为0.4*A+0*B+0.6*C(其中,A、B和C表示所对应的顶点A和C的坐标)。附加顶点E、F的位置可以类似的方式从顶点A、B、C的位置被导出。通过使用权重和原始顶点的对应属性,也可以类似的方式生成除了顶点坐标以外的属性。一些属性组可共享权重的公用集合,该公用集合能够被用于从原始顶点的属性导出各个对应的属性。其他属性可具有其自身的专用权重,其中专用权重被定义以用于从原始顶点72的属性确定附加顶点70的所对应的属性。此外,尽管上面已经说明了通过使用原始顶点数据的线性组合从原始顶点数据确定附加顶点数据的示例,在其他示例中该关系可以是非线性的。
[0127] 以这种方式使用权重来表示附加顶点数据能够在一定程度上减少裁剪中生成的附加数据量。然而,大量新信息仍有可能被生成。通过在图元设置单元40中分别针对每个图块执行裁剪,而不是在图元列表被存储在图元存储器38之前执行裁剪,图元存储器38中的数据量能够被大大减少。
[0128] 不过,在可能的情况下避免裁剪是有帮助的。申请人已经注意到相比于对较小图元执行裁剪,对较大的图元执行裁剪通常更为重要。一般来说这是由于每个顶点的顶点数据和坐标被表示为浮点格式。浮点数表示法通过使用有效数字来表示数值,其表示数值的有效位和指数,其中指数表示有效数字中的小数点(二进制小数点)的位置。这可以允许用有限的数位来表示比定点表示法更宽的数值范围。然而,此附加的数值范围是以损失一些精度为代价实现的。如果需要表示很大范围的值,则不再可能以这种细粒度表示连续数值之间的增量。
[0129] 对于一些相当大的图元(其不但贯穿视锥体12并且远远延伸至视锥体12之外),表示顶点位置的浮点数可能会非常大,但是仍然有必要表示出图元在视锥体12内的部分的较小的数值。如果需要被表示的坐标范围变得足够宽,则可能会损失一些精度,从而可能降低图元内的位置能够被识别的分辨率。这会导致一些问题。例如,当执行片元的纹理化时,纹理图案可能以相当高的分辨率被定义,但是对于较大的图元,该图元内纹理图案能够被应用的位置(仅能够以较低的分辨率被表示。在此情况中,当渲染纹理时,可能存在一些明显的分辨率损失。因此,对于较大的图元可能发生对于较小的图元不会发生的各种数值精度和稳定性问题。
[0130] 因此,步骤10的裁剪处理可像图4中的示例那样执行。在步骤100中,可为目标图元确定图元尺寸参数。图元尺寸参数可以是基于图元顶点的X,y坐标确定的任何参数,该参数提供了该图元整体尺寸的指示。例如,图元尺寸参数可以仅仅是图元顶点的X,y坐标中最大的一个。或者,还可确定更加复杂的尺寸指示。
[0131] 在步骤100中确定图元的图元尺寸参数是否大于预定阈值。如果尺寸参数不大于阈值,则在步骤102中,图元的裁剪被跳过或省略,然后在步骤104中,进一步的图形处理使用原始图元的顶点数据。另一方面,如果在步骤100中图元尺寸参数大于阈值,则在步骤106中,参照裁剪边界执行图元的裁剪以生成一个或多个被裁剪的图元的附加顶点数据,然后在步骤108中,进一步的图形处理使用(一个或多个)被裁剪的图元而不是原始图元。在步骤104、108中的进一步的图形处理可包括,例如:图元设置、光栅化、深度测试、片元着色以及混合步骤12-22。
[0132] 因此,裁剪操作仅针对较大的图元而非较小的图元被执行。通过将步骤100的阈值设置为适当的值,能够保证裁剪针对较大的图元被执行,其中对于较大的图元,在浮点处理中会出现稳定性和精度问题。在实践中已经发现对于单精度浮点表示法,沿任何轴延伸少于32K(215)像素的图元通常不会引起浮点精度损失,从而通过设置阈值使得沿坐标系的轴延伸少于32Κ像素的图元被保留为未裁剪,这些数值问题能够被避免,同时减少需要执行的裁剪量。对于现实中的基准,已经发现超过99%的图元小于此32Κ阈值,所以即便它们穿过了裁剪边界,这些图元也不需要被裁剪。余下的1%的图元能够被裁剪,即便这需要大量的处理或附加顶点数据,这也不会明显地影响图形处理系统的整体性能。
[0133] 在一些实施例中,尽管图元具有大于阈值的尺寸,步骤106也可仅裁剪该图元不与另一尺寸小于阈值尺寸的图元共享的边缘。这保证了为共享该边缘的所有图元平等地裁剪该共享边缘。
[0134] 图5示出了图元60被精确地参照裁剪边界65进行裁剪的技术。然而,这不是必须的,并且在其他示例中可以不同的方式裁剪图元。图6示出了参照裁剪边界65的不精确裁剪的示例。在图6中的A部分示出了原始图元60。作为对比,图6的B部分示出了以与图5相似的方式参照裁剪边界65进行精确裁剪以生成多个被裁剪的图元68。然而,参照裁剪边界65精确地裁剪图元可能需要生成不止一个新图元68,这增加了待处理的顶点数据量。
[0135] 为了减少附加数据量,作为替代,裁剪能够像图6中的C部分或D部分所示的那样被执行,以便于仅生成单裁剪图元110。如果不能仅使用一个图元来表示原始图元60在裁剪边界65内的部分,则作为替代包括在裁剪边界65之外的部分的单一图元110被生成。通过允许不精确裁剪,生成多个被裁剪的图元65将不是必要的,并且作为替代能够生成需要更少附加顶点数据的单裁剪图元110。如上面所讨论的,省略裁剪仅仅在图元大到足以引起浮点处理的数值精度和稳定性问题的情况下才是一个问题。因此,第二边界120可被定义,其中第二边界标记了数值精度问题开始发生的区域的边缘(例如,边界120可对应于上面针对图4所讨论的32K像素阈值)。只要原始图元60被裁剪为完全处于第二边界120之内,裁剪就将足够好、可以避免浮点精度损失,即便图元没有参照裁剪边界65被精确裁剪也是如此。
[0136] 如图6的C部分和D部分所示,其中可能存在满足裁剪要求的多个不同的被裁剪的图元110。在图6的实施例中,被裁剪的图元110满足下列要求可能是有帮助的:(a)被裁剪的图元110至少覆盖了原始图元60在裁剪边界65之内的部分;(b)被裁剪的图元应当是单一图元110;以及(c)整个被裁剪的图元110应处于第二边界120之内。对于存在多个能够满足这些条件的候选被裁剪的图元的情况(诸如,图6中的C部分和D部分所示出的两个候选),图元设置单元40可选择被裁剪的图元110以便减少与处理用于确定新被裁剪的图元110的顶点的顶点数据的权重相关联的存储和处理开销。例如,候选之一可能具有较低权重或能够通过需要比其他候选更简单的处理的权重来表示。如果是这样,则可选择需要最少的开销来处理的候选。
[0137] 因此,图1中的裁剪操作10或图4中的裁剪步骤106可如图5所示参照裁剪边界65进行精确裁剪或如图6中所示进行不精确的裁剪以生成单裁剪图元。
[0138] 图7示出了减少执行裁剪的开销的另一方式。发明人已经观察到较大的图元的与浮点精度损失相关联的问题往往主要针对步骤12处的图元设置操作的深度函数计算发生。图元设置操作的其他部分(诸如边缘判定和图元重心属性的判定等等)在数值上是稳定的,从而这些操作往往不会产生误差,即便图元被保留为未裁剪也是如此。对于边缘判定,任何不稳定性仅针对较大的三角形而产生,并且误差从未超过任何本来会由裁剪产生的误差,从而该误差在可接受的范围内。重心还可受到数值不稳定性的影响,不过由于它们实际上是边界方程的倍数,所以仅仅是量值在数值上不稳定,而不是偏移在数值上不稳定,由于我们具有属性:i+j+k = 1,i+j+k的和的最终分割将确保量值中的误差被取消,以使得剩余误差可被忽略。因此,对于边缘判定和重心属性的判定来说,数值问题相对不重要。不过,对于深度方程来说需要计算三角形的面积。对于长而窄的三角形,特别是当两个角接近于O度而最后一个角接近于180度时,这样的三角形的面积在数值上是不稳定的。因此,为三角形精确地计算az、bz和cz系数可能是很困难的。此外,由于深度平面被计算为:z =az*x+bz*y+cz,如果az和bz具有几个数量级的幅度差,则相同类型的三角形可导致cz和az*x或bz*y之间的不稳定性。裁剪增大了三角形的角,也因为这样减少了在计量和任何相关计算中的不稳定性。
[0139]由于大部分数值问题伴随着深度函数计算出现,临时裁剪可被执行并且被裁剪的图元仅可被用于深度函数计算。一旦深度函数被计算出来,就可丢弃被裁剪的图元的附加顶点数据,因为它们不再被需要。图元设置操作的其他部分和后续图形处理(诸如,边缘判定)可以基于原始图元60。这意味着图1中的绝大部分图形处理能够使用原始图元的原始顶点数据并且不需要考虑任何被裁剪的图元的任何附加顶点数据,这减少了需要被处理的数据量。此技术可被称为“伪裁剪”。此技术的优点在于相较于原始图元60,对边线方程的判定和图元重心的判定没有改变。
[0140] 如图7中所示,如果伪裁剪图元130仅被用于深度函数,则对于伪裁剪图元130来说没有必要覆盖原始图元60处于裁剪边界65之内的全部内部部分。可以生成伪裁剪图元130以便使其覆盖比原始图元60的内部区域更小的面积(如图7的右半边部分中的深灰部分所示出的)。生成较小的伪裁剪图元130有时可能有助于生成在深度函数计算中所使用的附加顶点数据的较低权重。如果伪裁剪的图元130不能覆盖边界65内的所有区域,则通过使用此图元130而确定的深度函数将不会覆盖在裁剪边界65内的区域的角135。尽管在视口右下角的后续深度值评估将使用图元130外部的位置(为该位置计算深度函数),但是已经发现处理仍可产生正确的结果。
[0141] 尽管在基于图块的渲染器的上下文中讨论了图4至图7中所示的不同的裁剪技术,在其他实施例中这些技术可被用于另一形式的渲染器中,诸如立即模式渲染器。类似地,尽管在图1中的步骤10中针对每个图块分别执行了这些裁剪技术,在其他实施例中,这些裁剪技术可被用于在镶图步骤6之前执行的裁剪步骤中,以便使裁剪中生成的任何附加顶点数据被存储在图元存储器中。一般来说,图4的技术能够被用于减少被执行裁剪的图元的数量。对于裁剪被执行的地方,图6中的技术能够减少附加被裁剪的图元的数量,从而减少在裁剪期间生成的附加顶点数据量,并且图7的技术能够被用于减少需要该附加顶点数据的后续图形处理操作的数量,使得整体上需要较少的处理。
[0142] 尽管图2A和图2B示出了用于执行本技术的图形处理管线架构,但是在其他实施例中,这些处理操作通过使用由软件编程的通用计算机执行图形图元的处理来执行。图8示意性地示出了通用计算机200的示例,其中通用计算机200可被用于实现上面所描述的技术。通用计算机200包括中央处理单元(CPU) 202、随机存取存储器204、只读存储器206、网络接口卡208、硬盘驱动器210、显示驱动器212和监视器214以及具有键盘218和鼠标220的用户输入/输出电路216,以上所有通过公用总线222进行连接。在操作中,中央处理单元202可执行计算机程序指令,其中该计算机程序指令可被存储在一个或多个随机存取存储器204、只读存储器206和硬盘驱动器210中,或是通过网络接口卡208进行动态下载。处理被执行的结果可通过显示驱动器212和监视器214被显示给用户。用于控制通用计算机200的操作的用户输入可通过用户输入/输出电路216从键盘218或鼠标220处被接收。应当理解的是计算机程序能够以各种不同的计算机语言被写出。计算机程序可被存储和分布在记录介质上或被动态地下载至通用计算机200。当在适当的计算机程序的控制下运行通用计算机200时,通用计算机200能够执行上面所描述的技术,并且被认为能够组成用于执行上面所描述的技术的装置。通用计算机200的架构可能变化相当大,而图8仅仅是一个示例。例如,除了图8中所表明的桌面系统,该技术可被实现在诸如智能电话或平板式电脑之类的移动设备上。图2A和图2B中所示的各种缓冲器32、38、48可被实现为RAM204内的存储区域,并且例如,图2A和图2B中的处理单元34、36、40、42、44、46、47、48、50可通过使用由CPU 202执行的软件算法来实现。
[0143] 下面被编号的条款陈述了其它非限制性的示例安排:
[0144] 1.一种处理用于显示的图形图元的方法,其中所述图元具有被表示为浮点格式的顶点坐标,所述方法包括以下各个步骤:
[0145] 参照裁剪边界在目标图元上执行裁剪操作以生成对应于所述目标图元的单裁剪图元,其中相较于所述目标图元,所述单裁剪图元延伸至所述裁剪边界以外更少的量;以及
[0146] 使用所述被裁剪的图元执行至少一个图形处理操作;
[0147] 其中,如果所述目标图元处于所述裁剪边界之内的内部部分不能仅使用一个图元来表示,则所述裁剪操作生成包括对应于所述目标图元的所述内部部分的内部区域以及处于所述裁剪边界以外的外部区域的所述单裁剪图元。
[0148] 2.根据条款I所述的方法,其中所述裁剪操作生成处于第二边界内的所述单裁剪图元,并且所述第二边界在所述裁剪边界之外。
[0149] 3.根据条款2所述的方法,其中处于所述第二边界内的图元由所述至少一个图形处理操作处理而不产生由浮点精度损失导致的误差。
[0150] 4.根据条款3所述的方法,其中所述裁剪操作生成用于从所述目标图元的顶点数据确定所述单裁剪图元的附加顶点数据的权重值。
[0151] 5.根据条款4所述的方法,其中所述裁剪操作从多个候选被裁剪的图元中选择从所述单裁剪图元以减少与处理所述单裁剪图元的所述权重值相关联的存储开销或处理开销。
[0152] 6.一种用来处理用于显示的图形图元的装置,其中所述图元具有被表示为浮点格式的顶点坐标,
[0153] 所述装置包括处理电路,该处理电路被配置用于:
[0154] (i)参照裁剪边界在目标图元上执行裁剪操作以生成对应于所述目标图元的单裁剪图元,其中相较于所述目标图元,所述单裁剪图元延伸至所述裁剪边界以外更少的量;以及
[0155] (ii)使用所述被裁剪的图元执行至少一个图形处理操作;
[0156] 其中,如果所述目标图元处于所述裁剪边界之内的内部部分不能仅使用一个图元来表示,则所述裁剪操作生成包括对应于所述目标图元的所述内部部分的内部区域以及处于所述裁剪边界以外的外部区域的单裁剪图元。
[0157] 7.一种用来处理用于显示的图形图元的装置,其中所述图元具有被表示为浮点格式的顶点坐标,
[0158] 所述装置包括处理装置,该处理装置被用于:
[0159] (i)参照裁剪边界在目标图元上执行裁剪操作以生成对应于所述目标图元的单裁剪图元,其中相较于所述目标图元,所述单裁剪图元延伸所述裁剪边界以外更少的量;以及
[0160] (ii)使用所述被裁剪的图元执行至少一个图形处理操作;[0161 ] 其中,如果所述目标图元处于所述裁剪边界之内的内部部分不能仅使用一个图元来表示,则所述裁剪操作生成包括对应于所述目标图元的所述内部部分的内部区域以及处于所述裁剪边界意外的外部区域的单裁剪图元。
[0162] 8.一种处理用于显示的图形图元的方法,其中所述图元具有被表示为浮点格式的顶点坐标,所述方法包括以下各个步骤:
[0163] 执行图元设置操作,该图元设置操作包括用来确定哪些位置在目标图元的边缘的内部或外部的边缘判定和用来确定深度函数的深度函数判定,其中该深度函数用于确定所述目标图元内的深度值;以及
[0164] 使用所述目标图元、所述边缘判定和所述深度函数来执行进一步的图形处理操作;
[0165] 其中如果所述目标图元满足裁剪条件,则通过使用被裁剪的图元来执行所述深度函数判定并且通过使用未经裁剪的所述目标图元来执行所述边缘判定,其中相较于所述目标图元,所述被裁剪的图元延伸至所述裁剪边界以外更少的量。
[0166] 9.根据条款8所述的方法,其中如果所述目标图元的处于所述裁剪边界内的内部部分不能仅通过使用一个图元来表示,则所述被裁剪的图元包括不精确对应于所述目标图元的所述内部部分的单裁剪图元。
[0167] 10.根据条款9所述的方法,其中对于至少一个目标图元,所述被裁剪的图元具有比所述目标图元的所述内部部分还小的面积。
[0168] 11.一种用来处理用于显示的图形图元的装置,其中所述图元具有被表示为浮点格式的顶点坐标,所述装置包括:
[0169] 图元设置电路,该图元设置电路被配置成执行图元设置操作,所述图元设置操作包括用来确定哪些位置在目标图元的边缘的内部或外部的边缘判定和用来确定深度函数的深度函数判定,其中该深度函数用于确定所述目标图元内的深度值;以及
[0170] 处理电路,该处理电路被配置成使用所述目标图元、所述边缘判定和所述深度函数来执行进一步的图形处理操作,
[0171] 其中如果所述目标图元满足裁剪条件,则所述图元设置电路被配置成通过使用被裁剪的图元来执行所述深度函数判定并且通过使用未经裁剪的所述目标图元来执行所述边缘判定,其中相较于所述目标图元,所述被裁剪的图元延伸至所述裁剪边界以外更少的量。
[0172] 12.一种用来处理用于显示的图形图元的设备,其中所述图元具有被表示为浮点格式的顶点坐标,所述设备包括:
[0173] 图元设置装置,该图元设置装置用于执行图元设置操作,所述图元设置操作包括用来确定哪些位置在目标图元的内部或外部的边缘的边缘判定和用来确定深度函数的深度函数判定,其中该深度函数用于确定所述目标图元内的深度值;以及
[0174] 处理装置,该处理装置通过使用所述目标图元、所述边缘函数判定和所述深度函数来执行进一步的图形处理操作;
[0175] 其中如果所述目标图元满足裁剪条件,则所述图元设置装置被配置成通过使用被裁剪的图元来执行所述深度函数判定并且通过使用未经裁剪的所述目标图元来执行所述边缘判定,其中相较于所述目标图元,所述被裁剪的图元延伸至所述裁剪边界以外更少的量。
[0176] 13.一种处理用于待显示的帧的图形图元的方法,所述方法包括以下各个步骤:
[0177] 将每个图元分配给组成所述待显示的帧的多个图块中的至少一个图块;
[0178] 对于每个图块,在图元存储器中存储图元列表,所述图元列表识别出被分配至相应图块的图元的顶点的顶点数据;以及
[0179] 分别针对每个图块执行图块处理,所述图块处理包括:
[0180] (i)从所述图元存储器读取所述图块的所述图元列表;
[0181] (ii)如果图元列表识别出满足裁剪条件的目标图元,则执行用于参照裁剪边界对目标图元执行裁剪的裁剪操作以生成在图元列表中未被识别出的被裁剪的图元的至少一个附加顶点的附加顶点数据,相较于目标图元,该被裁剪的图元延伸至所述裁剪边界以外更少的量;
[0182] (iii)通过使用在图元列表中被识别出的顶点数据和由裁剪操作生成的附加顶点数据来执行至少一个进一步的图形处理操作;以及
[0183] (iv)输出由至少一个针对图元的进一步的图形处理操作生成的显示数据。
[0184] 14.一种处理用于显示的图形图元的方法,其中图元具有被表示为浮点格式的顶点坐标,该方法包括以下各个步骤:
[0185] 基于待处理的目标图元的顶点坐标确定表明所述目标图元的尺寸的图元尺寸参数;
[0186] 如果所述图元尺寸参数超过了预定阈值,则参照裁剪边界在所述目标图元上执行裁剪操作以生成至少一个被裁剪的图元并且通过使用该至少一个被裁剪的图元执行至少一个图形处理操作,其中相较于目标图元,该被裁剪的图元延伸至所述裁剪边界以外更少的量;以及
[0187] 如果所述图元尺寸参数未超过所述预定阈值,则省略针对所述目标图元的所述裁剪操作并且通过使用所述目标图元执行所述至少一个图形处理操作。
[0188] 15.一种存储了计算机程序的计算机可读存储介质,当所述计算机程序由计算机执行时,该计算机程序控制所述计算机以执行条款I至5、8至10、13和14中的任意条款的方法。
[0189] 尽管本文已经参照附图详细描述了说明性的实施例,但是需要理解的是本发明不限于那些精确的实施例,并且在不背离所附权利要求的范围和精神的情况下,本领域的技术人员能够对此做出各种变化和修改。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈