曲面细分时间随曲面细分量线性增长的镶嵌器的制作方法

文档序号:6596113阅读:211来源:国知局
专利名称:曲面细分时间随曲面细分量线性增长的镶嵌器的制作方法
曲面细分时间随曲面细分量线性增长的镶嵌器
背景技术
这一般涉及图形处理,包括对图形处理器和用于图形处理的通用处理器的使用。图形流水线可以负责为游戏、计算机动画、医学应用等渲染图形。所生成的图形图像的细节水平可能因图形流水线的限制而低于理想情况。所提供的细节越多,导致图形处理越慢。因此,在处理速度与图形细节之间需要折衷。新的图形处理流水线(诸如微软的 DirectX 11)通过增加曲面细分(tessellation)细节来增加几何细节。曲面细分是形成一系列三角形以通过粗糙的多边形模型开始来渲染对象的图像。 面片(patch)是在描述表面的控制笼(control cage)的粗糙水平上的基本单元。面片可以表示弯曲或区域。表面可以是可被描述为参数函数的任何表面。控制笼是由艺术工作者用来生成平滑表面的低分辨率模型。因此,通过提供更高程度的曲面细分,可被描绘的图形细节水平更高。然而,处理速度可能会受到不利影响。一般而言,处理时间随图像细节水平的增加而二次方地增大。附图简述

