图形处理装置的制作方法

文档序号:21193837发布日期:2020-06-23 18:30阅读:151来源:国知局
图形处理装置的制作方法

本发明是有关于一种电子装置,且特别是有关于一种图形处理装置。



背景技术:

在图形绘制(例如三维场景绘制)的流水线(pipeline)中,曲面细分(tessellation)已经成为表现物体表面细节的重要步骤。曲面细分已经被广泛运用在d3d、opengl、vulkan等绘制平台上。曲面细分方法会将模型的一个原始几何块(patch)进一步细分为大量的三角形,使得模型表面(例如面部)变得更细腻顺滑,或者使得模型表面(例如地形、海面)变得更高低不平。因此,曲面细分可以增强所绘制图形的真实感。

每个三角形都需要三个顶点来表示。习知的曲面细分方法是记录每一个三角形的三个顶点,而没有考虑到这些顶点之间的连续性。亦即,这些三角形是独立的。无论如何,曲面细分方法产生的三角形的数量会很大。假设曲面细分方法产生了n个三角形,那么习知的流水线需要存储的三角形顶点数目是3n个。数量很大的这些顶点将会给后续的计算和存储造成较大压力。顶点数量越多,流水线需要越多的计算时间来处理这些三角形的顶点。顶点数量越多,流水线需要越多的存储空间来存放这些三角形的顶点。

须注意的是,“背景技术”段落的内容是用来帮助了解本发明。在“背景技术”段落所公开的部份内容(或全部内容)可能不是所属技术领域中具有通常知识者所知道的习知技术。在“背景技术”段落所公开的内容,不代表该内容在本发明申请前已被所属技术领域中具有通常知识者所知悉。



技术实现要素:

本发明提供一种图形处理装置,其可以对曲面细分(tessellation)处理所产生的多个三角形进行三角形条带化处理,以减少顶点的数据量。

本发明的图形处理装置包括曲面细分电路以及后段处理电路。曲面细分电路被配置为进行曲面细分处理,以将在图像帧中的几何块细分为多个三角形。曲面细分电路还被配置为进行三角形条带化处理,以将所述多个三角形的数据转换为三角形条带(trianglestrip)的数据。后段处理电路耦接至曲面细分电路,以接收所述三角形条带的数据。后段处理电路被配置为对所述三角形条带的数据进行后续处理。

基于上述,本发明诸实施例所述曲面细分电路可以将在图像帧中的一个几何块细分为多个三角形,然后考虑这些三角形的顶点之间的连续性而将这些三角形转换为至少一个三角形条带。因此,所述图形处理装置可以大幅度减少这些三角形的顶点的数据量。

为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。

附图说明

图1是根据本发明的一实施例的一种图形处理装置的电路方块(circuitblock)示意图。

图2是根据本发明的一实施例的一种图形处理方法的流程示意图。

图3是以三角形作为所述几何块(或称为patch)的一个示例。

图4是说明一个梯形块被分为多个三角形的一个示例。

图5是以四边形作为所述几何块(或称为patch)的一个示例。

图6是根据本发明的一实施例说明图1所示前段处理电路、曲面细分电路以及后段处理电路的电路方块示意图。

图7是根据本发明的一实施例说明图6所示曲面细分器的操作方法的流程示意图。

图8是根据本发明的一实施例说明图7所示三角形条带化处理步骤的有限状态(finitestate)示意图。

图9是根据本发明的一实施例说明“ioi(内外内型)”三角形的示意图。

图10是根据本发明的一实施例说明“ooi(外外内型)”三角形的示意图。

图11是根据本发明的一实施例说明一个梯形块被分为多个三角形的示意图。

图12是根据本发明的另一实施例说明图7所示三角形条带化处理步骤的有限状态示意图。

图13是根据本发明的一实施例说明“iio(内内外型)”三角形的示意图。

图14是根据本发明的一实施例说明“oio(外内外型)”三角形的示意图。

图15是根据本发明的一实施例说明一个梯形块被分为多个三角形的示意图。

具体实施方式

在本案说明书全文(包括权利要求)中所使用的“耦接(或连接)”一词可指任何直接或间接的连接手段。举例而言,若文中描述第一装置耦接(或连接)于第二装置,则应该被解释成该第一装置可以直接连接于该第二装置,或者该第一装置可以透过其他装置或某种连接手段而间接地连接至该第二装置。本案说明书全文(包括权利要求)中提及的“第一”、“第二”等用语是用以命名元件(element)的名称,或区别不同实施例或范围,而并非用来限制元件数量的上限或下限,亦非用来限制元件的次序。另外,凡可能之处,在图式及实施方式中使用相同标号的元件/构件/步骤代表相同或类似部分。不同实施例中使用相同标号或使用相同用语的元件/构件/步骤可以相互参照相关说明。

