图形处理的制作方法

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

本发明涉及图形的处理,例如用于在显示屏上进行显示。



背景技术:

在图形处理系统中常见的是通过将每个对象的表面细分成被称为“图元”的多个相似基本部分来对对象进行渲染以显示,以允许图形处理操作更加容易地执行。这些图元通常是简单多边形,例如三角形的形式。

图形图元通常是利用从要求图形输出的应用(例如,游戏)接收的图形绘制指令(请求),通过图形处理系统的应用程序界面来生成的。

在这个级每个图元通常由一组顶点限定且被表示为一组顶点。针对图元的每个顶点具有与其相关联的指示在该顶点处的图元的属性的一组数据(诸如定位、颜色、纹理和其它属性数据)。然后,该数据例如被用于对图元进行栅格化和渲染,以生成图形处理系统的期望输出。在图元及其顶点已经被生成并且进行了限定时,它们能够通过图形处理系统进行处理,例如以便显示其相关的对象。

更加准确并且因此更真实地显示对象的表面的一种方法是使表示对象的图元和顶点的数量增加。然而,有时可能不需要这种附加信息,例如如果从远处观看对象或者该对象的表面对于观看者而言处于浅角度,使得即使生成表面几何图形(对表面几何图形进行渲染),该表面几何图形中的精细细节在经渲染的输出中也将不可见。在这种情况下,对表示对象的精细细节的大量图元进行处理是处理资源的一种浪费。

为了显示对象的更精细级别的细节,如有需要,能够利用较大的“图块”(patch)来表示对象的表面几何图形,然后能够在图形处理流水线中将附加“镶嵌图元”(tessellation primitive)镶嵌在图块内。因此,这种图块是表示要显示(渲染)的对象的部分或全部的图形实体。两种常见的图块形状是三角形和四边形(例如,正方形)。该处理被称为“镶嵌”,并且存在于例如OpenGL和Direct3D的现代版本中。

图1描述了如OpenGL和Direct3D中中实现的镶嵌级10,其包括两个着色器级11、13和固定功能的镶嵌器或图元生成器12。

外壳(hull)着色器(使用Direct3D技术)或控制着色器(使用OpenGL技术)11可操作用于接收图块(例如从图形处理流水线上游级),并且尤其计算“镶嵌因子”。镶嵌因子限定所需镶嵌的程度,并因此限定将由镶嵌处理生成的镶嵌图元的数量。外壳着色器或控制着色器11还可以通过某种方式来修改图块。

镶嵌因子被传递到图元生成器12,该图元生成器12进行操作以将图块镶嵌到需要的程度。图元生成器12通常在抽象的2D参数空间中对图块进行操作。图块可以例如在参数空间中被镶嵌成多个三角形镶嵌图元。图2示出在参数空间中三角形图块14的示例,图3示出在同一参数空间中四边形图块15的示例。在这两种情况下,图元生成器12进行操作以将图块14、15划分成更小的三角形镶嵌图元,其中镶嵌图元的数量依赖于镶嵌因子。在所示的两种情况下,镶嵌因子是15。这得到存在沿着图块14、15的每个边缘的15个镶嵌图元。

镶嵌图元的组通常通过镶嵌顶点坐标对(U,V)的组来描述,其在参数空间中限定表示镶嵌图元的顶点的定位的位置。镶嵌图元的组通常还通过限定顶点之间的连接性(即,顶点将如何被“连接起来”以生成该组镶嵌图元)的信息来描述。该连接性信息由图元生成器12来计算。

域着色器(使用Direct3D技术)或评估着色器(使用OpenGL技术)13从控制着色器11接收输出图块并且从图元生成器12接收镶嵌顶点坐标对,然后进行操作以将镶嵌顶点坐标对应用到输出图块上,以计算针对输出图块的镶嵌图元的顶点的定位。

下游图元组装级20利用来自域着色器或评估着色器13的所计算的定位和来自图元生成器12的连接性信息来对镶嵌图元进行组装,然后将经组装的镶嵌图元进一步传递到图形处理流水线的下游级用于以通常方式的进一步处理,诸如栅格化和渲染等。

在一个示例中,由图元生成器12生成的每个镶嵌顶点坐标对通过34位来表示。然而,这种34位表示可能是非常低效的,特别是如果图元生成器12作为一系列计算着色器而不是固定功能的单元来实现的话。这是因为,计算着色器通常需要对存储器的访问,而存储器访问通常是以2的幂例如32位、64位等来进行的。因此,这种34位表示在被写入到存储器之前将通常需要被扩展到64位,并且这可能导致大量带宽浪费。当然有可能地简单地使用于该示例中的镶嵌顶点坐标对的表示中的位数减小,但是这种简易方案将不可避免地导致数据分辨率损失。

如将要理解的,在图形处理器中,例如在便携式设备中,通常期望在可能的情况下尝试减少传递、存储并访问数据(例如,生成用于显示的图像所需的数据)所需要的带宽和存储器的量,但是优选地无需相应降低数据分辨率。

申请人认为,仍然存在改进用于处理图形数据,特别是提供并使用镶嵌的设置的技术的余地。



技术实现要素:

根据本发明的一个方面,提供了一种操作图形处理流水线的方法,该图形处理流水线包括镶嵌级,所述方法包括以下步骤:

所述镶嵌级,所述镶嵌级对表示要进行渲染的对象的至少一部分或全部的图块进行镶嵌,其中,对所述图块进行镶嵌包括以下步骤:

生成针对所述图块的镶嵌图元的顶点的镶嵌顶点坐标对,所述镶嵌顶点坐标对利用第一二进制表示来表示;并且

将利用所述第一二进制表示来表示的所述镶嵌顶点坐标对编码成第二二进制表示,其中,对所述镶嵌顶点坐标对进行编码包括以下步骤:

将利用所述第一二进制表示来表示的所述镶嵌顶点坐标对映射到能够利用所述第二二进制表示来表示的经映射的坐标对;并且

利用所述第二二进制表示来表示所述经映射的坐标对。

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

镶嵌级,该镶嵌级被构造成对表示要进行渲染的对象的至少一部分或全部的图块进行镶嵌,其中,所述镶嵌级被构造成:

生成针对所述图块的镶嵌图元的顶点的镶嵌顶点坐标对,所述镶嵌顶点坐标对是利用第一二进制表示来表示的;并且

将利用所述第一二进制表示来表示的所述镶嵌顶点坐标对编码成第二二进制表示,其中,所述镶嵌级被构造成:

将利用所述第一二进制表示来表示的所述镶嵌顶点坐标对映射到能够利用所述第二二进制表示来表示的经映射的坐标对;并且

利用所述第二二进制表示来表示所述经映射的坐标对。

在本发明中,针对图块的镶嵌图元的顶点的镶嵌顶点坐标对(例如,限定(2D)参数空间内的位置的镶嵌顶点坐标对)最初利用第一二进制表示来表示。然后,将镶嵌顶点坐标对利用第二二进制表示来进行编码。所述编码包括将所述镶嵌顶点坐标对映射到能够利用所述第二二进制表示来表示的针对所述顶点的经映射的坐标对(例如,限定所述参数空间内的另选的或者经映射的位置的坐标对)。

因此,本发明提供一种用于将最初用第一二进制表示来表示的镶嵌顶点坐标对编码成(例如,更方便的)第二二进制表示的方法。特别地,申请人已经认识到,当对图块进行镶嵌时,实际上将存在针对图块的镶嵌图元的顶点的一些不被使用的、无效的和/或不可到达的坐标对(例如,限定不被使用的、无效的和/或不可到达的位置的对表对)。申请人已经进一步认识到,这些其它的不被使用的、无效的和/或不可到达的坐标对能够被使用来代替针对图块的镶嵌图元的顶点的实际的、有效的和/或可以到达的镶嵌顶点坐标对(例如,限定实际的、有效的和/或可以到达的位置的镶嵌顶点坐标对),以使得利用第一二进制表示来表示的镶嵌顶点坐标对能够利用第二二进制表示来编码。