图1是根据一个实施例的图形流水线的示意图;图2是根据一个实施例的采用最大内部曲面细分因子缩减函数和1轴内部曲面细分因子轴缩减的内部曲面细分的示图;图3是根据一个实施例的采用平均内部曲面细分因子缩减函数和1轴内部曲面细分因子轴缩减的曲面细分图案的示图;图4是根据一个实施例的使用最小内部曲面细分因子缩减函数的1轴曲面细分的曲面细分图案的示图;图5A是根据一个实施例的1轴内部曲面细分因子轴缩减的示图;图5B是根据一个实施例的1轴内部曲面细分,其中顶边缘具有与图5A不同的边缘细节水平;图5C是根据一个实施例的1轴内部曲面细分,其中左边缘具有与图5A和5B所示的曲面细分不同的边缘细节水平;图6是根据一个实施例的每面片的循环相对于细节水平的假定曲线图,示出在软件镶嵌器上使用1轴、幂2曲面细分的非线性关系和线性关系的效果;图7是本发明一个实施例的流程图;以及图8是根据一个实施例的多核处理器的示意图。详细描述根据一些实施例,曲面细分时间随曲面细分量仅线性增加。通常,曲面细分时间以曲面细分细节量的二次函数增长。结果,在一些实施例中,曲面细分时间可以得到减小,并且在其它实施例中,可以使用次强大的镶嵌器来执行更细节的曲面细分。在一些实施例中,通过在边缘细节水平的范围上预计算一系列经预计算的内部曲面细分,曲面细分时间可以得到节约和/或曲面细分处理能力可以得到增强。这节约了运行时预计算内部曲面细分。
根据一些实施例,曲面细分可以使用三角形或四边形原始域。边缘分割可以涉及将边缘划分成间隔。所使用的间隔越多,可能的曲面细分细节水平越高。因此,增加边缘细节水平可以增加所得曲面细分的分辨率。内部曲面细分是原始域外周长内原始点的曲面细分。外带(outer band)由原始域周长构成。参照图1,图形流水线可以在作为独立、专用集成电路的图形处理器中、软件中、通过软件实现的通用处理器、或者通过软硬件组合来实现。输入装配器12从存储器读出使用固定函数操作、形成几何结构并创建流水线工作项目的顶点。自动生成的标识符使标识符专用处理能够进行,如图1右侧虚线所示。顶点标识符和实例标识符从顶点着色器14向前可用。原始标识符从外壳着色器16向前可用。 控制点标识符仅在外壳着色器16中可用。顶点着色器14执行诸如变换、结皮或照明之类的操作。这输入一个顶点并输出一个顶点。在每个输出控制点调用并且各自由控制点标识符标识的控制点阶段,顶点着色器具有对独立于输出数量的面片读取所有输入控制点的能力。外壳着色器16每次调用输出控制点。聚集输出是下一外壳着色器阶段以及域着色器20的共享输入。对每个面片,可以通过所有输入和输出控制点的共享读取输入调用面片常数阶段一次。外壳着色器16输出边缘曲面细分因子和其它面片常数数据。如本文所使用的,边缘曲面细分因子和在每个原始域边缘有多个间隔的边缘细节水平可以互换使用。可以分割代码使得通过在结束处采用结合步骤并行完成,来做完独立工作。镶嵌器18可以在硬件或软件中实现。在某些有益实施例中,镶嵌器可以是软件实现的镶嵌器。通过加速镶嵌器的操作,如本文所述,进行镶嵌器操作的核可以被释放去进行其它任务。镶嵌器18可以从外壳着色器输入定义曲面细分程度的数量。这生成诸如三角形或四边形之类的原始域以及诸如点、线或三角的拓扑。在一个实施例中,镶嵌器对面片的所有外壳着色器输出的每个经着色的只读输入,输入一个域位置。这可以输出一个顶点。几何着色器22可以输入一个原始域并输出多达四个流,每个流独立地接收零或更多原始域。在几何着色器输出处出现的流可以向光栅器(rasterizeiOM提供原始域,同时多达四个流可被连接到缓冲器30。剪辑、透视划分、查看端口、以及剪裁选择实现和原始设置可以由光栅器M实现。像素着色器沈输入一个像素并且在相同位置输出一个像素或不输出像素。输出合并器观提供固定函数目标渲染、混合、深度、以及模板(stencil)操作。因此,参照图2,根据原始域是四边形的实施例,四边形32具有顶边32t、右边32r、 底边32b以及左边321。在该示例中,顶边32t具有一个间隔,右边32r具有八个间隔,底边32b具有四个间隔,并且左边321具有两个间隔。这些间隔对应于边缘细节水平和曲面细分因子。在镶嵌器18中,内部曲面细分可以使用最小、最大或平均的因子缩减函数。图 2示出最大缩减函数。在该情况下,使用边缘32r来实现曲面细分,因为它具有最大的间隔数。在本实施例中,只计算一个最大值。在其他实施例中,可以使用三角形作为原始域,并且可以使用其它内部曲面细分缩减函数。图3示出采用平均曲面细分因子缩减函数进行处理之后的四边形。在此,平均是基于四个边的间隔的平均。最后,图4示出使用最小边(即顶边32t)的最小曲面细分缩减因子的结果。接下来参照图5A-5C,可将四边形划分成外带36a和内部曲面细分38。外带36a 是沿原始域周长的全部,在此情况下是四边形,并且内部曲面细分是剩余的全部。图5A-5C 示出在1轴内部曲面细分因子缩减示例中,内部曲面细分是相同的,不管外带中使用的间隔数如何,只要外部曲面细分的最大值保持相同。在该示例中,曲面细分因子缩减函数是最大的,并且曲面细分因子轴缩减是1轴。因此,无论边缘细节水平或曲面细分因子如何,内部曲面细分保持相同。结果,有可能对各种不同边缘细节水平预计算内部曲面细分,对其进行存储,并且在运行时期间需要时简单地对其进行应用。因此,对边缘细节水平范围预计算的内部曲面细分可以在运行时被再使用并且无需重新计算,这加速了计算。参照图6,通过使用本发明的实施例,曲面细分时间随曲面细分细节的增加而线性增长,如交叉阴影条所指示。然而,采用其它技术,曲面细分时间随曲面细分细节的增加而非线性地或二次方地增长,如阴影条所指示。如图6所示的示例使用采用幂2边缘分割以及最大曲面细分因子缩减函数的1轴曲面细分缩减。在该示例中,使用基于软件的曲面细分。因此,随着细节水平增加,每面片的循环数在非线性示例中增长到较大程度,但在根据本发明一个实施例的示例中线性增长。通过一些基于硬件的方法,预计算的内部曲面细分与非预计算的内部曲面细分之间的差别可能小一些。参照图7,根据本发明一个实施例,镶嵌器18通过预计算并存储用于内部曲面细分的u和ν值而开始,如框40所指示。u和ν值简单地是沿水平轴u和垂直轴ν的点坐标或点间隔,如诸如图5A所示。而且,可以预计算用于内部曲面细分的三角测量,如框42所指示,并进行存储。因此,在一个实施例中,对于所有不同的边缘细节水平,用于内部曲面细分的各个点的预计算值和所得的三角测量可以被预先确定并存储。然后在运行时,计算沿原始域外带的U、ν值,如框44所指示。而且,在运行时期间,计算用于外带的三角测量,如框46所指示。然后,在运行时期间,镶嵌器18基于可应用的细节水平,查找用于内部曲面细分的合适预计算值。因此,在诸如DirectX 11的一些实施例中,只存在64个离散边缘细节水平。其它实施例可以使用其它数量的边缘细节水平。可以对这些边缘细节水平的每一个预计算内部曲面细分,并进行存储以备运行时使用。在运行时期间,当处理图像时,可以对图像的不同区域指定不同的边缘细节水平。 通常,较靠近相机的物体(以及因此,占据较大屏幕空间的物体)会比离相机较远的物体被曲面细分得更多。因此,在挥拳的动画中,拳头的细节水平可以是最高的,并且远离拳头的区域可以使用较低的细节水平。因此,可以创建相对逼真的渲染,因为用户可能不会注意到绘图内较不感兴趣区域中使用的不同细节水平。结果,可能会遇到各种边缘细节水平。代替在运行时当其出现时才计算用于内部曲面细分的这些细节水平的每个,在一些实施例中, 可以预先计算全部这些细节水平,并随后在运行时查找并简单地使用而无需因确定内部曲面细分点的值以及连接性或三角测量而延迟运行时计算。在一些实施例中,可以使用线程化和矢量化,基于其内部曲面细分因子,对面片进行分类。然后,在多核处理器50的相同物理核上对具有相同细节水平的面片进行曲面细分,如图8所指示。在面片分类器52中分类和分组之后,可将具有相同内部曲面细分细节水平的、要进行曲面细分的所有面片发送到相同的核M或56,然后该核上的所有线程可以在该核的一级58和二级60高速缓存中只使用一个副本。然后,在后续点处,可以使用面片原始ID将三角形解分类(imsort)。就在三角测量中生成的点数而言,外带曲面细分是可变的。因此,可以通过在第一缓冲器62中放置预计算的已知内部曲面细分,使用双缓冲器方法。然后,计算外部曲面细分可变部分并将其存储在第二缓冲器64中。虽然在图8中只描绘了两个核,但是可以使用任何数量的核。根据一个实施例,伪代码可以实现如下
PreProcess ()
{ foreach InsideTessFactor in [2..64]
{ UVBufferT [InsideTessFactor] = CalculateUVBuffer (InsideTessFactor, 丁RI) ; UVBufferQ [InsideTessFactor] = CalculateUVBuffer (InsideTessFactor, QUAD);
权利要求
1.一种方法,包括执行曲面细分时间随曲面细分细节水平增加而线性增加的曲面细分。
2.如权利要求1所述的方法,包括使用软件镶嵌器。
3.如权利要求1所述的方法,包括在运行时之前对多个不同边缘细节水平预计算内部曲面细分值。
4.如权利要求3所述的方法,包括在运行时查找经预计算的内部曲面细分值。
5.如权利要求4所述的方法,包括预计算内部曲面细分的三角测量。
6.如权利要求1所述的方法,包括使用1轴内部曲面细分因子轴缩减。
7.如权利要求1所述的方法,包括使用四边形作为用于所述曲面细分的原始域。
8.如权利要求1所述的方法,包括将具有相同边缘细节水平的面片分类并分组到分立的物理核上。
9.如权利要求8所述的方法,包括线程化和矢量化。
10.一种装置,包括 外壳着色器;以及镶嵌器,耦合到所述外壳着色器以形成曲面细分时间随曲面细分细节水平增加而线性增加的曲面细分。
11.如权利要求10所述的装置,其特征在于,镶嵌器是软件镶嵌器。
12.如权利要求10所述的装置,其特征在于,所述镶嵌器在运行时之前对多个不同边缘细节水平预计算内部曲面细分值。
13.如权利要求12所述的装置,所述镶嵌器在运行时查找经预计算的内部曲面细分值。
14.如权利要求13所述的装置,所述镶嵌器预计算内部曲面细分的三角测量。
15.如权利要求10所述的装置,所述镶嵌器使用1轴内部曲面细分因子轴缩减。
16.如权利要求10所述的装置,所述镶嵌器使用四边形作为原始域。
17.如权利要求10所述的装置,所述镶嵌器将具有相同边缘细节水平的面片分类并分组到多核处理器的分立物理核上。
18.如权利要求17所述的装置,所述镶嵌器使用线程化和矢量化。
19.一种系统,包括包括至少两个核的多核处理器,所述核的每一个包括第一和第二缓冲器; 面片分类器,基于其边缘细节水平对用于曲面细分的面片进行分类并向相同的核提供具有相同细节水平的面片;以及镶嵌器,通过预计算用于内部曲面细分的间隔和三角测量并且使用查找技术在运行时期间应用经预计算的间隔和三角测量,来曲面细分所述面片。
20.如权利要求19所述的系统,使用线程化和矢量化。
21.如权利要求19所述的系统,所述系统执行其中曲面细分时间随曲面细分细节水平增加而线性增加的曲面细分。
22.如权利要求10所述的系统,包括软件镶嵌器。
全文摘要
根据一些实施例,镶嵌器可以随边缘细节水平的增加而只经历曲面细分时间的线性增长。通常,镶嵌器随细节水平的增加经历曲面细分时间的非线性或二次方增长。在一些实施例中,可以预计算内部曲面细分的间隔和三角测量。然后在运行时,可以对可应用的边缘细节水平查找经预计算的值。
文档编号G06T1/20GK102272798SQ200980153800
公开日2011年12月7日 申请日期2009年12月22日 优先权日2008年12月31日
发明者P·A·罗森, R·P·萨特 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1