图1是根据本发明的一实施例的一种图形处理装置100的电路方块(circuitblock)示意图。图形处理装置100包括前段处理电路110、曲面细分(tessellation)电路120以及后段处理电路130。

图2是根据本发明的一实施例的一种图形处理方法的流程示意图。请参照图1与图2。前段处理电路110耦接至曲面细分电路120,以提供几何块(或称为patch)(步骤s210)。根据设计需求,前段处理电路110可以包括顶点着色器(vertexshader)以及(或是)其他图像帧处理电路。一般而言,一个图像帧包含许多个几何块(patch)。前段处理电路110可以将几何块传送给曲面细分电路120。

曲面细分电路120可以对前段处理电路210所提供的几何块进行曲面细分处理(步骤s220),以便将在图像帧中的几何块细分为多个三角形。根据设计需求,在一些实施例中,曲面细分电路120可以包括外壳着色器(hullshader)、区域着色器(domainshader)、曲面细分器(tessellator)以及(或是)其他图像帧处理电路。曲面细分电路120可以使用外壳着色器完成曲面细分器的预处理,以及使用区域着色器完成曲面细分器的后处理。根据外壳着色器所输出的细分参数,曲面细分器可以即时产生大量的新顶点。然后,区域着色器可以计算这些新顶点的空间位置和颜色。

本实施例并不限制所述曲面细分处理的实施细节。根据设计需求,在一些实施例中,曲面细分电路120所进行的所述曲面细分处理包括:将所述几何块分为多个环形(ring)块;将所述多个环形块的一个分为多个梯形(trapezoid)块;以及将所述多个梯形块的一个分为所述多个三角形。

图3是以三角形作为所述几何块(或称为patch)的一个示例。请参照图1与图3。图3所示几何块300可以被分为四个环形块(例如环形块r31),其中最中心的环形块退化为一个三角形(甚至可以退化为一个中心点)。曲面细分电路120可以将所述多个环形块的每一个分为多个梯形块。举例来说,环形块r31可以被分为梯形块r31_1、r31_2与r31_3。曲面细分电路120可以将所述多个梯形块的每一个分为多个三角形。

图4是说明一个梯形块被分为多个三角形的一个示例。图4所示梯形块的四个顶点为v0、v1、v3与v5。图3所示每一个梯形块(例如梯形块r31_1)可以参照图4所示梯形块的相关说明。曲面细分电路120可以将图4所示梯形块分为四个三角形δv0v1v2、δv1v3v2、δv2v3v4与δv3v5v4。图4所示三角形的划分方式仅为示例,而实际的划分方式可以根据设计需求来决定。

图5是以四边形作为所述几何块(或称为patch)的一个示例。请参照图1与图5。图5所示几何块500可以被分为四个环形块(例如环形块r51),其中最中心的环形块退化为一个四边形(甚至可以退化为一个中心点)。曲面细分电路120可以将所述多个环形块的每一个分为多个梯形块。举例来说,环形块r51可以被分为梯形块r51_1、r51_2、r51_3与r51_4。曲面细分电路120可以将所述多个梯形块的每一个分为多个三角形。图5所示每一个梯形块(例如梯形块r51_1)可以参照图4所示梯形块的相关说明。

请参照图1与图2。一个三角形的数据包括三个顶点的坐标。以此类堆,n个三角形的数据包括3*n个顶点的坐标。一般而言,这些三角形的数量n是很大的。大量的顶点的坐标(三角形的数据)会占用大量的记忆空间,也会增加后续的计算压力。曲面细分电路120还可以对曲面细分处理所产生的这些三角形进行三角形条带化处理(步骤s230),以便将这些三角形的数据转换为三角形条带的数据。

一般而言,曲面细分处理所产生的这些三角形之间的顶点重复性很高。曲面细分电路120可以将这些三角形的数据重新构造成三角形条带(trianglestrip)的形式,以减少顶点的数量。举例来说(参照图4),假设有四个三角形δv0v1v2、δv1v3v2、δv2v3v4与δv3v5v4。亦即,三角形的数据包括3*4=12个顶点坐标。无论如何,这四个三角形是紧密相连的。曲面细分电路120可以将这些三角形的数据转换为三角形条带的数据,即v0v1v2v3v4v5。三角形条带的数据包括6个顶点坐标。假设三角形的数量为n,那么理论上说,三角形条带的数据包括n+2个顶点坐标。通过“把多个三角形变成三角形条带”,三角形条带化处理可以有效减少数据量(顶点数目),减轻了后续的绘制和计算压力。