此外,由于镶嵌顶点坐标对被映射(例如而不是简单地将第一二进制表示截短),因此当需要的时候,例如通过使映射过程反转能够容易地从经映射的坐标对恢复或“重新映射”镶嵌顶点坐标对,并且当对镶嵌顶点坐标对进行编码时没有任何信息丢失或数据分辨率降低。因此,本发明能够例如允许利用第一二进制表示来表示的镶嵌顶点坐标对利用包括或包含比第一二进制表示少的位(例如,两个)的第二二进制表示来编码。这接下来能够允许减少传递、存储和/或访问镶嵌顶点坐标对所需要的带宽和/或存储器。

第一二进制表示可以包括或包含n个位,其中,n优选为34。第一二进制表示每镶嵌顶点坐标对的坐标可以包括或包含m个位,其中,m优选为n/2,例如17。第一二进制表示可以包括或包含针对镶嵌顶点坐标对的每个坐标的固定点表示。固定点可以被直接定位在针对镶嵌顶点坐标对的每个坐标的最高(即,非小数)位之后。因此,第一二进制表示可以包括或包含针对镶嵌顶点坐标对的每个坐标的m-1个小数位,其中,m-1优选为16。

如上所述,存储器访问通常是以2的幂,例如32位、64位等来进行的。因此,第二二进制表示优选包括或包含2位的幂,诸如32位、64位等。这例如能够允许图形处理流水线能够比利用第一二进制表示来表示的镶嵌顶点坐标对更加有效地传递、存储和/或访问经映射的坐标对。第二二进制表示例如可以包括或包含n-2个位,其中,n-2优选为32。第二二进制表示每经映射的坐标对的坐标可以包括或包含m-1个位,其中,m-1优选为16。

镶嵌顶点坐标对优选包括重心坐标对。因此,用于由镶嵌顶点坐标对限定的位置的参数空间可以被称为重心空间。可以利用第二二进制表示寻址的参数空间的面积可以小于可以利用第一二进制表示寻址的参数空间的面积。镶嵌顶点坐标对可以例如包括一对坐标U,V,其中,0≤U,V≤1。经映射的坐标对可以例如包括坐标对U’,V’,其中,0≤U’,V’<1。

如上所述,镶嵌顶点坐标对优选限定针对图块的镶嵌图元的顶点的参数空间内的有效的和/或可以到达的位置。例如,镶嵌顶点坐标对可以限定表示图块的内部的或者更加优选地沿着图块的边缘的在参数空间内的定位。

经映射的坐标对优选地还在参数空间内限定位置。然而,经映射的坐标对优选地限定针对图块的镶嵌图元的顶点的无效的和/或不可到达的位置,即,将不通常用来表示针对图块的镶嵌图元的顶点的定位。

例如,经映射的坐标对可以限定表示在图块外部的位置的参数空间内的(例如,无效的)定位。在该情况下,图块可以是三角形的。例如,图块可以具有在(0,0)、(0,1)和(1,0)的顶点,并且经映射的坐标对可以包括坐标对U’,V’,其中,U’+V’>1。

经映射的坐标对还可以或者替代地在所述参数空间内限定(例如,不可到达的)位置,该位置表示位于所述图块内但是位于所述参数空间内的表示针对所述图块的镶嵌图元的顶点能够(有效地)具有的定位的位置之间的定位,例如,这是因为由镶嵌级使用和/或可用的镶嵌的特定类型(例如,“奇数”或“偶数”)和/或镶嵌因子(例如,偶数或奇数)的缘故。在该情况下,图块可以是四边形的。图块可以具有在(0,0)、(0,1)、(1,0)和(1,1)的顶点。经映射的坐标对可以限定表示与四边形图块的边缘相邻(但优选地不位于该边缘处)的定位。这例如可以利用偶数镶嵌因子来容纳四边形图块的“偶数”镶嵌,其中,任何附加的镶嵌图元是从图块的中心线向外添加的而不是与边缘相邻地添加的。经映射的坐标对还可以或者替代地限定表示与四边形图块的中心线相邻的定位的位置。这例如可以利用偶数镶嵌因子容纳四边形图块的“奇数”镶嵌,其中,任何附加的镶嵌图元是远离图块的中心线和/或边缘添加的。

在特定优选实施方式中,经映射的坐标对限定(例如,无效的和/或不可到达的)位置,该位置表示将在具有第一形状的第一图块(例如,三角形图块)外并且将在具有第二(不同)形状的第二图块(例如,四边形图块)内但是在表示针对第二图块的镶嵌图元的顶点能够(有效地)具有的定位的位置之间的定位。这能够例如允许使用相同的映射处理,不论正使用的图块形状(例如,三角形或四边形)如何。

在特定优选实施方式中,经映射的坐标对限定表示与第二图块的边缘相邻(但是优选地不位于该边缘处)并且与第二图块的中心线相邻的定位的位置。这能够例如允许使用相同的映射处理,不论正使用的镶嵌的类型(例如,“偶数”或“奇数”)和/或镶嵌因子(例如,偶数或奇数)如何。

将镶嵌顶点坐标对映射到经映射的坐标对的步骤可以依赖于确定应当映射的镶嵌顶点坐标对的镶嵌级。编码的步骤因此可以包括确定应当进行映射的镶嵌顶点坐标对,并且响应于确定应当进行映射的镶嵌顶点坐标对,执行将镶嵌顶点坐标对映射到经映射的坐标对的步骤。

确定的步骤可以例如基于镶嵌顶点坐标对的第一坐标和/或第二坐标的值。例如,可以确定的是,当镶嵌顶点坐标对包括具有无法利用第二二进制表示来表示的值的至少一个坐标时,该镶嵌顶点坐标对应当进行映射,例如这是因为不存在足够的第二二进制表示中可用的位来表示该至少一个坐标的该值。

因此,被映射到能够利用第二二进制表示来表示的经映射的坐标对的利用第一二进制表示来表示的镶嵌顶点坐标对优选地包括具有无法利用第二二进制表示来表示的值的至少一个坐标。

在这种实施方式中,确定的步骤可以包括考虑镶嵌顶点坐标对的第一坐标和/或第二坐标的最高(例如,非小数)位、例如,可以确定的是,当镶嵌顶点坐标对的第一坐标和/或第二坐标的最高(例如,非小数)位为1时,应当对镶嵌顶点坐标对进行映射。

将镶嵌顶点坐标对映射到经映射的坐标对可以包括任何期望的且合适的映射处理。例如,映射处理可以包括使用查找表或者可以包括应用映射算法或映射函数。映射处理可以包括对镶嵌顶点坐标对的坐标中的一个或两个(分别地或者一起)进行映射(例如,替换或更改),以提供经映射的坐标对。

在优选实施方式中,在映射步骤中使用的特定映射处理依赖于无法利用第二二进制表示来表示的镶嵌顶点坐标对的特定坐标。因此,进行编码的步骤还可以包括镶嵌级识别无法利用第二二进制表示来表示的镶嵌顶点坐标对的一个或更多个特定坐标,基于所识别的一个或更多个特定表对来选择映射处理,以及利用所选择的映射处理将镶嵌顶点坐标对映射到经映射的坐标对。

识别无法利用第二二进制表示来表示的镶嵌顶点坐标对的一个或更多个特定坐标的步骤可以再次基于镶嵌顶点坐标对的第一坐标和/或第二坐标的值。在这些实施方式中,识别无法利用第二二进制表示来表示的镶嵌顶点坐标对的一个或更多个特定坐标的步骤可以包括考虑镶嵌顶点坐标对的第一坐标和/或第二坐标的最高(例如,非小数)位。例如,当该坐标的最高(例如,非小数)位是1时,镶嵌顶点坐标对的坐标可以被识别为不能利用第二二进制表示来进行表示。

