使用了对顶点组进行剔除的图形处理的制作方法

xiaoxiao2020-7-22  22

专利名称:使用了对顶点组进行剔除的图形处理的制作方法
使用了对顶点组进行剔除的图形处理本发明总体上涉及图形处理,并且特别涉及图形处理中的剔除(culling)。新的应用和游戏使用越来越逼真的图形处理技术。结果,增加具有更高的场景复杂度、更高的几何细节、更高的分辨率、以及更高的质量的保持的帧速率总是有益的,所述保持的帧速率是每秒渲染的屏幕图像。理想地,这些改进的特性使得屏幕图像能够被尽可能快地渲染。提高性能的一种方式是通过实现更高的时钟速度、流水线技术、或者采用并行计算来增加图形处理单元的处理能力。然而,这些技术中的一些可能导致更高的功率消耗和产生更多的热。对于电池供电的设备,更高的功率消耗可能减少电池寿命。功率消耗和发热是对移动设备和桌面显示适配器的主要制约。而且,任何给定的图形处理单元的时钟速度都是有限制的。基元是一种几何形状,例如三角形、四边形、多边形、或者任何其他几何形式。可选择地,基元可以是空间中的面或点。表示为三角形的基元具有三个顶点,以及表示为四边形的基元具有四个顶点。因而,顶点包括与空间中的位置相关联的数据。例如,顶点可能包括与基元的角相关联的所有数据。顶点不仅与三个空间坐标相关联,而且与正确渲染对象的其他图形信息相关联,所述其他图形信息包括颜色、反射特性、纹理、以及表面法线。剔除可以被用来避免不必要的图形处理。例如,在处理中可以在早期剔除在最终的描绘中将不被显示的图像元素,以避免在处理不产生差异的元素中所固有的性能损失。 因而,剔除可以被用来去除表面的背面中不将在最终的描绘中显示的细节,以便去除被其他元素遮挡的元素,以及在各种其他情况下,可以剔除对最终的描绘不重要的元素。附图
简沭
图Ia是根据一个实施例的顶点剔除操作的示意性描绘;
图Ib是本发明另一实施例的示意性描绘;
图Ic是本发明又一实施例的示意性描绘;
图Id是本发明又一实施例的示意性描绘;
图Ie是本发明又一实施例的示意性描绘;
图加是图Ia-Ie中所示的实施例的流程图2b是图Ia-Ie中所示的实施例的流程图2c是图Ia-Ie中所示的实施例的流程图2d是图Ia-Ie中所示的实施例的流程图3是示出能够在图Ia-Ie的顶点探测单元中被执行的顶点探测过程的流程图以及
图4是根据本发明一个实施例的通用计算机的示意性描绘。
详细描沭
根据一些实施例,可以对顶点组执行剔除,这与对单独的顶点执行剔除相对。在-
些实施例中,对顶点组执行剔除可能是有利的,因为顶点组可以被丢弃,这在一些情况下可以产生性能增益。而且,正被渲染的对象的大多数表面是不可见的,并且在处理过程中完全渲染的图像没有被转发,这产生了性能增益。换句话说,在一些实施例中,对顶点组执行剔除避免了渲染在当前帧中不可见的表面,从而在一些情况下实现性能增益。图Ia是示出根据一个实施例的显示适配器201的实施例的框图。显示适配器201 包括用于生成数字化表示的图形的电路,从而形成用于剔除顶点组的顶点剔除单元214。顶点剔除单元214的输入210是一组顶点的第一表示。一组顶点的第一表示可以是顶点本身。在顶点剔除单元214中,对顶点组和顶点的表示执行剔除。顶点剔除单元214的输出222可以是,该组顶点将被丢弃。显示适配器201的输出2M可以被显示在显示器上。显示适配器201能够进一步包括图Ib中所示的顶点探测单元212。顶点探测单元 212被安排用于检查是否能够剔除该组顶点的至少一个顶点。所述至少一个顶点可以是该组顶点中的第一个、最后一个、和/或中间的顶点。可选择地,可以从该组顶点中随机地选择它。顶点探测单元212可以使用顶点着色器(shader)来转换顶点。顶点探测单元212 然后执行例如视锥体(view frustum)剔除。单元212确定所述至少一个顶点是否在视锥体内部,以及如果是的话,则不能剔除它。然而应当注意,也可以使用本领域技术人员已知的其他剔除技术。如果该组顶点的所述至少一个顶点不能被剔除,则这意味着整组顶点都不能被剔除,并且然后最好不要在顶点剔除单元214中对整组顶点执行剔除,因为这样的剔除消耗处理能力。图Ic是示出在一个实施例中显示适配器201中的不同实体可以如何交互的的框图。显示适配器201包括顶点剔除单元214、顶点着色器216、三角形遍历单元218、以及片段着色器220。在一个实施例中,图Ic的显示适配器201也能够包括顶点探测单元212,先前已经结合图Ib对其进行了描述。
在图Id中所示的又一实施例中,显示适配器201包括顶点剔除单元214、顶点着色器216、三角形遍历单元218、片段剔除单元228、以及片段着色器220。在一个实施例中,图 Id的显示适配器201也能够包括顶点探测单元212。在片段剔除单元228中,根据可替换剔除程序(也称为可替换剔除模块)来对小片(tile)执行剔除。这个剔除程序的细节和效果在2009年7月21日提交的、顺序号为 12/523,894的美国专利申请中有更详细的解释,该申请的内容由此通过引用被结合。图Id的实施例也能够包括片段探测单元226。片段探测单元2 被安排用于检查是否能够剔除来自小片的至少一个像素。所述至少一个像素可以是例如该小片的中心像素或者该小片的四个角。如果该小片的所述至少一个像素不能被剔除,则这意味着该小片不能被剔除,并且然后最好不要在片段剔除单元228中执行剔除,因为剔除会浪费计算效率 (capacity)0在图Ie中所示的又一实施例中,显示适配器201包括基本基元剔除单元234、顶点剔除单元214、顶点着色器216、三角形遍历单元218、以及片段着色器220。顶点剔除单元214和显示适配器201的输出2 先前已结合图Ia进行了描述。基本基元剔除单元234的输入208是基本基元。计算机图形领域中的几何基元通常被解释为系统能够例如利用绘制(draw)或存储(store)进行处理的原子几何对象。原子几何对象可以被解释为无法分成更小对象的几何对象。所有其他几何元素都是由这些基元建立的。在一个实施例中,图Ie的显示适配器201也能够包括顶点探测单元212,先前已经结合图Ib对其进行了描述。在基本基元剔除单元234中,根据剔除程序对基本基元执行剔除。图Ie的实施例也能够包括基本基元探测单元232。基本基元探测单元232被安排用于检查是否能够剔除基本基元的至少一个顶点。选择该基本基元的至少一个顶点。所述至少一个顶点可以是例如该基本基元的顶点或者该基本基元的中心。如果该基本基元的所述至少一个顶点不能被剔除,那么该基本基元不能被剔除,并且然后最好不要在基本基元剔除单元234中执行基本基元剔除,因为基本基元剔除浪费计算效率。在未在图中示出的又一实施例中,显示适配器201能够包括基本基元探测单元 232、基本基元剔除单元234、顶点探测单元212、顶点剔除单元214、顶点着色器216、三角形遍历单元218、片段探测单元226、片段剔除单元228、以及片段着色器220。图加示出剔除程序的流程图,能够在图la、Ib、1 c、1 d和1 e的顶点剔除单元214中对一组顶点执行该剔除程序。在步骤310中,接收一组顶点的第一表示。接收到的该组顶点可以包括来自至少两个基元的顶点。使用所谓的绘制调用把将被输入到顶点着色器216 中的顶点聚集成组。绘制调用包括顶点以及关于所述顶点如何被连接以创建基元(例如三角形)的信息。绘制调用中的顶点共享共同的渲染状态,这意味着它们与相同的顶点着色器相关联,也与相同的几何着色器、像素着色器以及还有其他类型的着色器相关联。渲染状态描述了特定类型的对象如何被渲染,包括它的材料特性、关联的着色器、纹理、转换矩阵、光、等等。渲染状态能够例如被用于渲染一块木头的一部分、人的一部分、或花的茎的所有基元。 相同绘制调用中的所有顶点能够被用来渲染具有相同材料/外观的对象。为了渲染一个完整的图像,通常需要很多绘制调用。使用绘制调用是因为利用相同的状态和着色器来渲染相对较大集合的基元要比每次渲染一个基元并且不得不为每个基元切换着色器程序更高效。使用绘制调用的另一优点是,避免了应用编程接口(API)中和图形硬件架构中的开销。在步骤320中,基于所述第一组顶点来确定该组顶点的第二表示。可以使用受囿算术(bounded arithmetic)来计算该组顶点的第二表示。三维模型包括k个顶点ρ、
i e
。x坐标的边界可以例如被计算如下无=|min,mmaxU,即计算顶点Pi, i e
的所有χ坐标的最小值和最大值。这产生了区间:px =。可以为P的
所有其他分量以及也为所有其他可变参数计算这样一个区间。应当注意,为了计算这些边界,可以替代地应用其他类型的计算。在上面的例子中,使用了区间算术。仿射算术或泰勒算术是能够被替代地使用的其他类型的受囿算术的例子。在步骤330中,对该组顶点的第二表示执行第一指令集以用于提供该组顶点的第三表示。当执行第一指令集时,可以使用受囿算术。受囿算术可以是例如泰勒算术、区间算术、或者仿射算术,以作为几个例子。在一个实施例中,一个或多个多项式拟合该组顶点的属性,并且泰勒模型被构造,其中多项式部分包括拟合多项式的系数,以及调整余项以使泰勒模型包括该组中的所有顶点。在一些情况下,这样的方法可以比使用区间算术提供更锐利的边界。在步骤340中,对该组顶点的所述第三表示进行剔除过程。为了避免绘制看不到的对象、或对象的部分而执行剔除。图2b_d示出根据图加的剔除程序的不同实施例的流程图,能够在图la、lb、lc、ld 和Ie的顶点剔除单元214中对一组顶点执行该剔除程序。能够以不同的方式聚集在步骤 310中接收到的顶点组。一种方式是使用完整的绘制调用,这意味着该组顶点的第一表示包括绘制调用中的所有顶点。另一种方式是聚集m个基元的顶点,其中m是常数。当使用这种替代方式时,该组顶点的第一表示能够跨越多于一个绘制调用。另一种方式是根据步骤311聚集顶点,如图2b中所示。如果该组顶点中顶点的数目超过阈值,则该组顶点被分成至少两个子组,其中所述至少两个子组包括与相同指令集相关联的顶点,所述相同指令集与顶点位置确定相关联。在一个实施例中,聚集顶点的这种方式可以是前述两种方式的组合。使用这种方式,一组不可以跨越多于一个绘制调用,并且组的尺寸不可以大于m。聚集顶点的另一种方式包括计算包围(enclose)例如顶点的位置的区间。也可以为其他参数计算区间,举例来说,例如颜色。将顶点添加到组中,直到区间超过预定阈值。在一个实施例中,在步骤320中,在步骤320a中(图2b)能够计算该组顶点的第二表示并且然后将其存储在存储器中。下次需要该组顶点的第二表示时,可以从存储器中检索它。这在计算效率上是高效的,因为不必为每组顶点都执行计算。只要输入的顶点组与关联于顶点位置确定的相同的指令集相关联以及与相同的顶点属性相关联,这个解决方案就是可能的。顶点属性可以是例如顶点位置、法线、纹理坐标、等等。在另一实施例中,在步骤320中,在步骤320b (图2b)中能够从存储器检索该组顶点的第二表示。在一个实施例中,能够从与顶点位置确定相关联的第二指令集中导出第一指令集 (图2c中的步骤321)。与顶点位置确定相关联的第二指令集在这里将被解释为顶点着色器中的指令。然后分析该指令集并且隔离被用来计算顶点位置的所有指令。重新定义所述指令为在受囿算术上的操作,所述受囿算术例如是泰勒算术、区间算术、仿射算术、或另一合适的算术。假设在齐次坐标中顶点被表示为P = (px,py, pz, pw)τ(其中通常Pw = 1),以及Τ 是转置运算符,即列向量被使用。在最简单的形式中,顶点着色器程序是一个对顶点P进行操作并计算新的位置Pd的函数。更一般地,顶点着色器程序是一个对顶点ρ和对可变参数集ti,i e
进行操作的函数,参见等式(1)。p = f(p,t,M) 等式(1)为了简化记法,将所有的、参数放入一个长向量t。参数可以是例如时间、纹理坐标、法向向量、纹理、以及更多参数。参数M表示常数参数的集合,例如矩阵、物理常数、等等。除了 Pd外,顶点着色器程序还可以具有许多其他输出,并且因此也可以具有更多输入。在下文中,假设f的自变量(参数)被用在Pd的计算中。当导出与顶点位置确定相关联的第一指令集时,重新用公式表示顶点着色器,以使输入是所述第二表示(例如,该组顶点的属性的区间边界)并且输出是顶点位置的边界, 参见等式⑵。
权利要求
1.一种方法,包括接收一组顶点的第一表示;基于所述第一表示来确定该组顶点的第二表示;对该组顶点的所述第二表示执行第一指令集以用于提供该组顶点的第三表示,所述第一指令集与顶点位置确定相关联;以及对该组顶点的所述第三表示进行剔除过程。
2.根据权利要求1所述的方法,其中所述执行第一指令集包括使用受囿算术,其中受囿算术是来自由泰勒算术、区间算术、以及仿射算术构成的组中的至少一个。
3.根据权利要求1所述的方法,其中所述确定第二表示进一步包括使用受囿算术。
4.根据权利要求3所述的方法,其中所述受囿算术是来自由泰勒算术、区间算术、以及仿射算术构成的组中的至少一个。
5.根据权利要求1所述的方法,其中该组顶点包括来自至少两个基元的顶点。
6.根据权利要求1所述的方法,其中该组顶点包括与关联于顶点位置确定的相同指令集相关联的顶点。
7.根据权利要求1所述的方法,进一步包括从与顶点位置确定相关联的第二指令集中导出所述第一指令集。
8.根据权利要求7所述的方法,进一步包括 从所述第二指令集中导出第三指令集,以及执行所述第三指令集以用于提供法向边界。
9.根据权利要求1所述的方法,其中第一表示的所述接收进一步包括 如果该组顶点中顶点的数目超过阈值,则将该组顶点分成至少两个子组,其中所述至少两个子组包括与关联于顶点位置确定的相同指令集相关联的顶点。
10.根据权利要求1所述的方法,其中所述确定第二表示进一步包括 计算该组顶点的所述第二表示;以及将该组顶点的所述第二表示存储在存储器中。
11.根据权利要求1所述的方法,其中所述确定第二表示进一步包括 从存储器中检索该组顶点的所述第二表示。
12.根据权利要求1所述的方法,进一步包括 从该组顶点中选择至少一个顶点;对所述至少一个顶点的第一表示执行与顶点位置确定相关联的指令集以用于提供所述至少一个顶点的第二表示;以及对所述至少一个顶点的所述第二表示进行剔除过程,其中所述剔除过程的结果包括以下之一剔除所述至少一个顶点的决定; 不剔除所述至少一个顶点的决定;以及在所述剔除过程的结果包括剔除所述至少一个顶点的决定的情况下,执行下述操作 所述接收一组顶点的第一表示; 所述确定该组顶点的第二表示;所述对该组顶点的所述第二表示执行与顶点位置确定相关联的指令集以用于提供该组顶点的第三表示;以及所述对该组顶点的所述第三表示进行剔除过程。
13.根据权利要求1所述的方法,进一步包括确定包围该组顶点的所述第三表示的边界体;以及对所述边界体进行剔除过程。
14.根据权利要求13所述的方法,其中对所述边界体进行所述剔除过程进一步包括执行以下至少之一对所述边界体进行视锥体剔除; 对所述边界体进行背面剔除;以及对所述边界体进行遮挡剔除。
15.根据权利要求1所述的方法,其中所述第三表示是来自由位置边界和法向边界构成的组中的至少一个。
16.根据权利要求15所述的方法,其中对所述第三表示进行所述剔除过程进一步包括执行以下至少之一对所述位置边界进行视锥体剔除;对所述位置边界或所述法向边界进行背面剔除;以及对所述位置边界进行遮挡剔除。
17.一种装置,包括顶点剔除单元,用于接收一组顶点的第一表示,确定该组顶点的第二表示,对该组顶点的所述第二表示执行与顶点位置确定相关联的第一指令集以用于提供该组顶点的第三表示,以及对该组顶点的所述第三表示进行剔除过程;以及耦合到所述单元的顶点着色器。
18.根据权利要求17所述的装置,包括耦合到所述顶点剔除单元的顶点探测单元,所述顶点探测单元确定是否能够剔除一组顶点的至少一个顶点。
19.根据权利要求17所述的装置,包括耦合到所述顶点着色器的三角形遍历单元和片段着色器。
20.根据权利要求17所述的装置,包括用于检查是否能够剔除基本基元的至少一个顶点的基本基元探测单元。
21.根据权利要求20所述的装置,包括用于对基本基元执行剔除的基本基元剔除单兀。
22.根据权利要求17所述的装置,其中所述顶点剔除单元使用受囿算术来执行第一指令集。
23.根据权利要求17所述的装置,其中所述顶点剔除单元使用受囿算术以用于确定所述第二表不。
24.根据权利要求22所述的装置,其中所述受囿算术是泰勒算术、区间算术、或仿射算术中的至少一个。
25.根据权利要求21所述的装置,其中该组顶点包括来自至少两个基元的顶点。
26.一种计算机可执行存储介质,其存储使计算机能够执行下列操作的指令接收一组顶点的第一表示;基于所述第一表示来确定该组顶点的第二表示;对该组顶点的所述第一表示执行第一指令集以用于提供该组顶点的第三表示,所述第一指令集与顶点位置确定相关联;以及对该组顶点的所述第三表示进行剔除过程。
27.根据权利要求沈所述的介质,进一步存储用于确定该组顶点是否包括与关联于顶点位置确定的相同指令集相关联的顶点的指令。
28.根据权利要求沈所述的介质,进一步存储用于从与顶点位置确定相关联的指令集中导出第一指令集的指令。
29.根据权利要求观所述的介质,进一步存储用于从所述第二指令集中导出第三指令集并且执行第三指令集以提供法向边界的指令。
30.根据权利要求沈所述的介质,进一步存储用于确定该组顶点中顶点的数目是否超过阈值并且如果是的话则将该组顶点分成至少两个子组的指令,其中所述至少两个子组包括与关联于顶点位置确定的相同指令集相关联的顶点。
全文摘要
可以接收一组顶点的第一表示,并且可以基于所述第一表示来确定该组顶点的第二表示。可以对该组顶点的所述第二表示执行第一指令集以用于提供该组顶点的第三表示。第一指令集与顶点位置确定相关联。对该组顶点的第三表示进行剔除过程。
文档编号G06T1/20GK102171720SQ200980139207
公开日2011年8月31日 申请日期2009年10月19日 优先权日2008年10月20日
发明者J·哈泽尔格伦, J·蒙克贝里, P·克拉贝里, T·阿克尼内默勒, V·米蒂宁 申请人:英特尔公司

最新回复(0)