请参照图1与图2。后段处理电路130耦接至曲面细分电路120,以接收所述三角形条带的数据。后段处理电路130可以对所述三角形条带的数据进行后续处理(步骤s240)。根据设计需求,后段处理电路130可以包括几何着色器(geometryshader)、光栅化部件(raster)、像素着色器(pixelshader)以及(或是)其他图像处理电路。

图6是根据本发明的一实施例说明图1所示前段处理电路110、曲面细分电路120以及后段处理电路130的电路方块示意图。在图6所示实施例中,前段处理电路110包括输入组装单元111与顶点着色器112,而后段处理电路130包括几何着色器131、光栅化部件132、像素着色器133以及输出合并单元134。顶点着色器112可以将几何块传送给曲面细分电路120。在图6所示实施例中,曲面细分电路120包括外壳着色器121、曲面细分器122以及区域着色器123。外壳着色器121可以完成曲面细分的预计算,而区域着色器123可以进行曲面细分的后处理。

外壳着色器121可以对每个几何块(或称为patch)计算出多个控制点(controlpoint)cp和控制参数(细分参数)pc。控制参数pc被传送到曲面细分器122中,以计算出新顶点的坐标值。控制点cp被传送到区域着色器123。根据外壳着色器121所提供的控制点cp和曲面细分器122所提供的顶点坐标值,区域着色器123可以插值出最终的三维坐标以及颜色等属性信息。区域着色器123再把生成的新顶点数据,输出到后段处理电路130的几何着色器131,以进行后期的几何处理。

曲面细分电路120被嵌入到图形流水线中。使用者可以选择打开或者关闭曲面细分电路120。如果关闭,那么顶点着色器112的输出将直接进入到几何着色器131,从而相容各种类型的习知绘制软件。

图7是根据本发明的一实施例说明图6所示曲面细分器122的操作方法的流程示意图。请参照6与图7。在步骤s705中,曲面细分器122可以接收外壳着色器121所供的控制参数pc(当前几何块的控制参数)。在步骤s710中,曲面细分器122可以将当前几何块分为多个环形块。曲面细分器122可以对所有环形块按照从外向内的顺序依次处理。如果所有环形块均处理完毕(步骤s715的判断结果为“是”),那么当前几何块的处理已结束。

如果有环形块(当前环形块)尚未处理(步骤s715的判断结果为“否”),那么曲面细分器122可以对当前环形块,按照预设顺序(例如顺时针方向)产生多个梯形块(步骤s720)。曲面细分器122可以根据几何块(或称为patch)的类型生成梯形块。如果几何块是三角形,那么每个环形块可以生成3个梯形块。如果几何块是四边形,那么每个环形块可以得到4个梯形块。曲面细分器122可以对每个环形块切分得到的多个梯形块,并且依次处理这些梯形块。如果当前环形块的所有梯形块都处理完毕(步骤s725的判断结果为“是”),那么曲面细分器122可以跳转到下一个环形块并且回到步骤s715。

如果当前环形块有梯形块(当前梯形块)尚未处理(步骤s725的判断结果为“否”),那么曲面细分器122可以进行步骤s730。在步骤s730中,曲面细分器122可以将当前梯形块分为多个三角形。在步骤s735中,曲面细分器122可以对这些三角形进行三角形条带化处理,以便将当前梯形块的这些三角形的数据转换为三角形条带的数据。在步骤s740中,曲面细分器122可以将当前梯形块的三角形条带的数据输出给区域着色器123。接下来,曲面细分器122可以跳转到下一个梯形块并且回到步骤s725,直到当前环形块的所有梯形块都处理完毕。

图8是根据本发明的一实施例说明图7所示步骤s735(三角形条带化处理)的有限状态(finitestate)示意图。于图8所示实施例中,三角形条带化处理包括状态s810、状态s820、状态s830与状态s840,其中状态s810为初始态。为了方便说明,步骤s730所产生的这些三角形可以被分类为“ioi”三角形与“ooi”三角形。“ioi”三角形与“ooi”三角形的定义说明于图9与图10。

图9是根据本发明的一实施例说明“ioi”三角形的示意图。图9所示图式符号“o”表示梯形块的下底边(外边,亦即朝向环形块外侧的一个边),而图9所示图式符号“i”表示梯形块的上底边(内边,亦即朝向环形块内侧的另一个边)。根据顺时针(clockwise)方向,因为图9所示三角形δv0v1v2的顶点v0与v2位于内边“i”而顶点v1位于外边“o”,所以为图9所示三角形δv0v1v2属于“ioi(内外内型)”三角形。