在优选实施方式中,当(仅当)镶嵌顶点坐标对的第一坐标(U)无法利用第二二进制表示来表示时,可以使用第一映射处理。第一映射处理可以包括根据第一预定位组和镶嵌顶点坐标对的第二坐标(V)的一个或更多个(例如,(例如小数位的)最高一半)位,生成经映射的坐标对的第一坐标(U’)。第一映射处理还可以包括根据第二预定位组和镶嵌顶点坐标对的第二坐标(V)的一个或更多个其它(例如,(例如小数位的)至少显著一半)位,生成经映射的坐标对的第二坐标(V’)。在这些实施方式中,第一预定位组和第二预定位组优选将经映射的坐标对限制到针对图块的镶嵌图元的顶点的参数空间内的另外无效的和/或不可到达的位置的区域。第一预定位组还优选与第二预定位组不同。

第一映射处理优选是唯一可识别的,例如通过在该第一映射处理中使用的特定预定位组。这例如能够允许镶嵌级稍后例如当对经映射的坐标对进行解码时,识别出使用了该第一映射处理。

另选地,当(仅当)镶嵌顶点坐标对的第二坐标(V)无法利用第二二进制表示来表示时,可以使用第二(不同的)映射处理。第二映射处理可以包括根据第三预定位组和镶嵌顶点坐标对的第一坐标(U)的一个或更多个(例如,(例如小数位的)最低一半)位,生成经映射的坐标对的第一坐标(U’)。第二映射处理还可以包括根据第四预定位组和镶嵌顶点坐标的第一坐标(U)的一个或更多个(例如,(例如小数位的)最高一半)位,生成经映射的坐标对的第二坐标(V’)。再次,第三预定位组和第四预定位组优选将经映射的坐标对限制到针对图块的镶嵌图元的顶点的参数空间内的另外无效的和/或不可到达的位置的区域。第三预定位组还优选与第四预定位组不同。

第二映射处理优选是唯一可识别的,例如通过在该第二映射处理中使用的特定预定位组。这例如能够允许镶嵌级稍后例如当对经映射的坐标对进行解码时,识别出使用了该第二映射处理。

在上文中,第四预定位组可以与第一预定位组相同。类似地,第三预定位组可以与第二预定位组相同。然而,如上所述,第一映射处理优选地例如通过这些处理中使用的特定预定位组而与第二映射处理相区分。因此,第三预定位组可以与第一预定位组不同,和/或第四预定位组可以与第二预定位组不同。

另选地,当镶嵌顶点坐标对的第一坐标(U)和第二坐标(V)都无法利用第二二进制表示来表示时,可以使用第三(不同的)映射处理。第三映射处理可以包括根据第五和第六预定位组,生成经映射的坐标对的第一坐标(U’)。第三映射处理还可以包括根据第七和第八预定位组,生成经映射的坐标对的第二坐标(V’)。第五、第六、第七和第八预定位组优选限定针对图块的镶嵌图元的顶点的参数空间内的另外无效的和/或不可到达的位置。

第三映射处理优选是例如通过在该第三映射处理中使用的特定预定位组而唯一可识别。这例如能够允许镶嵌级稍后例如当对经映射的坐标对进行解码时,识别出使用了该第三映射处理。

(如将要在下面更加详细地论述的,例如当通过镶嵌级确定出映射不应当或者不需要用于一个或更多个其它镶嵌顶点坐标对时,可以不对通过镶嵌级生成的该一个或更多个其它镶嵌顶点坐标对执行映射处理。因此,当确定为一个或更多个其它镶嵌顶点坐标对的第一坐标(U)和第二坐标(V)双方都能够利用第二二进制表示来表示时,优选地不对这些一个或更多个其它镶嵌顶点坐标对执行映射。然而,这些一个或更多个其它镶嵌顶点坐标对可以通过镶嵌级被编码成第二二进制表示。该编码可以包括例如通过将第一坐标和/或第二坐标的最高(非小数)位移除来将一个或更多个其它镶嵌顶点坐标对的第一坐标和/或第二坐标截短,以及利用第二二进制表示来表示经截短的第一坐标和第二坐标。)

在优选实施方式中,映射的步骤是利用包括(例如,n-2或32位)累加器的处理单元来执行的。该单元优选被构造成接收镶嵌顶点坐标对的第一坐标的位,并且(例如随后)接收镶嵌顶点坐标对的第二坐标的位。该单元还可以被构造成接收和/或访问对所使用的特定映射处理合适的上述预定位组。

首先,第一坐标的位可以由处理单元接收并且被存储在累加器中。第一坐标的一个或更多个(例如,(例如小数位)最高一半)位可以被存储在累加器中的两个地方。如将要在下面更加详细地论述的,这能够避免稍后在映射处理中将这些一个或更多个位重新定位在累加器内部的需要。

然后,可以通过处理单元接收第二坐标的位。此时,处理单元可以确定映射处理例如基于如上所述的镶嵌顶点坐标对的第一坐标和/或第二坐标的值和/或最高(例如,非小数)位来使用。例如,当第一坐标的最高(例如,非小数)位为1并且第二坐标的最高(例如,非小数)位为0时,处理单元可以执行上述的第一映射处理。另选地,当第一坐标的最高(例如,非小数)位为0并且第二坐标的最高(例如,非小数)位为1时,处理单元可以执行上述的第二映射处理。另选地,当第一坐标的最高(例如,非小数)位为1并且第二坐标的最高(例如,非小数)位为1时,处理单元可以执行上述的第三映射处理。

(如上文中所指示,并且如将要在下文中更加详细地论述的,例如当通过处理单元确定为不应当或者不需要使用映射时,处理单元可以不执行对通过镶嵌级生成的一个或更多个其它镶嵌顶点坐标对的映射处理。例如,当一个或更多个其它镶嵌顶点坐标对的第一坐标(U)和第二坐标(V)双方的最高(例如,非小数)位为0时,可以对这些一个或更多个其它镶嵌顶点坐标对不执行映射。然而,一个或更多个其它镶嵌顶点坐标对可以利用累加器被编码成第二二进制表示。在这种情况下,第二坐标的(例如,小数)位可以简单地酌情被复制到累加器。镶嵌顶点坐标对的第一坐标的(例如小数)位优选地不在该处理中进行重写。如上所述,由于镶嵌顶点坐标对的第一坐标的位优选已经存在并且正确地进行定位,因此优选地不需要将这些位重新定位在累加器内部。因此,累加器将包含经编码的(但未经映射的)镶嵌顶点坐标对。)

当正在使用第一映射处理时,镶嵌顶点坐标对的第二坐标的第一预定位组和第二预定位组和合适的(例如,小数)位可以被复制到累加器中的合适位置。存在于累加器中的镶嵌顶点坐标对的第一坐标的位优选地在该处理中进行重写,这是由于不再需要这些位。

当正在使用第二映射处理时,第三预定位组和第四预定位组可以被复制到累加器中的合适位置。镶嵌顶点坐标对的第一坐标的合适的(例如小数)位优选地不在该处理中进行重写。如上所述,由于镶嵌顶点坐标对的第一坐标的位优选已经存在并且正确地进行定位,因此优选地不需要将这些位重新定位在累加器内部。

当正在使用第三映射处理时,第五预定位组、第六预定位组、第七预定位组和第八预定位组可以被复制到累加器中的合适位置。存在于累加器中的镶嵌顶点坐标对的第一坐标的位优选地在该处理中进行重写,这是由于不再需要这些位。

实际上,可以存在针对镶嵌图元的多个顶点和/或可以存在针对图块的多个镶嵌图元。因此,对图块进行镶嵌可以包括生成多个镶嵌顶点坐标对,每个镶嵌顶点坐标对利用第一二进制表示来表示。