图10是根据本发明的一实施例说明“ooi”三角形的示意图。如同图9的相关说明,图10所示图式符号“o”表示梯形块的外边,而图10所示图式符号“i”表示梯形块的内边。根据顺时针方向,因为图10所示三角形δv0v1v2的顶点v0与v1位于外边“o”而顶点v2位于内边“i”,所以为图10所示三角形δv0v1v2属于“ooi(外外内型)”三角形。

图11是根据本发明的一实施例说明一个梯形块被分为多个三角形的示意图。请参照图8与图11。在步骤s730中,曲面细分器122可以将图11所示梯形块“v0v7v4v2”分为多个三角形,如图11所示三角形δv0v1v2、δv1v3v2、δv2v3v4、δv3v5v4、δv5v6v4与δv6v7v4。在步骤s735中,曲面细分器122可以对这些三角形进行图8所示三角形条带化处理,以便将图11所示这些三角形的数据转换为三角形条带的数据。

在状态s810(初始状态)中,曲面细分器122可以从多个三角形中选择一个三角形作为三角形条带的初始三角形。在此可以选择以梯形块右边第一个三角形δv0v1v2作为初始三角形(然而在其他实施例中的实施方式不应以此为限)。因此,曲面细分器122可以在状态s810中从图11所示三角形中选择三角形δv0v1v2。在状态s810中,曲面细分器122可以将三角形δv0v1v2的三个顶点v0、v1与v2的坐标加入所述三角形条带的数据中。此时,三角形条带的数据包括“v0、v1、v2”。在完成状态s810后,无论状态s810所选三角形是“ioi”三角形或是“ooi”三角形,曲面细分器122都会进入状态s820。

在状态s820中,曲面细分器122可以从多个三角形中选择下一个三角形,其中所述下一个三角形的两顶点坐标相同在状态s810所处理的三角形的两顶点坐标。以图11为例,因为δv1v3v2与δv0v1v2共用顶点v1与v2,因此曲面细分器122可以在状态s820中从图11所示多个三角形中选择三角形δv1v3v2。在状态s820中,曲面细分器122可以将三角形δv1v3v2的顶点v3的坐标加入所述三角形条带的数据,以及舍弃三角形δv1v3v2的顶点坐标v1与v2的坐标。此时,三角形条带的数据包括“v0、v1、v2、v3”。

在状态s820中,曲面细分器122可以判断当前三角形的是属于“ioi(内外内型)”或是“ooi(外外内型)”。当曲面细分器122判断当前三角形的三个顶点属于“ioi”时,曲面细分器122可以将一个切符(cutsymbol)加入所述三角形条带的数据以结束所述三角形条带,并且结束状态s820。例如,三角形条带的数据包括“v0、v1、v2、v3、cut”,其中“cut”为切符,表示当前三角形条带已结束。结束状态s820后,曲面细分器122可以回到状态s810以准备处理(产生)下一个三角形条带。

当曲面细分器122判断当前三角形的所述三个顶点属于“ooi”时,曲面细分器122可以离开状态s820并且进入状态s830。在状态s830中,曲面细分器122可以从多个三角形中选择下一个三角形,其中所述下一个三角形的两顶点坐标相同在状态s820所处理的三角形的两顶点坐标。以图11为例,因为δv2v3v4与δv1v3v2共用顶点v3与v2,因此曲面细分器122可以在状态s830中从图11所示多个三角形中选择三角形δv2v3v4。在状态s830中,曲面细分器122可以将三角形δv2v3v4的顶点v4的坐标加入所述三角形条带的数据,以及舍弃三角形δv2v3v4的顶点坐标v3与v2的坐标。此时,三角形条带的数据包括“v0、v1、v2、v3、v4”。

在状态s830中,曲面细分器122可以判断当前三角形的是属于“ioi(内外内型)”或是“ooi(外外内型)”。当曲面细分器122判断当前三角形的三个顶点属于“ooi”时,曲面细分器122可以将一个切符加入所述三角形条带的数据以结束所述三角形条带,并且结束状态s830。例如,三角形条带的数据包括“v0、v1、v2、v3、v4、cut”,其中“cut”为切符,表示当前三角形条带已结束。结束状态s830后,曲面细分器122可以回到状态s810以准备处理(产生)下一个三角形条带。