在广义的实施方式中,可以是利用第一二进制表示来表示的仅其中一个镶嵌顶点坐标对按照如上所述的方式被编码成第二二进制表示。然而,在实际中,利用第一二进制表示来表示的多个镶嵌顶点坐标对可以按照如上所述的方式被编码成第二二进制表示。因此,可以对多个镶嵌顶点坐标对中的每个执行如上所述的编码处理。

类似地,在广义的实施方式中,可以是利用第一二进制表示来表示的仅其中一个镶嵌顶点坐标对按照如上所述的方式被映射到能够利用第二二进制表示来表示的经映射的坐标对。然而,在实际上,对镶嵌顶点坐标对进行编码可以包括按照如上所述的方式将利用第一二进制表示来表示的多个镶嵌顶点坐标对映射到能够利用第二二进制表示来表示的各自经映射的坐标对。因此,可以对多个镶嵌顶点坐标对中的每一个执行如上所述的映射处理。然后,经映射的坐标对各可以利用第二二进制表示来表示。

如上所述,还可以是如下的情况:对于通过镶嵌级生成的并且利用第一二进制表示来表示的一个或更多个其它镶嵌顶点坐标对,通过镶嵌级确定为不要执行任何映射。然而,一个或更多个其它镶嵌顶点坐标对仍将如上所述地被编码成第二二进制表示(即,没有映射)。在这种情况下,对该一个或更多个其它镶嵌顶点坐标对进行编码可以包括例如通过将第一坐标和第二坐标的最高(例如非小数)位移除来使各自镶嵌顶点坐标对的第一坐标和/或第二坐标截短,以及利用第二二进制表示来表示经截短的第一坐标和第二坐标。由于第一坐标和第二坐标的经截短的部分(例如,最高(例如非小数)位)优选地具有值零,因此这种编码优选地不影响一个或更多个其它镶嵌顶点坐标对的分辨率。如上所述,可以利用包含累加器的单元来执行该编码。

在一些实施方式中,在映射的步骤之前,可以对镶嵌顶点坐标对的第一坐标和/或第二坐标进行修改。该修改处理例如可以具有使针对图块的镶嵌图元的顶点的无效的和/或不可到达的位置移动使得这些位置与所使用的参数空间和/或图块的中心线相邻,而不是跨越该中心线的影响。这接下来可以使得编码处理以少的成本来实现,例如在硬件中。

修改处理优选地可以容易地进行反向。例如,修改处理可以自逆,即应用修改处理将再次优选地不进行修改。另选地,修改处理可以是可逆的,即应用修改处理的反向将优选地不进行修改。

第一坐标和/或第二坐标的修改优选地包括使讨论中的坐标的一个或更多个位取反。讨论中的坐标的其余位在修改处理中优选地不进行取反。该特定修改处理通常优选,这是由于其能够以较低的成本来实现,例如在硬件中实现。另选地,第一坐标和/或第二坐标的修改可以包括向/从讨论中的坐标加上或减去恒定的修改值(例如,0x80)。

(仅)当满足针对讨论中的坐标的位的特定位条件时,可以对镶嵌顶点坐标对的第一坐标和/或第二坐标进行修改。位条件可以是坐标的第一或更多个位对(例如,(例如小数)位的最高对)不相等和/或坐标的一个或更多个其它特定位等于零。

然后,经修改的镶嵌顶点坐标可以进行如上所述的映射处理。

可以通过镶嵌级的图元生成器来执行生成镶嵌顶点坐标对和/或对镶嵌顶点坐标对进行编码的步骤。图元生成器优选被实现为一个或更多个计算着色器。

利用第二二进制表示来表示的经编码的(经映射的)镶嵌顶点坐标对可以通过镶嵌级(例如,图元生成器)被写到存储器,例如用于镶嵌级(例如,域着色器或评估着色器)的后续使用。镶嵌级(例如,域着色器或评估着色器)因此可以从存储器读取经编码的(经映射的)镶嵌顶点坐标对。镶嵌级(例如,域着色器或评估着色器)然后可以在使用之前对经编码的(经映射的)镶嵌顶点坐标对进行解码(重新映射)。

镶嵌级(例如,域着色器或评估着色器)优选地还可操作用于根据经编码的(经映射的)坐标对生成针对镶嵌图元的顶点的定位。生成针对镶嵌图元的顶点的定位可以包括将利用第二二进制表示来表示的经编码的(经映射的)坐标对进行解码回到利用第一二进制表示来表示的(原始)镶嵌顶点坐标对。然后,能够通过镶嵌级根据经解码的镶嵌顶点坐标对生成针对镶嵌图元的顶点的定位。

对利用第二二进制表示来表示的经编码的(经映射的)坐标对进行解码可以是如上所述的编码处理的逆处理。因此,解码的步骤可以包括将利用第二二进制表示来表示的经映射的坐标对重新映射到利用第一二进制表示来表示的镶嵌顶点坐标对。

类似地,将利用第二二进制表示来表示的经映射的坐标对重新映射到镶嵌顶点坐标对可以是如上所述的映射处理的逆处理。

将镶嵌顶点坐标对映射到经映射的坐标对的步骤可以依赖于确定经映射的坐标对应当重新进行映射的镶嵌级。解码的步骤因此还可以包括确定经映射的坐标对应当重新进行映射,并且响应于确定经映射的坐标对应当重新进行映射,将镶嵌顶点坐标对重新映射到镶嵌顶点坐标对。确定的步骤可以是基于经映射的坐标对的第一坐标和/或第二坐标的值的。

在优选实施方式中,所用的特定重新映射处理依赖于曾被用来生成经映射的坐标对的特定映射处理的。解码的步骤因此还可以包括镶嵌级识别曾被用来产生经映射的坐标对的特定映射处理,基于所识别的该特定映射处理来选择重新映射处理,以及利用所选择的重新映射处理将经映射的坐标对重新映射回到镶嵌顶点坐标对。识别被用来对经映射的坐标对进行映射的映射处理的步骤可以基于经映射的坐标对的第一坐标和/或第二坐标的值。

在优选实施方式中,当识别出使用了第一映射处理来生成经映射的坐标对时,可以使用第一重新映射处理。第一重新映射处理可以包括将镶嵌顶点坐标对的第一坐标设置成预定值(例如,表示1)。第一重新映射处理还可以包括重新组装来自经映射的坐标对(例如,第一坐标和第二坐标)的合适的(非预定)位的镶嵌顶点坐标对的第二坐标。

另选地,当识别出使用了第二映射处理来生成经映射的坐标对时,可以使用第二重新映射处理。第二重新映射处理可以包括将镶嵌顶点坐标对的第二坐标设置成预定值(例如,表示1)。第二重新映射处理还可以包括重新组装来自经映射的坐标对(例如,第一坐标和第二坐标)的合适的(非预定)位的镶嵌顶点坐标对的第一坐标。

另选地,当识别出使用了第三映射处理来生成经映射的坐标对时,可以使用第三重新映射处理。第三重新映射处理可以包括将镶嵌顶点坐标对的第一坐标设置成预定值(例如,表示1)。第三重新映射处理还可以包括将镶嵌顶点坐标对的第二坐标设置成预定值(例如,表示1)。

作为上述重新映射处理的结果,镶嵌顶点坐标对可以或者因此利用第一二进制表示来表示。

如上所述,在实际中,在本发明的实施方式中可以对多个镶嵌顶点坐标对进行编码。因此,在本发明的实施方式中,相应地可以对多个镶嵌顶点坐标对进行解码。解码的步骤因此可以包括将利用第二二进制表示来表示的多个坐标对解码成曾利用第一二进制表示来表示的其各自的(原始)镶嵌顶点坐标对。

类似地,在实际中,在本发明的实施方式中可以对多个镶嵌顶点坐标对进行映射。因此,相应地可以按照如上所述的方式对多个镶嵌顶点坐标对进行重新映射。重新映射的步骤因此可以包括将利用第二二进制表示来表示的多个经映射的坐标对重新映射成曾利用第一二进制表示来表示的其各自的(原始)镶嵌顶点坐标对。

还如上所述,在实际中,可以存在被编码成第二二进制表示但不被映射到经映射的坐标对的一个或更多个其它镶嵌顶点坐标对。因此,可以存在可以被确定为需要进行解码而无需重新映射的利用第二二进制表示来表示的一个或更多个其它镶嵌顶点坐标对。对一个或更多个其它镶嵌顶点坐标对进行解码可以包括例如通过向这些坐标对的第一坐标和/或第二坐标加上最高(例如非小数)位(例如0)来使这些坐标对的第一坐标和/或第二坐标扩大。然后,经解码的(原始的)镶嵌顶点坐标对可以或者因此利用第一二进制表示来表示。

如上所述,在映射处理之前,可以对镶嵌顶点坐标对的第一坐标和/或第二坐标进行修改。因此,在重新映射处理之后,也可以对镶嵌顶点坐标对的第一坐标和/或第二坐标进行修改(不修改)。该修改处理可以与如上所述的修改处理相同,例如当该修改处理自反向,或者另选地可以是如上所述的修改处理的逆处理时。

因此,第一坐标和/或第二坐标的修改可以包括使讨论中的坐标的一个或更多个位取反。讨论中的坐标的其余位在修改处理中优选地不进行取反。另选地,第一坐标和/或第二坐标的修改可以包括从/向讨论中的坐标减去或加上合适的恒定的修改值(例如,0x80)。

类似地,(仅)当满足针对讨论中的坐标的位的特定位条件时,可以对镶嵌顶点坐标对的第一坐标和/或第二坐标进行修改。位条件可以是坐标的第一或更多个位对(例如,(例如小数)位的最高对)不相等和/或坐标的一个或更多个其它特定位等于零。

然后,能够根据未经修改的镶嵌顶点坐标对生成针对镶嵌图元的顶点的定位。

镶嵌级可以包括可操作用于对图块进行镶嵌以生成针对一个或更多个镶嵌图元的一个或更多个顶点的一个或更多个定位的任何合适的级。镶嵌级优选地通过导出一个或更多个经解码的镶嵌顶点坐标对来生成针对一个或更多个镶嵌图元的一个或更多个顶点的一个或更多个定位,所述一个或更多个经解码的镶嵌顶点坐标对然后被应用于讨论中的图块,以给出要用于一个或更多个顶点的实际的一个或更多个定位。镶嵌级的输出优选地是然后将被图元组装级使用以生成一个或更多个镶嵌图元用于图形处理流水线的其余部分进行处理的一个或更多个顶点的阵列。

镶嵌级可操作用于执行任何期望类型的镶嵌,诸如三角形或四边形镶嵌。然而,其优选可操作用于执行三角形镶嵌。如上所述,镶嵌级可操作用于执行任何期望图块形状的镶嵌,诸如三角形和/或四边形(例如正方形)图块。

镶嵌级优选地可操作用于执行作为镶嵌操作的一部分的多个(着色器)操作。例如,镶嵌级可以执行如下所述的三个主要镶嵌(着色器)操作。

第一(着色器)操作优选地接收(输入)图块,并且计算镶嵌因子。还可以在这个级指定要使用的镶嵌的类型(例如“偶数”或“奇数”)。在一个实施方式中,还可以通过第一操作以某种方式对图块进行修改,以生成输出图块。在优在优选实施方式中,通过外壳着色器或控制着色器来执行第一操作。镶嵌因子优选地限定所需镶嵌的程度,并因此限定将由镶嵌处理生成的图元的数量。如上所述,图块的镶嵌因子可以包括限定沿着图块的每个边缘需要的镶嵌图元的数量的数字。计算镶嵌因子的方式优选地通过第一操作(外壳着色器或控制着色器)的配置来限定,并且可以例如依赖于要进行显示的场景中相机(视点)的定位。

第二(着色器)操作优选地接收镶嵌因子并且将图块镶嵌(划分)成(例如,多个镶嵌图元)所需要的程度(即,依赖于镶嵌因子)。第二操作优选地生成(计算)将要被用来限定针对图块被划分成的一个或更多个镶嵌图元的一个或更多个顶点的定位的一个或更多个镶嵌顶点坐标对。在三角形镶嵌的情况下,第二操作优选地对图块进行操作,即对图块进行镶嵌,以生成限定一个或更多个三角形镶嵌图元的一个或更多个镶嵌顶点坐标对。

第二操作还优选地以如上所述的方式对一个或更多个镶嵌顶点坐标对进行编码(映射)。图块所划分成的一个或更多个镶嵌图元因此优选地由一个或更多个经编码的(经映射的)坐标对来限定。

图块所划分成的一个或更多个镶嵌图元还可以通过限定镶嵌顶点坐标对之间的连接性的信息(即,限定如何将镶嵌顶点坐标对“连接起来”的信息)来限定。限定镶嵌顶点坐标对之间的连接性的信息等同于(并且是)限定顶点之间的连接性的信息。图元生成器可以确定并生成连接性信息。

在优选实施方式中,通过图元生成器来执行第二操作。在优选实施方式中,图元生成器优选被实现为一个或更多个计算着色器。

镶嵌级的第三操作优选地从第一操作接收(输出的)图块,以及从第二操作接收一个或更多个经编码的(经映射的)坐标对,以如上所述的方式将一个或更多个坐标对解码(重新映射)成一个或更多个(原始)镶嵌顶点坐标对,并且将该一个或更多个镶嵌顶点坐标对应用到图块,以优选地计算一个或更多个顶点的一个或更多个定位(即,计算针对图块正被镶嵌成的一个或更多个图元的一个或更多个顶点的一个或更多个定位)。在优选实施方式中,通过域着色器或评估着色器来执行第三操作。

图形处理流水线还可以包括图元组装级,该图元组装级被构造成利用针对由镶嵌级生成的一个或更多个顶点的一个或更多个定位来组装一个或更多个镶嵌图元。

图元组装级优选可操作用于组装一个或更多个镶嵌图元,以例如通过图元组装级下游的图形处理流水线的一个或更多个处理级的处理。图元组装级可以是利用一个或更多个顶点的一个或更多个定位,并且可选地利用限定顶点之间的连接性的信息,来组装图元的任何合适的这种级。图元组装级优选地可操作用于利用来自镶嵌级的一个或更多个顶点的一个或更多个定位,并且可选地利用来自镶嵌级的限定顶点之间的连接性的信息。

图形处理流水线优选地还包括位于图元组装级下游的多个处理级,其包括可操作用于对经组装的一个或更多个镶嵌图元进行栅格化以生成要处理的图形片段的至少一个栅格化器,以及可操作用于对由栅格化器生成的片段进行处理以生成经渲染的片段数据的渲染器。

由图元组装级进行组装的镶嵌图元优选地通过诸如栅格化器和渲染器的图形处理流水线的其余处理级来进行处理。

图形处理流水线的栅格化器可以生成要渲染的图形片段,优选地以生成用于对期望图形输出(诸如要显示的帧)的采样点的经渲染的图形数据。由栅格化器生成的每个图形片段优选地具有与其相关联的一组图形输出的采样点,并且被用来生成用于与该片段相关联的该组采样点的一个或更多个采样点的经渲染的图形数据。

栅格化器可以被构造成以任何期望的且合适的方式来生成片段以渲染。其可以接收例如要进行栅格化的图元,针对多组采样点定位对这些图元进行测试,并且因此生成表示图元的片段。