当曲面细分器122判断当前三角形的所述三个顶点属于“ioi”时,曲面细分器122可以离开状态s830并且进入状态s840。在状态s840中,曲面细分器122可以从多个三角形中选择下一个三角形,其中所述下一个三角形的两顶点坐标相同在状态s830所处理的三角形的两顶点坐标。以图11为例,因为δv3v5v4与δv2v3v4共用顶点v3与v4,因此曲面细分器122可以在状态s840中从图11所示多个三角形中选择三角形δv3v5v4。在状态s840中,曲面细分器122可以将三角形δv3v5v4的顶点v5的坐标加入所述三角形条带的数据,以及舍弃三角形δv3v5v4的顶点v3与v4的坐标。此时,三角形条带的数据包括“v0、v1、v2、v3、v4、v5”。

在状态s840中,曲面细分器122可以判断当前三角形的是属于“ioi(内外内型)”或是“ooi(外外内型)”。当曲面细分器122判断当前三角形的三个顶点属于“ioi”时,曲面细分器122可以将一个切符加入所述三角形条带的数据以结束所述三角形条带,并且结束状态s840。例如,三角形条带的数据包括“v0、v1、v2、v3、v4、v5、cut”,其中“cut”为切符,表示当前三角形条带已结束。结束状态s840后,曲面细分器122可以回到状态s810以准备处理(产生)下一个三角形条带。

当曲面细分器122判断当前三角形的三个顶点属于“ooi”时,曲面细分器122可以离开状态s840并且进入状态s830。状态s830的操作已说明于前文,故不再赘述。以图11为例,因为δv5v6v4与δv3v5v4共用顶点v5与v4,因此曲面细分器122可以在状态s830中从图11所示多个三角形中选择三角形δv5v6v4。在状态s830中,曲面细分器122可以将三角形δv5v6v4的顶点v6的坐标加入所述三角形条带的数据,以及舍弃三角形δv5v6v4的顶点v5与v4的坐标。此时,三角形条带的数据包括“v0、v1、v2、v3、v4、v5、v6”。

在状态s830中,曲面细分器122可以判断当前三角形δv5v6v4是属于“ooi(外外内型)”。因此,曲面细分器122可以将一个切符加入所述三角形条带的数据以结束所述三角形条带,并且结束状态s830且回到状态s810。此时,一个三角形条带已经产生,而其数据包括“v0、v1、v2、v3、v4、v5、v6、cut”。

回到状态s810时,曲面细分器122可以选择图11所示三角形δv6v7v4作为新的三角形条带的初始三角形。因为当前梯形块的所有三角形都以处理完毕,所以曲面细分器122将一个切符加入这个三角形条带的数据。此时,这个新的三角形条带的数据包括“v6、v7、v4、cut”。

因此,曲面细分器122可以将三角形的数据“v0、v1、v2”、“v0、v3、v2”、“v2、v3、v4”、“v3、v5、v4”、“v5、v6、v4”与“v6、v7、v4”转换为三角形条带的数据“v0、v1、v2、v3、v4、v5、v6、cut”与“v6、v7、v4、cut”。三角形的数据包含6*3=18个顶点坐标,而三角形条带的数据包含7+3=10个顶点坐标。通过“把多个三角形变成三角形条带”,曲面细分器122可以进行三角形条带化处理以有效减少数据量(顶点数目),进而减轻了后续的绘制和计算压力。

图12是根据本发明的另一实施例说明图7所示步骤s735(三角形条带化处理)的有限状态示意图。于图12所示实施例中,三角形条带化处理包括状态s1210、状态s1220、状态s1230与状态s1240,其中状态s1210为初始态。为了方便说明,步骤s730所产生的这些三角形可以被分类为“iio”三角形与“oio”三角形。“iio”三角形与“oio”三角形的定义说明于图13与图14。

图13是根据本发明的一实施例说明“iio”三角形的示意图。图13所示图式符号“o”表示梯形块的下底边(外边,亦即朝向环形块外侧的一个边),而图13所示图式符号“i”表示梯形块的上底边(内边,亦即朝向环形块内侧的另一个边)。根据逆时针(counterclockwise)方向,因为图13所示三角形δv0v1v2的顶点v0与v1位于内边“i”而顶点v2位于外边“o”,所以为图13所示三角形δv0v1v2属于“iio(内内外型)”三角形。

图14是根据本发明的一实施例说明“oio”三角形的示意图。如同图13的相关说明,图14所示图式符号“o”表示梯形块的外边,而图14所示图式符号“i”表示梯形块的内边。根据逆时针方向,因为图14所示三角形δv0v1v2的顶点v0与v2位于外边“o”而顶点v1位于内边“i”,所以为图10所示三角形δv0v1v2属于“oio(外内外型)”三角形。