渲染器应当优选地对由栅格化器生成的片段进行处理,以生成用于片段表示的(被覆盖的)采样点的经渲染的片段数据。这些渲染过程可以包括例如片段着色、混合、纹理映射等。渲染器优选地具有可编程片段着色器的形式。

图形处理流水线还可以包括图形处理流水线可以包括的诸如早期深度(或者早期深度和模板)测试器、后期深度(或者深度和模板)测试器、混合器等的任何其它合适的且期望的处理级。

如将要理解的,图块是要进行渲染的表示对象的一部分或全部(例如对象的表面的一部分或全部)的图形实体。图块可以是诸如贝塞尔表面的表面,并且可以由多个控制点来限定。可以例如利用从要求图形输出的应用(例如,游戏)接收(请求)、并且被传递到镶嵌级用于镶嵌的图形绘制指令,通过图形处理系统的应用程序界面来生成图块。

如将要理解的,虽然已经具体参照表示要处理的对象的全部或部分的单个图块的处理对本发明进行了描述,但是本发明可以并且优选地被用于要处理的多个图块(不论是相同的还是不同的对象),并且优选地每当需要图块镶嵌时使用。因此,在需要镶嵌的情况下,例如其将被重复用于进行渲染的对象的每个图块,并且用于要渲染的每个对象的多个图块。因此,将要理解的是,由于要渲染的对象可以由多个图块来表示,实际上本发明的方法可以对需要用以表示该对象的多个图块(例如,每个和/或每一个图块)执行。还将要理解的是,由于要显示的场景可以包括要渲染的多个对象,因此实际上本发明的方法可以对需要用以显示该场景的多个对象(例如,每个和/或每一个对象)执行。

按照本发明的方式的实际操作能够根据需要地进行触发和控制。例如,并且优选地,一个或更多个绘制调用能够被用来通过启用镶嵌来触发该操作。

本发明能够被用于图形处理流水线可以被用来生成的全部形式的输出,例如用于显示的帧、渲染到纹理输出等。

在实施方式中,可以在产生并输出例如写到用于显示装置的帧缓存的所渲染片段数据的单个图形处理平台上来实现本发明的各种功能。

在一些实施方式中,所述图形处理流水线包括和/或与存储本文描述的所述数据和/或存储用于执行本文描述的过程的一个或更多个存储器和/或存储设备进行通信。图形处理流水线还可以与主微处理器进行通信,和/或利用显示器用于基于由图形处理器生成的数据来显示图像。

本发明可以在任意合适的系统(诸如合适配置的基于微处理器的系统)中实施。在实施方式中,本发明在计算机和/或基于微处理器的系统中实施。

可以以任意期望且合适的方式来实现本发明的各种功能。例如,如所期望的,本发明的功能能够在硬件或软件中实现。由此,例如,除非另外指示,本发明的各种功能元件和“装置”可以包括可操作为,执行各种功能等的合适的处理器或多个处理器、控制器或多个控制器、功能单元、电路、处理逻辑、微处理器布置等(诸如适当专用的硬件元件和/或可以被编程为以期望方式操作的可编程硬件元件)。

这里还应注意,如将由本领域技术人员理解的,可以复制和/或在给定处理器上并行实现本发明的各种功能等。同样地,各种处理级可以依据要求共享处理电路等。

受制于进行上面讨论的具体功能需要的任意硬件,图形处理流水线另外可以包括:图形处理流水线所包括的普通功能单元等中的任意一个或多个或全部。

本领域技术人员还将理解的是,如合适的话,本发明的全部所述的实施方式可以包括,并且在实施方式中确实包括本文所述的特征中的任何一个或多个或者全部。

根据本发明的方法可以至少部分使用软件(例如,计算机程序)来实施。因此可见,当从其他实施方式来看时,本发明提供:计算机软件,当安装在数据处理器上时,该计算机软件具体适用于执行本文所述的方法的;计算机程序要素,其包括当该程序元件在数据处理器上运行时用于执行本文所述的方法的计算机软件代码部分;以及计算机程序,当该程序在数据处理系统上运行时,该计算机程序包括适用于执行本文所述的方法或多种方法的全部步骤的代码。数据处理器可以为微处理器系统、可编程FPGA(现场可编程门阵列)等。

本发明还扩展为包括计算机软件载体,该计算机软件载体包括在用于操作包括数据处理器的图形处理器、渲染器或为微处理器时连同所述数据处理器一起使得所述处理器、渲染器或系统进行本发明的方法的步骤的这种软件。这种计算机软件载体可以为物理存储介质(诸如ROM芯片、CD ROM、RAM、闪存或盘),或者可以为信号(诸如电线上的电子信号、诸如到卫星的光信号或无线电信号等)。

将要进一步理解的是,并非本发明的方法的全部步骤都需要由计算机软件来执行,因此从更宽泛的实施方式来看,本发明提供用于执行本文所列出的方法的步骤中的至少一个的计算机软件和安装在计算机软件载体上的这种软件。

因此,本发明可以合适地实施为与计算机系统一起使用的计算机程序产品。这种实施可以包括固定在有形非瞬时性介质上的一系列计算机可读指令,该有形非瞬时性介质例如有计算机可读介质,例如磁盘、CD ROM、ROM、RAM、闪速存储器或硬盘。这种实施还可以包括通过有形介质或者无形地利用无线技术经由调制解调器或其它接口装置可以向计算机系统传输的一系统计算机可读指令,该有形介质包括但不限制于光学或模拟通信线路,该无线技术包括但不限制于微波、红外或其它传输技术。一系列的计算机可读指令体现本文之前所述的全部或部分的功能。

本领域技术人员将理解,这种计算机可读指令能够以许多编程语言的形式来编写,用于很多计算机架构或操作系统。进一步地,这种指令可以利用当前或未来的包括但不限制于半导体的任何存储技术来存储,可以是磁性的或光学的,或者可以利用当前或未来包括但不限制于光学、红外或微波的任何通信技术来进行发送。可以想到的是,这种计算机程序产品可以利用随附的印刷或电子文档,例如利用计算机系统在例如系统ROM或固定磁盘上预加载的压缩封装软件,作为可拆除介质进行分配,或者通过网络例如因特网或万维网从服务器或电子公告板中进行分配。

附图说明

将通过仅示例的方式并参照附图描述本发明的各种实施方式,在附图中:

图1示意性地示出包括镶嵌级的常规图形处理流水线的一部分;

图2示出经镶嵌的三角形图块;

图3示出经镶嵌的四边形图块;

图4示意性地示出根据本发明的实施方式的包括图形处理流水线和存储器的图形处理系统;

图5示意性地示出根据本发明的实施方式的包括镶嵌级的图形处理流水线的一部分;

图6示出连同将通常不用于通过阴影指示的镶嵌顶点的区域一起的经镶嵌的三角形图块;

图7示出连同将通常不用于通过阴影指示的镶嵌顶点的区域一起的经镶嵌的四边形图块;

图8示出连同将通常不用于通过阴影指示的镶嵌顶点的区域一起的另选的经镶嵌的四边形图块;

图9示出连同将通常不用于通过阴影指示的镶嵌顶点的区域一起的相叠加的经镶嵌的三角形和四边形图块;

图10A和图10B示出修改镶嵌顶点坐标的方法;

图11示出在对镶嵌顶点坐标对进行编码之前加载累加器的方法;

图12示出作为对镶嵌顶点坐标对进行编码的处理的一部分的将镶嵌顶点坐标对映射到经映射的坐标对的第一映射处理;

图13示出作为对镶嵌顶点坐标对进行编码的处理的一部分的将镶嵌顶点坐标对映射到经映射的坐标对的第二映射处理;

图14示出作为对镶嵌顶点坐标对进行编码的处理的一部分的将镶嵌顶点坐标对映射到经映射的坐标对的第三映射处理;以及

图15示出在不进行映射的情况下对镶嵌顶点坐标对进行编码的处理。

具体实施方式

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

该实施方式特别涉及图形处理流水线中的镶嵌操作。如上所述,当要显示计算机图形图像时,该图像通常首先被定义为一系列图元(primitive)(多边形),该图元然后反过来被划分(光栅化)为用于图形渲染的图形片段。在正常图形渲染操作期间,渲染器将修改(例如)与各片段关联的颜色(红色、绿色以及蓝色(RGB)和透明度(阿尔法)数据),使得可以正确显示片段。在片段已经完全遍历了渲染器时,其关联数据值被存储在存储器中,准备用于输出,例如用于显示。

图4示出与本发明的操作相关的图形处理系统的主要元件。如本领域技术人员将理解的,可以存在图4中未例示的、图形处理系统的其它元件。这里还应注意,图4仅是示意性的,并且例如,在实践中,即使所示的功能单元和流水线级在图4中被示意性地示出为独立的级,但它们也可以共享大量硬件电路。

图4示意性地示出组成用于对图形图像进行渲染以便进行显示的图形处理系统的一部分的图形处理流水线1和存储器2。流水线1包括一系列不同级,每个级执行对组成要进行显示的对象的图元的不同操作,以使其准备好用于最后的显示。

流水线中首先是顶点着色器30,该顶点着色器30对针对所生成的输出的顶点进行顶点着色,并且将经过顶点着色的顶点传递到镶嵌级110。

当图形处理流水线1要产生期望输出,诸如要进行显示的帧时,所需要的图形处理(例如,帧)将作为一个或更多个“绘制调用”进行处理。每个绘制调用将包括要进行处理的一个或更多个图形对象。对于每个绘制调用,限定要被用于绘制调用的顶点的相应组的顶点数据被限定。在优选实施方式中,要进行处理的每个对象由一个或更多个“图块”来表示,其各表示讨论中的对象的区域。

用于绘制调用的顶点数据被顶点着色器30处理,以将顶点的虚拟三维定位转化成其在屏幕空间中的二维定位。

在已经完成了顶点处理时,确定镶嵌是否被启用用于绘制调用。如果镶嵌尚未被启用,则处理直接进行到图元组装级20。然而,为了当前说明的目的,将假设镶嵌已经被启用。在这种情况下,处理中的下一个级是执行镶嵌级110中的镶嵌。

镶嵌级110进行操作以将图块镶嵌成多个较小的镶嵌图元(这将在下面进一步进行讨论)。

然后,镶嵌级110下游的图元组装级20利用图元的顶点的定位和限定顶点之间的连接性的信息来对图元进行组装,并且将经组装的图元传递到栅格化器40。

栅格化级40进行操作,以将组成渲染输出(例如,要显示的图像)的图元栅格化为单独图形片段以处理。为此,栅格化器40接收用于渲染的图形图元,将图元光栅化为采样点,并生成具有用于渲染图元的适当定位(表示适当的采样定位)的图形片段。由栅格化器生成的片段然后向上被发送到流水线的其余部分以处理。

由栅格化器40生成的图形片段被传递到片段着色器50以于渲染(着色)。片段着色级的输出是例如一组的例如针对表示讨论中的输出的区域的每个采样定位的颜色值。

然后,来自片段着色级的经渲染的采样定位通过像素处理器60进行处理,以例如对经渲染的采样定位进行降采样,以提供实际将被输出(例如显示)的像素的经渲染的像素数据。然后,像素数据可以被输出到主要存储器2(例如,帧缓冲区),例如以显示。

现在,将参照图5更加详细地描述镶嵌级110的操作。

图5示出与本发明的操作相关的镶嵌级110和图元组装级20的主要元件。如本领域技术人员将理解的,可以存在图5中未例示的、这些级的其它元件。这里还应注意,图5仅是示意性的,并且例如,在实践中,即使所示的功能单元和流水线级在图5中被示意性地示出为独立的级,但它们也可以共享大量硬件电路。

该实施方式的镶嵌级110可操作用于执行三角形镶嵌。

镶嵌级110的第一级111从顶点着色器30接收图块数据,并且计算镶嵌因子。计算镶嵌因子的方式可以例如依赖于相机在要显示的场景中的定位。

镶嵌级110的第二级112将图块镶嵌成多个三角形镶嵌图元,其中所生成的镶嵌图元的数量依赖于镶嵌因子。

在该实施方式中,第二级112计算一组镶嵌顶点坐标对,其限定图块被划分成镶嵌图元的顶点的定位的重心参数空间内的位置。在该实施方式中,镶嵌顶点坐标是重心坐标(U,V),并且值的范围为0.0到1.0。

在该实施方式中,镶嵌顶点坐标对各由包括34位的第一二进制表示来表示。第一二进制表示的最低17位表示镶嵌顶点坐标对的第一坐标U,并且第一二进制表示的最高17位表示镶嵌顶点坐标对的第二坐标V。镶嵌顶点坐标对的坐标各由包括16小数位的固定点数来表示,使得0.0的坐标由0(即,0 0000 0000 00000000)来表示,并且1.0的坐标由65536(即,1 0000 0000 0000 0000)来表示。

在该实施方式中,第二级112将镶嵌顶点坐标对编码成包括32位的第二二进制表示。第二二进制表示的最低16位表示经编码的坐标对的第一坐标U’,并且第二二进制表示的最高16位表示经编码的坐标对的第二坐标V’。

在该实施方式中,编码处理利用参数空间中的不被使用的、无效的和/或不可到达的位置的区域,即表示用于镶嵌图元的顶点对于图块而言将通常不会具有的定位的区域。现在将参照图6至图9来解释这些区域。

图6示出参数空间中的三角形图块116。参数空间的右下方中的经着色的区域117(即,在U+V>1的情况下)不落入三角形图块116中。因此,可以使用经着色的区域117来对镶嵌顶点坐标对进行编码(映射),这是由于位于经着色的区域117中的位置对于图块116的顶点的定位而言是无效的并且因此将通常不用于表示图块116的顶点的位置。

图7示出参数空间中的正方形图块118。图块118具有奇数镶嵌因子(15)但是已经进行“偶数”镶嵌。这使得沿着图块的中心线添加窄的镶嵌图元。由于镶嵌图元被从中心线向外添加,将存在与图块118的边缘相邻的经着色的区域119,其包括针对图块118的顶点的定位的不可到达的位置并且因此将通常不用于表示图块118的顶点的定位。因此,经着色的区域119还可以用来对镶嵌顶点坐标对进行编码(映射)。

图8再次示出参数空间中的正方形图块122。图块122具有偶数镶嵌因子(14)但是已经进行“奇数”镶嵌的。这再一次使得添加更窄的镶嵌图元,但是这次是远离图块112的中心线。由于镶嵌图元远离中心线被添加,将存在沿着中心线的经着色的区域123,其包括针对图块122的顶点的定位的不可到达的位置并且因此将通常不用于表示图块122的顶点的定位。因此,经着色的区域123还可以用来对镶嵌顶点坐标对进行编码(映射)。

图9示出在参数空间中连同其经着色的区域一起相叠加的三角形图块116、正方形图块118和正方形图块122。图9示出不论图块的形状如何并且不论使用的镶嵌的类型(偶数或奇数)如何,存在将通常不用于表示顶点的定位的区域124、125。在该实施方式中,区域124、125因此被用来对镶嵌顶点坐标对进行编码(映射)。

现在将参照图10A至图15来描述用于镶嵌顶点坐标对的编码处理。

如图10A中所示,在编码之前,对镶嵌顶点坐标对的第一坐标U进行修改,以生成经修改的第一坐标Ux。在该实施方式中,Ux包括24位。Ux是通过将U[16:0]复制到Ux[16:0]而生成的,但是在当U[15]和U[14]不相等并且U[7]为零时的条件下,U[15:8]在被复制之前被取反。U[23:17]利用零填充。