请参照图12。在状态s1210(初始状态)中,曲面细分器122可以从多个三角形中选择一个三角形作为三角形条带的初始三角形。在此可以选择以梯形块右边第一个三角形作为初始三角形(然而在其他实施例中的实施方式不应以此为限)。曲面细分器122可以在状态s1210中将三角形δv0v1v2的三个顶点v0、v1与v2的坐标加入所述三角形条带的数据中。在完成状态s1210后,无论状态s1210所选三角形是“iio”三角形或是“oio”三角形,曲面细分器122都会进入状态s1220。

在状态s1220中,曲面细分器122可以从多个三角形中选择下一个三角形,其中所述下一个三角形的第一顶点坐标与第二顶点坐标相同在状态s1210所处理的三角形的两顶点坐标。曲面细分器122可以在状态s1220中将所选的三角形的第三顶点的坐标加入所述三角形条带的数据,以及舍弃所选的三角形的第一顶点坐标与第二顶点坐标。

曲面细分器122可以判断当前三角形的是属于“iio(内内外型)”或是“oio(外内外型)”。当曲面细分器122判断当前三角形的三个顶点属于“oio”时,曲面细分器122可以将一个切符加入所述三角形条带的数据以结束所述三角形条带,并且结束状态s1220。结束状态s1220后,曲面细分器122可以回到状态s1210以准备处理(产生)下一个三角形条带。

当曲面细分器122在状态s1220中判断当前三角形的三个顶点属于“iio”时,曲面细分器122可以离开状态s1220并且进入状态s1230。在状态s1230中,曲面细分器122可以从多个三角形中选择下一个三角形,其中所述下一个三角形的第一顶点坐标与第二顶点坐标相同在状态s1220所处理的三角形的两顶点坐标。曲面细分器122可以在状态s1230中将所选的三角形的第三顶点的坐标加入所述三角形条带的数据,以及舍弃所选的三角形的第一顶点坐标与第二顶点坐标。

在状态s1230中,曲面细分器122可以判断当前三角形的是属于“iio(内内外型)”或是“oio(外内外型)”。当曲面细分器122判断当前三角形的三个顶点属于“iio”时,曲面细分器122可以将一个切符加入所述三角形条带的数据以结束所述三角形条带,并且结束状态s1230。结束状态s1230后,曲面细分器122可以回到状态s1210以准备处理(产生)下一个三角形条带。

当曲面细分器122在状态s1230中判断当前三角形的所述三个顶点属于“oio”时,曲面细分器122可以离开状态s1230并且进入状态s1240。在状态s1240中,曲面细分器122可以从多个三角形中选择下一个三角形,其中所述下一个三角形的第一顶点坐标与第二顶点坐标相同在状态s1230所处理的三角形的两顶点坐标。曲面细分器122可以在状态s1240中将所选的三角形的第三顶点的坐标加入所述三角形条带的数据,以及舍弃所选的三角形的第一顶点坐标与第二顶点坐标。

在状态s1240中,曲面细分器122可以判断当前三角形的是属于“iio(内内外型)”或是“oio(外内外型)”。当曲面细分器122判断当前三角形的三个顶点属于“oio”时,曲面细分器122可以将一个切符加入所述三角形条带的数据以结束所述三角形条带,并且结束状态s1240。结束状态s1240后,曲面细分器122可以回到状态s1210以准备处理(产生)下一个三角形条带。当曲面细分器122在状态s1240中判断当前三角形的三个顶点属于“iio”时,曲面细分器122可以离开状态s1240并且进入状态s1230。状态s1230的操作已说明于前文,故不再赘述。

图15是根据本发明的一实施例说明一个梯形块被分为多个三角形的示意图。在图7所示步骤s730中,曲面细分器122可以将图15所示梯形块“v0v7v4v1”分为多个三角形,如图15所示三角形δv0v1v2、δv2v1v3、δv1v4v3、δv3v4v5、δv5v4v6与δv6v4v7。在图7所示步骤s735中,曲面细分器122可以对这些三角形进行图12所示三角形条带化处理,以便将图15所示这些三角形的数据转换为三角形条带的数据。

请参照图12与图15。在状态s1210(初始状态)中,曲面细分器122可以从多个三角形中选择一个三角形作为三角形条带的初始三角形。在此可以选择以梯形块右边第一个三角形δv0v1v2作为初始三角形(然而在其他实施例中的实施方式不应以此为限)。因此,曲面细分器122可以在状态s1210中从图15所示多个三角形中选择三角形δv0v1v2。曲面细分器122可以在状态s1210中将三角形δv0v1v2的三个顶点v0、v1与v2的坐标加入所述三角形条带的数据中。此时,三角形条带的数据包括“v0、v1、v2”。在完成状态s1210后,无论状态s1210所选三角形是“iio”三角形或是“oio”三角形,曲面细分器122都会进入状态s1220。

在状态s1220中,曲面细分器122可以从多个三角形中选择下一个三角形,其中所述下一个三角形的两顶点坐标相同在状态s1210所处理的三角形的两顶点坐标。以图15为例,因为δv2v1v3与δv0v1v2共用顶点v1与v2,因此曲面细分器122可以在状态s1220中从图15所示多个三角形中选择三角形δv2v1v3。在状态s1220中,曲面细分器122可以将三角形δv2v1v3的顶点v3的坐标加入所述三角形条带的数据,以及舍弃三角形δv2v1v3的顶点坐标v1与v2的坐标。此时,三角形条带的数据包括“v0、v1、v2、v3”。

在状态s1220中,曲面细分器122可以判断当前三角块的是属于“iio(内内外型)”或是“oio(外内外型)”。因为当前三角形δv2v1v3的三个顶点属于“oio”,所以曲面细分器122可以将一个切符加入所述三角形条带的数据以结束所述三角形条带,并且结束状态s1220。此时,三角形条带的数据包括“v0、v1、v2、v3、cut”,其中“cut”为切符,表示当前三角形条带已结束。结束状态s1220后,曲面细分器122可以回到状态s1210以准备处理(产生)下一个三角形条带。

回到状态s1210后,曲面细分器122可以从多个三角形中选择下一个三角形δv1v4v3。曲面细分器122可以在状态s1210中将三角形δv1v4v3的三个顶点v1、v4与v3的坐标加入所述三角形条带的数据中。此时,三角形条带的数据包括“v1、v4、v3”。在完成状态s1210后,无论状态s1210所选三角形是“iio”三角形或是“oio”三角形,曲面细分器122都会进入状态s1220。

在状态s1220中,曲面细分器122可以选择三角形δv3v4v5,其中三角形δv3v4v5的两顶点坐标v3与v4相同在状态s1210所处理的三角形δv1v4v3的两顶点坐标v3与v4。曲面细分器122可以在状态s1220中将三角形δv3v4v5的顶点v5的坐标加入所述三角形条带的数据,以及舍弃三角形δv3v4v5的顶点坐标v3与v4的坐标。此时,三角形条带的数据包括“v1、v4、v3、v5”。

在状态s1220中,曲面细分器122可以判断当前三角形δv3v4v5的是属于“iio(内内外型)”或是“oio(外内外型)”。因为当前三角形δv3v4v5的三个顶点属于“oio”,所以曲面细分器122可以将一个切符加入所述三角形条带的数据以结束所述三角形条带,并且结束状态s1220。此时,三角形条带的数据包括“v1、v4、v3、v5、cut”,其中“cut”为切符,表示当前三角形条带已结束。结束状态s1220后,曲面细分器122可以回到状态s1210以准备处理(产生)下一个三角形条带。

回到状态s1210后,曲面细分器122可以从选择下一个三角形δv5v4v6。曲面细分器122可以在状态s1210中将三角形δv5v4v6的三个顶点v5、v4与v6的坐标加入所述三角形条带的数据中。此时,三角形条带的数据包括“v5、v4、v6”。在完成状态s1210后,无论状态s1210所选三角形是“iio”三角块或是“oio”三角形,曲面细分器122都会进入状态s1220。

在状态s1220中,曲面细分器122可以选择三角形δv6v4v7,其中三角形δv6v4v7的两顶点坐标v4与v6相同在状态s1210所处理的三角形δv5v4v6的两顶点坐标v4与v6。曲面细分器122可以在状态s1220中将三角形δv6v4v7的顶点v7的坐标加入所述三角形条带的数据,以及舍弃三角形δv6v4v7的顶点坐标v6与v4的坐标。此时,三角形条带的数据包括“v5、v4、v6、v7”。因为当前梯形块的所有三角形都已处理完毕,所以曲面细分器122可以将一个切符加入所述三角形条带的数据以结束所述三角形条带,并且结束状态s1220。此时,三角形条带的数据包括“v5、v4、v6、v7、cut”,其中“cut”为切符,表示当前三角形条带已结束。