类似地,在编码之前,如图10B中所示,对镶嵌顶点坐标对的第二坐标V进行修改,以生成经修改的第二坐标Vx。在该实施方式中,Vx包括17位。Vx是通过将V[16:0]复制到Vx[16:0]而生成的,但是在当V[15]和V[14]不相等并且V[7]为零时的条件下,V[15:8]在被复制之前被取反。

上述修改具有使参数空间中的无效的和不可到达的位置移动以使得这些位置与参数空间的中心线相邻,而不是跨越该中心线。这使得随后的编码在硬件中成本较少。

如图11中所示,Ux然后被复制到处理单元的累加器A中,用于镶嵌级110的第二级112,使得A[31:16]=Ux[23:8]且A[15:0]=Ux[15:0]。应当注意的是,Ux[15:8]两次被复制到累加器。如将要在下面更加详细地论述的,这能够避免稍后在编码处理中将Ux[15:8]重新定位在累加器内的需要。

此时,镶嵌级110的第二级112的处理单元将确定要应用到镶嵌顶点坐标对的映射处理(如果有的话)。

特别地,当A[24]=1(即Ux[16]=1)并且Vx[16]=0时,U是65536(即1.0)但V不是。在这种情况下,使用如图12中所示的第一映射处理。这里,Vx[15:8]被复制到A[7:0],具有值0x7F的第一预定位组被复制到A[15:8],Vx[7:0]被复制到A[23:16],并且具有值0xFF的第二预定位组被复制到A[31:24]。这将镶嵌顶点坐标对映射到如图9中所示的区域125。

另外,当A[24]=0(即Ux[16]=0)并且Vx[16]=1时,V是65536(即1.0)但U不是。在这种情况下,使用如图13中所示的第二映射处理。这里,具有值0xFF的第三预定位组被复制到A[15:8],并且具有值0x7F的第四预定位组被复制到A[31:24]。如上所述,A[23:16]已经包括Ux[15:8],并且A[7:0]已经包括Ux[7:0],所以不需要将这些位复制到累加器。这将镶嵌顶点坐标对映射到如图9中所示的区域124。

另外,当A[24]=1(即Ux[16]=1)并且Vx[16]=1时,U和V都是65536(即1.0)。在这种情况下,使用如图14中所示的第三映射处理。这里,具有值0x00的第五预定位组被复制到A[7:0],具有值0xFF的第六预定位组被复制到A[15:8],具有值0x80的第七预定位组被复制到A[23:16],并且具有值0x80的第八预定位组被复制到A[31:24]。这将镶嵌顶点坐标对映射到如图9中所示的区域124的唯一位置。

上述映射处理的结果是,A[15:0]包括利用第二二进制表示来进行编码的经映射的坐标对的第一经映射的坐标U’并且A[31:16]包括第二经映射的坐标V’。

另选地,当A[24]=0(即Ux[16]=0)并且Vx[16]=0时,U和V都不是是65536(即1.0)。在这种情况下,不应用映射处理。然而,仍然利用图15中所示的编码处理将镶嵌顶点坐标编码成第二二进制表示。这里,Vx[15:0]被复制到A[31:16]。如上所述,A[15:0]已经包括Ux[15:0],所以不需要将这些位复制到累加器。该处理的结果是A[15:0]包括第一坐标U’,并且A[31:16]包括利用第二二进制表示进行编码的第二坐标V’。

在该实施方式中,如果合适的话,对每个镶嵌顶点对应用上述编码(映射)处理中的一种,使得针对图块获得一组合适的经编码的(经映射的)坐标对。

因此,镶嵌顶点坐标对通过镶嵌级110的第二级112被编码成第二二进制表示。由于第二二进制表示包括32位(即,2位的幂)而不是34位,因此经编码的坐标对A[31:0]能够在被镶嵌级110的第三级113使用之前被更加有效地存储在存储器中。具体地,该实施方式每顶点将节省4字节的内存写入和4字节的内存读取。因此,假设每秒2.5亿个三角形的三角形图元率和每三角形估计0.6个顶点(即,每秒1.5亿个顶点),则该实施方式可以得到每秒1.2千兆字节的带宽节省。

虽然在成本和便利性方面上述编码(和映射)是优选的,但是将要理解的是其它方式也当然是可能的。

在该实施方式中,第二级112还计算镶嵌图元的连接性信息。第二级112能够以任何合适的且期望的方式,例如利用针对该处理的任何已知的且合适的技术来计算镶嵌图元的连接性信息。

镶嵌级110的第三级113接收经编码的坐标对A[31:0]并且对该坐标对A[31:0]进行解码。用于经编码的坐标对A[31:0]的解码处理基本上是用来对如上所述的坐标对进行编码的编码处理的逆处理。

因此,当A[31:24]=0xFF并且A[15:8]=0x7F时,Ux[16:0]被设置为{1’b1,16’b0}(即65536)并且Vx[16:0]被设置为{1’b0,A[7:0],A[23:16]}。另外,当A[31:24]=0x7F并且A[15:8]=0xFF时,Ux[16:0]被设置为{1’b0,A[23:16],A[7:0]}并且Vx[16:0]被设置为{1’b1,16’b0}(即65536)。另外,当A[31:8]=0x8080FF时,Ux[16:0]和Vx[16:0]都被设置为{1’b1,16’b0}(即65536)。这些解码处理的结果是经映射的坐标对A[31:0]被解码(重新映射)成经修改的坐标对Ux,Vx。

另选地,当上述条件中均不被满足时,Ux[16:0]被设置成{1’b0,A[15:8],A[7:0]}并且Vx[16:0]被设置成{1’b0,A[31:24],A[23:16]}。在这种情况下,重新映射处理不被应用到坐标对A[31:0]。然而,仍然将经编码的坐标对A[31:0]解码成经修改的坐标对Ux,Vx。

经解码的(重新映射的)坐标对的第一坐标Ux然后被解修改以获得原始的未经修改的第一坐标U。经解码的(重新映射的)坐标对的第二坐标Vx也被解修改以获得原始的未经修改的第二坐标V。这基本上是参照图10A和图10B进行描述的相同的修改处理。因此,U是通过将Ux[16:0]复制到U[16:0]而获得的,但是在当Ux[15]和Ux[14]不相等并且Ux[7]为零的条件下,Ux[15:8]在被复制之前被取反。类似的,V是通过将Vx[16:0]复制到V[16:0]而获得的,但是在当Vx[15]和Vx[14]不相等并且Ux[7]为零的条件下,Vx[15:8]在被复制之前被取反。

在该实施方式中,对每个经编码的坐标对应用上述编码(映射)处理中的一种,使得针对图块获得一组合适的经解码的镶嵌顶点坐标对。

然后,镶嵌级110的第三级113将经解码的镶嵌顶点坐标对应用到来自第一级111的输出图块,以计算镶嵌图元(即,图块正在被镶嵌成的)的顶点的定位。

镶嵌级110的输出是一组顶点定位和连接性信息。然后,图元组装级20利用由镶嵌级110生成的定位和连接性信息来组装镶嵌图元。在进行了组装时,图元组装级20将镶嵌图元传递到图形处理流水线的下游级以进一步处理(如上所述)。

从上文中可以看出,本发明在其优选实施方式中至少提供用于将最初用第一二进制表示来表示的镶嵌顶点坐标对编码成更加方便的第二二进制表示的一种有效方式。在本发明的优选实施方式中,至少通过将利用第一二进制表示来表示的至少一个镶嵌顶点坐标对映射到利用第二二进制表示来表示的经映射的坐标对来实现上述方式,其中,经映射的坐标对限定针对图块的镶嵌图元的顶点的不被使用的、无效的和/或不可到达的位置。

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