因此,曲面细分器122可以将三角形的数据“v0、v1、v2”、“v2、v1、v3”、“v1、v4、v3”、“v3、v4、v5”、“v5、v4、v6”与“v6、v4、v7”转换为三角形条带的数据“v0、v1、v2、v3、cut”、“v1、v4、v3、v5、cut”与“v5、v4、v6、v7、cut”。三角形的数据包含6*3=18个顶点坐标,而三角形条带的数据包含4+4+4=12个顶点坐标。通过“把多个三角形变成三角形条带”,曲面细分器122可以进行三角形条带化处理以有效减少数据量(顶点数目),进而减轻了后续的绘制和计算压力。

根据不同的设计需求,上述图形处理装置100、前段处理电路110、曲面细分电路120、外壳着色器121、曲面细分器122、区域着色器123与(或)后段处理电路130的方块的实现方式可以是硬件(hardware)、固件(firmware)、软件(software,即程序)或是前述三者中的多者的组合形式。

以硬件形式而言,上述图形处理装置100、前段处理电路110、曲面细分电路120、外壳着色器121、曲面细分器122、区域着色器123与(或)后段处理电路130的方块可以实现于集成电路(integratedcircuit)上的逻辑电路。上述图形处理装置100、前段处理电路110、曲面细分电路120、外壳着色器121、曲面细分器122、区域着色器123与(或)后段处理电路130的相关功能可以利用硬件描述语言(hardwaredescriptionlanguages,例如veriloghdl或vhdl)或其他合适的编程语言来实现为硬件。举例来说,上述图形处理装置100、前段处理电路110、曲面细分电路120、外壳着色器121、曲面细分器122、区域着色器123与(或)后段处理电路130的相关功能可以被实现在一个或多个控制器、微控制器、微处理器、专用集成电路(application-specificintegratedcircuit,asic)、数字信号处理器(digitalsignalprocessor,dsp)、现场可编程门阵列(fieldprogrammablegatearray,fpga)及/或其他处理单元中的各种逻辑区块、模组和电路。

以软件形式及/或固件形式而言,上述图形处理装置100、前段处理电路110、曲面细分电路120、外壳着色器121、曲面细分器122、区域着色器123与(或)后段处理电路130的相关功能可以被实现为编程码(programmingcodes)。例如,利用一般的编程语言(programminglanguages,例如c、c++或组合语言)或其他合适的编程语言来实现上述图形处理装置100、前段处理电路110、曲面细分电路120、外壳着色器121、曲面细分器122、区域着色器123与(或)后段处理电路130。所述编程码可以被记录/存放在记录介质中,所述记录介质中例如包括只读存储器(readonlymemory,rom)、存储装置及/或随机存取存储器(randomaccessmemory,ram)。计算机、中央处理器(centralprocessingunit,cpu)、控制器、微控制器或微处理器可以从所述记录介质中读取并执行所述编程码,从而达成相关功能。作为所述记录介质,可使用“非暂时性的计算机可读介质(non-transitorycomputerreadablemedium)”,例如可使用带(tape)、碟(disk)、卡(card)、半导体存储器、可编程设计的逻辑电路等。而且,所述程序也可经由任意传输介质(通信网络或广播电波等)而提供给所述计算机(或cpu)。所述通信网络例如是互联网(internet)、有线通信(wiredcommunication)、无线通信(wirelesscommunication)或其它通信介质。

综上所述,本发明诸实施例所述曲面细分电路120可以将在图像帧中的一个几何块(或称为patch)细分为多个三角形。所述曲面细分电路120可以考虑这些三角形的顶点之间的连续性,而将这些三角形转换为至少一个三角形条带。因此,所述图形处理装置100可以有效减少这些三角形的顶点的数据量。

虽然本发明已以实施例公开如上,然其并非用以限定本发明,任何所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视后附的权利要求所界定者为准。

[符号说明]

100:图形处理装置

110:前段处理电路

111:输入组装单元

112:顶点着色器

120:曲面细分电路

121:外壳着色器

122:曲面细分器

123:区域着色器

130:后段处理电路

131:几何着色器

132:光栅化部件

133:像素着色器

134:输出合并单元

300、500:几何块

cp:控制点

i:内边

o:外边

pc:控制参数

r31、r51:环形块

r31_1、r31_2、r31_3、r51_1、r51_2、r51_3、r51_4:梯形块

s210~s240、s705~s740:步骤

s810、s820、s830、s840、s1210、s1220、s1230、s1240:状态

v0、v1、v2、v3、v4、v5、v6、v7:顶点。

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