本发明涉及图形处理,并且具体地涉及包括生成插值顶点属性数据的片段着色阶段(shading stage)的图形处理系统的操作。
背景技术:
图形处理通常以流水线方式进行,一个或更多个流水线阶段对数据进行操作,以生成显示的最终图像。该处理的两个重要部分通常是:所谓的顶点着色操作(诸如对表示要显示的图像的图元(primitive)(多边形)的顶点进行的转换和发光);和随后的对构成要显示的图像的独立片段着色(染上颜色)的片段(像素)着色操作。
顶点着色操作通常在图形处理的所谓“顶点着色器”阶段中进行。这通常是对输入数据值执行顶点着色器程序,以生成用于由图形流水线的剩余部分处理的期望的一组输出数据(例如,适当转换且点亮的顶点数据)的可编程处理单元。场景的各图元(多边形)通常被限定且表示为一组顶点,各顶点与该顶点的一组数据值关联。顶点着色处理例如基于顶点有关的图元要经受的任意转换或发光,来修改最初限定的顶点的数据值。
一旦场景的输入数据值被顶点“着色”,那么表示场景的图元通常被栅格化,以生成场景的多个待处理“片段”。这些片段是上面进行图形处理操作(诸如渲染)的不连续图形实体。各片段将对应于场景的采样点或多个采样点,一旦片段被采样,将片段与允许显示采样点的所需数据(诸如红、绿、蓝色(RGB)值、透明度(alpha)值以及深度(z)值)关联。片段还可以被称为像素,但因为后处理(诸如缩放)可以意味着图形处理操作所针对的实体(片段)与显示像素之间没有一一对应,所以不是必然是给定片段将恰好对应于最终显示中的单个像素(像素元素)的情况。
一旦生成图形片段,那么图形片段经受将它们着色以生成它们的最终输出色值等的若干处理,诸如顶点数据的插值、应用稳定、混合等。导出输出数据值(例如显示片段表示的采样点需要)等的这种处理可以称为“片段着色”或“像素着色”,并且在处理流水线的片段着色器(还称为像素着色器)阶段中进行。片段着色处理处理片段的最初限定片段数据值,以正确导出片段的输出数据(显示片段表示的采样点所需的数据)。片段着色器再次可以是执行对片段适当着色(染上颜色)的一个或更多个片段着色器程序的可编程单元。片段可以独立或一起以小组为单位进行处理(例如,采样、着色等)。例如,一组2x2的片段通常被一起处理为“四元组”,但有时使用更小或更大组的片段。
顶点和片段着色操作一般对所谓的“属性”进行操作。属性为着色器程序中的输入或输出变量,并且例如可以表示颜色、透明度、纹理坐标等。顶点着色器将对于用于限定并表示场景的各图元(多边形)生成一组属性(颜色、透明度、纹理坐标等)。这些生成的属性通常可以称为顶点着色的属性数据。
作为片段着色处理的一部分,片段着色器通常对顶点着色的属性数据进行插值,以便生成片段的采样点的插值属性数据。提供插值属性数据的该处理通常可以称为变化计算(varying calculation),并且例如可以在片段着色器的变化流水线中进行。变化流水线通常包括变化插值器,该变化插值器输入片段(例如,片段的采样点)的顶点着色属性数据和x、y坐标,并且输出插值属性数据。
图1例示了使用四个片段6、7、8、9的“四元组”10对三角形图元5进行采样的对顶点着色属性数据进行插值的方法,片段6、7、8、9中的每一个具有中心采样点。在该示例中,各个采样点的x、y坐标由变化插值器直接用于估算图元的变化平面等式,以便提供这些采样点的插值属性数据(S0、S1、S2、S3)。然而,直接以该方式估算各组x、y坐标的变化平面等式可能在计算上是昂贵的。
图2例示了这些片段中的一个片段6的采样点中的仅一个的x、y坐标直接用于提供该采样点的插值属性数据S0的另选方法。然后,采样点delta值Sx、Sy用于例如以以下方式提供其它片段7、8、9的其它采样点中的每一个的插值属性数据S1、S2、S3:
S1=S0+Sx
S2=S0+Sy
S3=S0+Sx+Sy
因为不必使用该采样点的x、y坐标对在各个采样点处的图元的变化平面等式进行完全估算,所以以该方式使用采样点delta值可以比直接使用各个采样点的x、y坐标在计算上更便宜。然而,因为涉及采样点delta值的加法运算的次数跨所有采样点不一致,所以该方法仍然低效。具体地,仅存在生成S1和S2的单个加法运算,而存在生成S3的两个加法运算。这例如可以意味着在一些运算周期期间可以使得用于执行加法运算的一些加法器闲置,或者可以需要包括反馈环路。
技术实现要素:
申请人相信还存在针对包括生成插值顶点属性数据的片段着色阶段的图形处理器的改进的范围。
根据本发明的一个方面,提供了一种操作图形处理系统的方法,该图形处理系统包括片段着色阶段,该片段着色阶段处理图元的顶点着色属性数据,以便生成采样点的插值属性数据,所述方法包括以下步骤:
生成图元的采样点delta值;以及
生成针对对所述图元进行采样的一组多个采样点中的至少一个采样点的插值属性数据;
其中,使用所述一组多个采样点的参考点的位置连同所述采样点delta值中的至少一个采样点delta值,来生成针对所述至少一个采样点的所述插值属性数据;
其中,关于第一坐标系来限定所述一组多个采样点的所述参考点的所述位置,并且其中,关于相对于所述第一坐标系旋转的第二坐标系来限定所述图元的所述采样点delta值。
根据本发明的另一个方面,提供了一种图形处理系统,该图形处理系统包括片段着色阶段,该片段着色阶段被配置为处理图元的顶点着色属性数据,以便生成采样点的插值属性数据,所述系统还包括处理电路,该处理电路被配置为:
生成图元的采样点delta值;并且
生成针对对所述图元进行采样的一组多个采样点中的至少一个采样点的插值属性数据;
其中,所述处理电路被配置为,使用所述一组多个采样点的参考点的位置连同所述采样点delta值中的至少一个采样点delta值,来生成针对所述至少一个采样点的所述插值属性数据;
其中,关于第一坐标系来限定所述一组多个采样点的所述参考点的所述位置,并且其中,关于相对于所述第一坐标系旋转的第二坐标系来限定所述图元的所述采样点delta值。
在本发明中,一组多个采样点中的采样点的插值属性数据使用该组多个采样点的参考点的位置连同至少一个采样点delta值来生成。如上所讨论的,使用采样点delta值可以比例如直接使用各个采样点的位置生成插值属性数据在计算上更便宜。此外,在本发明中,关于第二坐标系来限定采样点delta值,第二坐标系相对于用于限定参考点的位置的第一坐标系旋转。申请人已经认识到这例如可以更均匀地分配在将采样点delta值用于生成插值属性数据特别是对于许多普通采样点模式(诸如排序的(Ordered)4x、旋转的(Rotated)4x、直接3D(Direct3D)8x等)时需要执行的运算的次数。由此,本发明提供了一种允许更有效生成插值属性数据的图形处理系统。
第一坐标系可以包括第一对垂直轴,该第一对垂直轴在这里可以称为“x”和“y”轴。第一坐标系的坐标可以与输出位置(例如,显示屏位置)有关。由此,第一坐标系可以称为“屏幕空间”。对于分层或3维图形处理,第一坐标系可以包括垂直于该对垂直轴的另外轴。另外轴在这里可以称为“z”或“深度”轴。
第二坐标系可以包括第二对垂直轴,该第二对垂直轴在这里可以称为“xmy”和“xpy”轴。如上所讨论的,第二坐标系相对于第一坐标系旋转。由此,第二坐标系可以称为“旋转后的屏幕空间”。如将理解的,第二坐标系的第二对垂直轴优选地相对于第一坐标系的第一对垂直轴旋转。对于分层或3维图形处理,第二坐标系可以再次包括垂直于第二对垂直轴的另外轴。该另外轴可以与第一坐标系共享且可以再次称为“z”或“深度”轴。
因此,第二坐标系优选地相对于由第一和/或第二对垂直轴和/或关于第一和/或第二坐标系和/或关于垂直于第一和/或第二对垂直轴(并且优选地不垂直于其它轴)的另外轴限定的平面内的第一坐标系旋转。在优选的实施方式中,第二坐标系相对于第一坐标系旋转45°(或45°的倍数),但例如可以根据用于对图元进行采样的一组多个采样点的特定采样点模式使用其它旋转。
该组多个采样点的参考点可以定位于任意期望且合适的位置处。然而,在优选实施方式中,参考点可定位于沿着第一坐标系的轴中的一个或更多个的整数位置(例如,整数(x或y)座标、整数个片段/像素等)处。这些实施方式例如可以减小表示参考点的位置所需的位数。
在优选实施方式中,参考点关于该组采样点中的多个采样点被中心定位。在优选实施方式中,该组多个采样点中的采样点中的至少一些或全部与参考点等距。参考点优选地被定位为,使得从参考点到该组多个采样点中的采样点中的至少一个、一些或全部的直线平行于第二坐标系的轴线中的一个。参考点优选地被定位为,使得该组多个采样点中的采样点中的至少一个、一些或全部可以沿着第二坐标系的轴线中的一个或更多个由整数个单元步骤从参考点到达。这些实施方式例如可以进一步简化在将采样点delta值用于生成插值属性数据时需要执行的操作。
例如可以以传统方式由图形处理系统的顶点着色阶段来生成图元的顶点着色属性数据。由此,图形处理系统可以包括顶点着色阶段,该顶点着色阶段处理输入属性数据,以生成要由片段着色阶段使用的图元的顶点着色属性数据。顶点着色属性数据可以是:顶点着色器可以生成或可以对于操作的任意期望和合适的这种属性数据。这例如可以包括图元的属性值(诸如顶点位置、顶点颜色、顶点透明度、顶点纹理坐标等)。
在优选实施方式中,生成插值属性数据的步骤发生在图元的抽象参数空间中。参数空间优选地为图元的质心参数(barycentric parameter)空间。
如将由本领域技术人员理解的,图元的质心参数空间内的点的质心坐标通常由i、j、k给出,其中,i、j、k中的每一个指示该点的各顶点属性的权重(或到该顶点的距离)。i+j+k的和通常被归一化(normalise)为等于1。由此,k的值可以使用i和j的值来推断。由此,在优选实施方式且在以下描述中,不再外考虑k的值。
图元的质心参数空间内的点的质心坐标可以以任意期望且合适的方式来计算。然而,在优选实施方式且在以下描述中,图元的质心参数空间内的、点的质心坐标根据图元的变化平面等式的质心系数(ia、ja;ib、jb;ic、jc)来计算。未旋转第一坐标系中的这些变化平面等式可以采取形式:
i(x,y)=ia*x+ib*y+ic
j(x,y)=ja*x+jb*y+jc
因此,可以提供图元的质心系数(ia、ja;ib、jb;ic、jc)。质心系数(ia、ja;ib、jb;ic、jc)例如可以使用从顶点着色阶段输出的顶点位置数据在图元(例如,三角形)设置期间生成。可以由在图形处理流水线中的栅格化阶段之前或形成栅格化阶段的一部分的、图形处理系统的图元(例如,三角形)的设置阶段进行图元设置。
如将由本领域技术人员理解的,上述质心坐标未被透视校正。因此,如果期望,还可以提供图元的质心参数空间内的、点的透视校正值(w)。
可以以任意期望且合适的方式来计算图元的质心参数空间内的点的透视校正值(w)。然而,在优选实施方式中,图元的质心参数空间内的、点的透视校正值(w)根据图元的变化平面等式的透视校正系数(wa、wb、wc)来计算。未旋转第一坐标系的该变化平面等式可以采取形式:
w(x,y)=wa*x+wb*y+wc
然后,各透视校正质心坐标由以下等式给出:
i(x,y)=i(x,y)/w(x,y)
j(x,y)=j(x,y)/w(x,y)
如果期望,各透视校正值(w)和/或透视校正系数(wa、wb、wc)可以包括在应用透视校正时具有归一化质心坐标的效果的图元的常数因子。
再次,透视校正系数(wa、wb、wc)例如可以使用从顶点着色阶段输出的顶点位置数据在图元设置期间生成。
图元的采样点delta值(Sxpy;Sxmy)各优选地与关于沿着第二坐标系的轴(xmy,xpy)中的一个的单元步骤在对图元进行采样时插值的值(例如,色值(RGB)、透明度值(alpha)、纹理坐标、质心坐标(i,j)、透视校正值(w)等)的变化有关。
如上所讨论的,在优选实施方式中,生成插值属性数据的步骤发生在质心参数空间中。在这些实施方式中,采样点delta值可以包括:关于第二坐标系限定的(旋转后的)质心系数(iapb、japb;iamb、jamb)。如下面将更详细讨论的,采样点delta值还可以包括:关于第二坐标系限定的(旋转后)透视校正系数(Wapb;Wamb)。
对于各种类型要插值的值(优选地对于该值的插值将发生所沿着的第二坐标系的各轴(xmy、xpy))优选地存在至少一个采样点delta值。例如,在沿着两个轴(xmy、xpy)存在要插值的两个质心坐标(i,j)的情况下,可以产生至少四个采样点delta值(iapb、japb;iamb、jamb)。类似地,在沿着两个轴(xmy、xpy)存在要插值的一个质心坐标(w)的情况下,也可以产生至少另外两个采样点delta值(Wapb;Wamb)。
可以以任意期望且合适的方式来生成采样点delta值。在一些实施方式中,生成采样点delta值可以包括生成关于第一坐标系限定的(未旋转的)采样点delta值(Sx;Sy)。然后,可以旋转关于第一坐标系限定的(未旋转的)采样点delta值,以便生成关于第二坐标系限定的(旋转的)采样点delta值(Sxpy;Sxmy)。
生成关于第二坐标系限定的(旋转的)采样点delta值(Sxpy;Sxmy)的步骤可以包括:将旋转矩阵应用于关于第一坐标系限定的(未旋转的)采样点delta值(Sx;Sy)。例如,生成采样点delta值(Sx;Sy)可以包括应用如下的旋转矩阵:
其中,θ为旋转的(逆时针)角度。如将所理解的,可以执行等同计算,以影响期望的旋转。
生成关于第二坐标系限定的(旋转的)采样点delta值(Sxpy;Sxmy)的步骤还可以包括:应用附加的缩放(即,除了作为(纯)旋转的结果而发生的任意固有缩放之外的缩放)。该附加的缩放例如可以允许更简单地生成采样点delta值。例如,如上所讨论的,在优选实施方式中,第二坐标系相对于第一坐标系旋转45°(或45°的倍数)。如将所理解的,在这些优选实施方式中,关于第一坐标系限定的(未旋转)采样点delta值可以作为旋转的结果固有地缩放1/√2(即,cos45°或sin45°)。在这些优选实施方式中,可以应用的附加缩放可以是与1/√2另外相乘。如将所理解的,这导致1/2(即,1/√2*1/√2)的整体缩放应用于关于第一坐标系限定的(未旋转)采样点delta值。因此,可以简化关于第二坐标系限定的(旋转后的)采样点delta值的整体生成(因为它可以包括将采样点delta值乘以1/2,并且这可以仅使用位移来实现)。
如上所讨论的,在优选实施方式中,生成插值属性数据的步骤发生在质心参数空间中。在这些实施方式中,关于第一坐标系限定的(未旋转)采样点delta值(Sx;Sy)可以包括关于第一坐标系限定的(未旋转)质心系数(ia、ja;ib、jb)。类似地,关于第二坐标系限定的(旋转后的)采样点delta值(Sxpy;Sxmy)可以包括关于第二坐标系限定的(旋转后的)质心系数(iapb、japb;iamb、jamb)。
在这些优选实施方式中,根据关于第一坐标系限定的(未旋转)采样点delta值(ia、ja;ib、jb)生成关于第二坐标系限定的(旋转后的)采样点delta值(iapb、japb;iamb、jamb)可以如下来实现:
如将理解的,上述等式等同于应用如下的旋转矩阵:
其中,θ=45°,连同通过乘以1/√2来实现附加缩放。
可以由图形处理系统的任意期望和合适阶段来生成图元的采样点delta值。在优选实施方式中,至少部分例如使用从顶点着色阶段输出的顶点位置数据在图元设置期间生成采样点delta值。
由此,图形处理系统可以包括图元设置阶段,该图元设置阶段例如使用从顶点着色阶段输出的顶点位置数据生成用于由片段着色阶段的图元的(旋转后和/或未旋转)采样点delta值。如上所讨论的,图元设置阶段可以在图形处理流水线中的栅格化阶段之前或形成栅格化阶段的一部分。图形处理系统还可以包括顶点着色阶段,该顶点着色阶段生成由图元设置阶段使用的顶点位置数据。
在优选实施方式中,图元设置阶段可以例如以如上所讨论的方式,生成关于第一坐标系限定的(未旋转)采样点delta值。然后,图元设置阶段可以使关于第一坐标系限定的(未旋转)采样点delta值旋转,以便例如以如上所讨论的方式生成图元的、关于第二坐标系限定的(旋转后的)采样点delta值。
在其它次优选的实施方式中,图元设置阶段可以例如以如上所讨论的方式生成关于第一坐标系限定的(未旋转)采样点delta值。然而,片段着色阶段可以使关于第一坐标系限定的(未旋转)采样点delta值旋转,以便例如以如上所讨论的方式生成图元的、关于第二坐标系限定的(旋转后的)采样点delta值。
插值属性数据可以是:片段着色器可以生成或操作所对于的、任意期望且合适的这种属性数据。这例如可以包括属性值,诸如色值(RGB)、透明度值(alpha)、纹理坐标等。
如上所讨论的,在本发明中,一组多个采样点中的至少一个采样点的插值属性数据使用该组多个采样点的参考点的位置连同采样点delta值中的至少一个采样点delta值,来生成。这可以以任意期望且合适的方式来进行。
然而,如上所讨论的,在优选实施方式中,这使用图元的质心参数空间来进行。在这些优选实施方式中,使用参考点的位置可以包括根据参考点的位置确定参考点的质心坐标(icentre,jcentre)。在这些实施方式中,确定参考点的质心坐标(icentre,jcentre)可以包括使关于第一坐标系限定的参考点的(未旋转)位置坐标(xcentre,ycentre)旋转,以便生成关于第二坐标系限定的参考点的(旋转后的)位置坐标(xpycentre,xmycentre)。
生成关于第二坐标系限定的参考点的(旋转后的)位置坐标(xpycentre,xmycentre)的步骤可以包括:将旋转矩阵应用于关于第一坐标系限定的参考点的(未旋转)位置坐标(xcentre,ycentre)。例如,生成关于第二坐标系限定的参考点的(旋转后的)位置坐标(xpycentre,xmycentre)的步骤可以包括:应用如下的旋转矩阵:
其中,θ为旋转的(逆时针)角度。如将所理解的,可以执行等同计算,以影响期望的旋转。
生成关于第二坐标系限定的(旋转后的)位置坐标(xpycentre,xmycentre)还可以包括应用附加的缩放(即,除了作为(纯)旋转的结果而发生的任意固有缩放之外的缩放)。该附加的缩放例如可以允许更简单地生成位置坐标(xpycentre,xmycentre)。
例如,如上所讨论的,在优选实施方式中,第二坐标系相对于第一坐标系旋转45°(或45°的倍数)。如将所理解的,在这些优选实施方式中,关于第一坐标系限定的(未旋转)位置坐标(xcentre,ycentre)可以作为旋转的结果固有地缩放1/√2(即,cos45°或sin45°)。在这些优选实施方式中,可以应用的附加缩放可以是与1/√2另外相乘。如将所理解的,这导致1/2(即,1/√2*1/√2)的整体缩放应用于关于第一坐标系限定的(未旋转)位置坐标(xcentre,ycentre)。因此,可以简化关于第二坐标系限定的(旋转后的)位置坐标(xpycentre,xmycentre)的整体生成(因为不需要对关于第一坐标系限定的(未旋转)位置坐标(xcentre,ycentre)进行相乘)。
如还将理解的,优选地由在使采样点delta值旋转时应用的附加缩放(例如,1/√2)取消使位置坐标旋转时应用的附加缩放(例如,√2),使得没有插值属性数据的整体缩放。避免插值属性数据的失真通常期望这样。整体缩放的这种不存在,还可以通过交换在使位置坐标旋转时应用的附加缩放,与在使采样点delta值旋转时应用的附加缩放来实现。例如,使位置坐标旋转时应用的附加缩放可以为1/√2,并且在使采样点delta值旋转时应用的附加缩放可以为√2。
然后,关于第二坐标系限定的(旋转后的)位置坐标(xpycentre,xmycentre)可以用于确定参考点的质心坐标(icentre,jcentre)。
在优选实施方式中,例如使用以下方式的变化平面等式使用关于第二坐标系限定的(旋转后的)位置坐标(xpycentre,xmycentre)连同关于第二坐标系限定的(旋转后的)采样点delta值(iapb、japb;iamb、jamb),来确定参考点的质心坐标(icentre,jcentre):
icentre=[iapb*xpycentre]+[iamb*xmycentre]+ic
jcentre=[japb*xpycentre]+[jamb*xmycentre]+jc
在优选实施方式中,采样点delta值(iapb、japb;iamb、jamb)中的至少一个采样点delta值可以加到参考点的质心坐标(icentre,jcentre)或从参考点的质心坐标(icentre,jcentre)减去,以例如以以下方式生成该组多个采样点中的至少一个采样点的质心坐标(i0、j0;i1、j1;i2、j2):
[i0,j0]=[icentre-iapb,jcentre-japb]
[i1,j1]=[icentre+iamb,jcentre+jamb]
[i2,j2]=[icentre-iamb,jcentre-jamb]
[i3,j3]=[icentre+iapb,jcentre+japb]
如将所理解的,上述质心坐标未被透视校正。因此,如下面将更详细讨论的,如果期望,可以在该阶段透视校正上述质心坐标。同样地在该阶段,例如可以通过将质心坐标除以图元的常数,或在将透视校正应用于质心坐标时来归一化质心坐标。
由此,如上所讨论的,在优选实施方式中,采样点delta值(iapb、japb;iamb、jamb)与图元的(优选地关于沿着第二坐标系的轴(xmy;xpy)的单元步骤的)的质心位置的变化(例如,质心坐标(i,j)的变化)有关。
因此,使用该组多个采样点的参考点的位置连同采样点delta值中的至少一个采样点delta值的步骤可以包括:处理该组多个采样点的参考点,以便生成参考点的质心坐标,然后组合参考点的质心坐标与参考点delta值中的至少一个参考点delta值,以便生成该组多个采样点中的至少一个采样点的质心坐标。
类似地,片段着色阶段可以包括处理电路(例如,变化插值器(的质心估算器)),该处理电路被配置为处理该组多个采样点的参考点,以便生成参考点的质心坐标,然后组合参考点的质心坐标与参考点delta值中的至少一个参考点delta值,以便生成该组多个采样点中的至少一个采样点的质心坐标。
然后,该组多个采样点中的至少一个采样点(i0、j0;i1、j1;i2、j2)的质心坐标可以用于导出至少一个采样点的插值属性数据(S0、S1、S2、S3)。
导出至少一个采样点的插值属性数据(S0、S1、S2、S3)的步骤可以包括:使用至少一个采样点的质心坐标(i0、j0;i1、j1;i2、j2;i3、j3)进行插值。插值例如可以以以下方式包括将至少一个采样点的质心坐标(i0、j0;i1、j1;i2、j2;i3、j3)乘以质心坐标有关的顶点的对应顶点着色属性值(Si、Sj、Sk,例如色值、透明度值、纹理坐标等),然后对相乘的结果求和:
S0=[Si*i0]+[Sj*j0]+[Sk*(1-i0-j0)]
S1=[Si*i1]+[Sj*j1]+[Sk*(1-i1-j1)]
S2=[Si*i2]+[Sj*j2]+[Sk*(1-i2-j2)]
S3=[Si*i3]+[Sj*j3]+[Sk*(1-i3-j3)]
上述等式可以被概括为:
Sn=[Si*in]+[Sj*jn]+[Sk*(1-in-jn)],其中,n为采样点号(例如,0、1、2、3)。
上述等式可以被改写为:
Sn=[Si-Sk]*in+[Sj-Sk]*jn+Sk
或
Sn=Si_new*in+Sj_new*jn+Sk,,其中,Si_new=Si-Sk,并且Sj_new=Sj-Sk。
在优选实施方式中,可以在导出至少一个采样点的插值属性数据时使用插值等式的上述形式。这例如允许根据图元的顶点的“未修改”顶点着色属性值(Si、Sj、Sk)提前(即,在导出至少一个采样点的插值属性数据之前)计算图元的顶点的“修改后”顶点着色属性值(Si_new、Sj_new、Sk)。然后,图元的顶点的修改后顶点着色属性值(Si_new、Sj_new、Sk)可以在导出其它采样点的插值属性数据时重复使用。这例如可以通过避免需要对于多个采样点进行相同的计算多次而降低导出插值属性数据时的处理负担。
由此,在优选实施方式中,根据图元的顶点的“未修改”顶点着色属性值(Si、Sj、Sk)来计算图元的顶点的“修改后”顶点着色属性值(Si_new、Sj_new、Sk)。图元的顶点的“修改后”顶点着色属性值(Si_new、Sj_new、Sk)优选地以以下方式根据图元的顶点的“未修改”顶点着色属性值(Si、Sj、Sk)来计算:
Si_new=Si-Sk
Sj_new=Sj-Sk
Sk=Sk
然后,将图元的顶点的“修改后”顶点着色属性值(Si_new、Sj_new、Sk)存储在例如属性缓存中,准备在导出至少一个采样点的插值属性数据时使用。
因此,如上所述,使用该组多个采样点的参考点的位置连同采样点delta值中的至少一个采样点delta值的步骤可以包括:处理该组多个采样点中的至少一个采样点的质心坐标,以便生成该组多个采样点中的至少一个采样点的插值属性数据。
类似地,片段着色阶段可以包括处理电路(例如,变化插值器(的属性估算器)),该处理电路被配置为,处理该组多个采样点中的至少一个采样点的质心坐标,以便生成该组多个采样点中的至少一个采样点的插值属性数据。
在次优选的实施方式中,参考点的位置的质心坐标(icentre,jcentre)可以代替用于导出参考点的插值数据数据(Scentre)。导出参考点的插值数据数据(Scentre)的步骤可以包括:使用至少一个参考点的质心坐标(icentre,jcentre)进行插值。插值例如可以以以下方式包括将参考点的质心坐标(icentre,jcentre)乘以质心坐标有关的顶点的对应顶点着色属性值(Si、Sj、Sk,例如色值、透明度值、纹理坐标等),然后对相乘的结果求和:
Scentre=[Si*icentre]+[Sj*jcentre]+[Sk*(1-icentre-jcentre)]
然后,采样点delta值(Sxpy;Sxmy)例如可以以以下方式加到参考插值属性显示数据或从参考插值属性显示数据减去,以生成该组多个采样点中的至少一个采样点的插值属性数据(S0、S1、S2、S3):
S0=Scentre-Sxpy
S1=Scentre+Sxmy
S2=Scentre-Sxmy
S3=Scentre+Sxpy
在这些次优选实施方式中,采样点delta值(Sxpy;Sxmy)与顶点着色属性数据(例如,颜色、透明度、纹理坐标等)优选地关于沿着第二坐标系的单元步骤的变化有关,而不是与质心位置的变化有关。
由此,在次优选实施方式中,使用该组多个采样点的参考点的位置连同采样点delta值中的至少一个采样点delta值的步骤可以包括:处理该组多个采样点的参考点,以便生成参考点的参考插值属性数据,然后组合参考点的参考插值属性数据与采样点delta值中的至少一个采样点delta值,以便生成该组多个采样点中的至少一个采样点的插值属性数据。
类似地,在次优选实施方式中,片段着色阶段可以包括处理电路(例如,变化插值器(的组合质心与属性估算器)),该处理电路被配置为,处理该组多个采样点的参考点,以便生成参考点的参考插值属性数据,然后组合参考点的参考插值属性数据与采样点delta值中的至少一个采样点delta值,以便生成该组多个采样点中的至少一个采样点的插值属性数据。
应注意,上述次优选实施方式将不产生透视校正的结果。然而,上述次优选实施方式仍然可以用于例如2D图形和/或位图传送。
在优选实施方式中,生成至少一个采样点的插值属性数据还可以包括应用透视校正。
如上所讨论的,在优选实施方式中,生成插值属性数据的步骤发生在抽象参数空间中。在这些优选实施方式中,应用透视校正的步骤可以包括:例如在将质心坐标用于导出插值属性数据之前,使用至少一个采样点的透视校正值(w0;w1;w2;w3)对至少一个采样点的质心坐标应用缩放。
例如可以使用该组多个采样点的参考点的位置(xcentre,ycentre)连同至少一个另外的采样点delta值,以与至少一个采样点的质心坐标类似的方式,来生成至少一个采样点的透视校正值(w0;w1;w2;w3)。这些另外的采样点delta值可以为上述(旋转后的)透视校正系数(Wapb;Wamb)。
透视校正系数(Wapb;Wamb)可以关于第二坐标系来限定,并且可以以与上面讨论的其它采样点delta值类似的方式来生成。例如,生成透视校正系数(Wapb;Wamb)的步骤可以包括:生成关于第一坐标系限定的(未旋转)透视校正系数(Wa;Wb)。然后,例如可以以以下方式旋转关于第一坐标系限定的(未旋转)透视校正系数(Wa;Wb),以便生成关于第二坐标系限定的(旋转后的)透视校正系数(Wapb;Wamb):
如将理解的,上述等式等同于应用如下的旋转矩阵:
其中,θ=45°,连同通过乘以1/√2来实现附加缩放。
生成(未旋转和/或旋转后的)透视校正系数例如可以再次至少部分使用从顶点着色阶段输出的顶点位置数据在图元设置期间来进行,或者可以至少部分由片段着色阶段来进行。
还可以以与使用该组多个采样点的参考点的位置(xcentre,ycentre)连同上述其它采样点delta值类似的方式,来进行使用该组多个采样点的参考点的位置(xcentre,ycentre)连同至少一个透视校正系数(Wapb;Wamb)。例如,使用参考点的位置(xcentre,ycentre)的步骤可以包括:确定参考点的透视校正值(Wcentre)。
在这些实施方式中,确定参考点的透视校正值(Wcentre)的步骤可以包括:例如以如上所讨论的方式使关于第一坐标系限定的参考点的(未旋转)的位置(xcentre,ycentre)旋转,以便生成关于第二坐标系限定的参考点的(旋转后的)位置(xpycentre,xmycentre)。然后,关于第二坐标系限定的参考点的(旋转后的)位置(xpycentre,xmycentre)可以用于确定参考点的透视校正值(Wcentre)。
在优选实施方式中,例如使用以下方式的平面等式使用(旋转后的)位置坐标(xpycentre,xmycentre)连同(旋转后的)透视校正系数(Wapb;Wamb)来确定参考点的透视校正值(Wcentre):
wcentre=[wapb*xpycentre]+[wamb*xmycentre]+wc
然后,例如可以以以下方式将(旋转后的)透视校正系数(Wapb;Wamb)中的至少一个加到参考点的透视校正值(Wcentre),或从参考点的透视校正值(Wcentre)减去,以生成该组多个采样点中的至少一个采样点的透视校正值(w0;w1;w2;w3):
w0=wcentre-wapb
w1=wcentre+wamb
w2=wcentre-wamb
w3=wcentre+wapb
然后,例如以以下方式将缩放应用于至少一个采样点的质心坐标的步骤可以包括:将至少应该一个采样点的质心坐标除以至少一个采样点的透视校正值(w0;w1;w2;w3):
[i0,j0]=[i0/w0,j0/w0]
[i1,j1]=[i1/w1,j1/w1]
[i2,j2]=[i2/w2,j2/w2]
[i3,j3]=[i3/w3,j3/w3]
上述可以概述为:
[in,jn]=[in/wn,jn/wn],其中,n为采样点号(例如,0、1、2、3)。
因此,应用透视校正的步骤可以包括:处理该组多个采样点的参考点,以生成参考点的透视校正值,然后组合参考点的透视校正值与至少一个透视校正系数,以便生成该组多个采样点中的至少一个采样点的透视校正值,然后使用该组多个采样点中的至少一个采样点的透视校正值来对至少一个采样点的质心坐标进行缩放。
类似地,片段着色阶段可以包括处理电路(例如,变化插值器(的质心估算器)),该处理电路被配置为,处理该组多个采样点的参考点,以生成参考点的透视校正值,然后组合参考点的透视校正值与至少一个透视校正系数,以便生成该组多个采样点中的至少一个采样点的透视校正值,然后使用该组多个采样点中的至少一个采样点的透视校正值来对至少一个采样点的质心坐标进行缩放。
该组多个采样点可以包括或由任意期望且合适数量的采样点构成。在优选实施方式中,该组多个采样点包括或由2n个采样点构成,其中,n为整数,并且例如可以为2、3、4等。该组多个采样点还可以具有任意期望且合适的模式。模式优选地为:(例如旋转地)对称和/或可以排序或旋转。在优选实施方式中,模式为:排序的(Ordered)4x、旋转的(Rotated)4x、直接3D(Direct3D)8x等。
该组多个采样点可以是(单个)片段(例如,超采样(super sample)片段)的采样点,或者可以是多个片段(例如,“四元组”片段)的采样点。多个片段可以各包括该组采样点中的(单个)采样点,或者可以各包括该组采样点中的多个采样点,例如,多个片段可以各被超采样。
对于至少一个采样点生成的插值属性数据可以按需使用。例如,可以在渲染图元以生成例如用于显示的输出数据值时使用插值属性数据。由此,本发明优选地还包括:将对于至少一个采样点生成的插值属性数据用于渲染插值属性数据有关的图元,以便生成例如用于显示的输出数据值。
将理解,因为可以使用由图元覆盖的该组多个采样点中的多个(例如,一些或全部)来采样图元,所以在实践中,本发明的方法可以关于对图元进行采样所需的该组多个采样点中的多个(例如,一些或全部)采样点来进行,使得最终对于对图元进行采样所需的组的各采样点生成适当的一组插值属性数据。
还将理解,因为通常使用由图元覆盖的多组多个采样点(例如,多个片段或多组片段)来采样图元,所以在实践中,本发明的方法可以关于对图元进行采样所需的多组多个采样点来进行,使得最终对于对图元进行采样所需的多组多个采样点中的各组的各采样点生成适当的一组插值属性数据。
本发明还扩展到渲染图元以生成例如用于输出数据值的方法或设备,该方法或设备使用由图元覆盖的采样点的插值属性数据,然后进一步使用插值属性数据来选择图元。进一步渲染处理例如可以包括:使用插值属性数据进行的纹理采样、混合等。
将理解,因为要由图形处理流水线渲染的输出通常将由多个图元(和基于拼块的系统中的拼块)构成,所以在实践中,将对于构成输出的各图元(和拼块)重复本发明的方法,使得对于输出所需的输出的各采样点生成适当的一组插值属性数据。
如本领域技术人员将理解的,本发明的图形处理单元将是整个图形处理系统的一部分,图形处理系统将包括(例如,优选地)主处理器,主处理器例如执行需要由图形处理单元进行的图形处理的应用。主处理器将向图形处理单元发送合适的命令和数据,以控制其进行图形处理操作并且产生由主处理器上执行的应用需要的图形处理(渲染)输出。为了促进这一点,主处理器应当(并且优选地)还执行驱动器,该驱动器用于图形处理单元和编译器,编译器用于编译要由图形处理单元的可编程执行单元执行的着色器程序。
图形处理单元还可以包括一个或更多个存储器和/或存储装置(和/或与一个或更多个存储器和/或存储装置通信),存储器或存储装置内部存储这里描述的数据、和/或由图形处理单元生成的输出数据、和/或用于进行这里描述的处理的软件。图形处理单元还可以与主微处理器通信,和/或与用于基于由图形处理单元生成的数据显示图像的显示器通信。
除了上面讨论的处理阶段之外,图形处理单元和流水线还可以包括图形处理流水线可以包括的、任意其它合适且期望的处理阶段,诸如早期深度(或早期深度和模版)测试器、后期深度(或深度和模版)测试器、拼块缓冲器、写出单元等。
本发明可以用于图形处理流水线可以用于生成诸如用于显示的帧的渲染到纹理输出等的、所有形式的输出。来自图形处理的输出(例如,片段着色后的)数据值优选地被输出到外部(例如,主)存储器,用于存储和使用,诸如到用于显示器的帧缓冲器。
本发明可应用于图形处理器的任何合适的形式或构造。本发明具体但不唯一地可应用于基于拼块的图形处理器和图形处理系统。由此,在优选实施方式中,图形处理系统和图形处理单元分别是基于拼块的系统和单元。
在特别优选实施方式中,本发明的各种功能在单个图形处理平台上执行,图形处理平台生成并输出例如写到用于显示装置的帧缓冲器的、渲染后的片段数据。
本发明可以在任意适当的系统中实现,诸如基于适当构造的微处理器的系统。在优选实施方式中,本发明实现在计算机和/或基于微处理器的系统中。
可以以任意期望且合适的方式执行本发明的各种功能。例如,可以实现在硬件或软件中(根据期望)本发明的功能。由此,例如,除非以其它方式指示,本发明的各种功能元件、阶段和“装置”可以包括合适的处理器、控制器、功能单元、电路、处理逻辑、微处理器结构等,它们可操作以进行各种功能等,诸如适当专用硬件元件和/或可以被编程以以期望方式操作的可编程硬件元件。
这里还应当注意的是,如本领域技术人员将理解的,可以在给定处理器上重复和/或并行执行本发明的各种功能等。由此,例如,片段着色阶段可以包括多个并行操作的单独片段着色器。等同地,各种处理阶段可以共享处理电路等(如果期望)。
受制于必须执行上面讨论的特定功能的任意硬件,数据处理系统和流水线可以以其它方式包括数据处理流水线包括的所有通常功能单元等中的任意一个或更多个或所有。
因此,顶点着色器、片段着色器以及任意其它图形处理阶段可以根据期望且以任意适当的方式来实施,并且可以分别执行任意期望且合适的顶点着色或片段着色等功能。类似地,可以以任意适当且期望的方式来限定并存储各种数据(顶点着色属性数据、质心系数、质心坐标、采样点delta值、插值属性数据等)。
如本领域技术人员将理解的,本发明的所有描述的方面和实施方式可以(且优选地确实)酌情包括这里描述的所有优选和可选特征中的任意一个或更多个。
至少部分地可以使用软件(例如,计算机程序)实现根据本发明的方法。由此将看到当从其它方面看时,本发明提供计算机软件,该计算机软件当安装在数据处理装置上时专门适用于执行这里描述的方法;计算机程序元件,该计算机程序元件包括计算机软件代码部,用于在程序元件在数据处理装置上运行时执行这里描述的方法;和计算机程序,该计算机程序包括代码装置,该代码装置当程序在数据处理系统上运行时适用于执行这里描述的方法的所有步骤。数据处理器可以是微处理器系统、可编程FPGA(场可编程门阵列)等。
本发明还扩展到计算机软件载体,该计算机软件载体包括如下软件,这种软件当用于操作图形处理器、渲染器或包括数据处理装置的微处理器系统时与所述数据处理装置结合使所述处理器、渲染器系统执行本发明的方法的步骤。这种计算机软件载体可以是物理存储介质,诸如ROM芯片、CD ROM、RAM、闪存或盘,或可以是信号,诸如电线上的电信号、光信号或无线电信号,诸如卫星等。
还将进一步理解的是,不是本发明的方法的所有步骤都需要由计算机软件执行,并且由此根据更宽方面,本发明提供了计算机软件并且这种软件安装在计算机软件载体上,用于执行这里阐述的方法的步骤中的至少一个。
本发明可以因此适当地具体实施为用于与计算机系统一起使用的计算机程序产品。这种实现可以包括一系列计算机可读指令,该一系列计算机可读指令固定在有形、非暂时介质上,诸如计算机可读介质,例如,磁盘、CD-ROM、ROM、RAM、闪存或硬盘。还应当包括一系列计算机可读指令,在有形介质(包括但不限于,光学或模拟通信线)上,或无形地使用无线技术(包括但不限于,微波、红外或其它传输技术),这些指令经由调制解调器或其它接口装置可发送到计算机系统。该系列计算机可读指令具体实施这里之前描述的功能的所有或一部分。
本领域技术人员将理解这种计算机可读指令可以以多种编程语言来写,用于与许多计算机架构或操作系统一起使用。进一步地,这种指令可以使用任意存储技术来存储(存储技术现在或将来包括但不限于半导体、磁或光),或使用任意通信技术来发送(通信技术现在或将来包括但不限于光学、红外或微波)。预期的是,这种计算机程序产品可以作为可去除介质来分发,附有已打印的文档或电子文档,例如,现成软件;例如在系统ROM或固定盘上预加载有计算机系统;或在网络(例如,因特网或万维网)上从服务器或电子公告栏分发。
附图说明
现在将仅以示例的方式并参照附图来描述本发明的多个优选实施方式,附图中:
图1例示了在多个采样点处对图元进行采样的方法;
图2例示了使用采样点delta值在多个采样点处对图元进行采样的另选方法;
图3示出了可以以本发明的方式操作的计算机图形处理系统的示例;
图4示意性地示出了可以以本发明的方式操作的图形处理流水线;
图5示意性地示出了可以以本发明的方式操作的图形处理单元;
图6例示了根据本发明生成插值属性数据的方法;以及
图7示意性示出了可以以本发明的方式操作的变化流水线和变化插值器。
类似的附图标记在附图中适当的情况下用于类似的部件。
具体实施方式
现在将在用于显示的计算机图形的处理的背景下,描述本发明的多个优选实施方式。
图3示出了典型的计算机图形处理系统。在主处理器(host)1上执行的应用2(诸如游戏)将要求由关联的图形流水线进行图形处理操作,图形流水线借助图形处理单元(GPU)3来实现。为了这样做,应用将生成由驱动器4来解释的API(应用编程接口)调用,驱动器4用于在主处理器1上运行的图形处理流水线3,以生成对图形处理器3适合的命令,以生成由应用2需要的图形输出。为了促进这一点,一组“命令”将响应于来自用于图形输出(例如,以生成要显示的帧)的主系统1上运行的应用2的命令,而提供给图形处理器3。
图4更详细地示出了图形处理流水线3。图4中所示的图形处理流水线3是基于拼块的渲染器,并且将由此生成渲染输出数据阵列的拼块,诸如要生成的输出帧。在基于拼块的渲染时,不是整个渲染输出(例如,帧)被一下子有效处理为中间模式渲染,而是渲染输出(例如,要显示的帧)被划分为多个更小的子区域(通常称为“拼块(tiles)”)。各个拼块(子区域)被单独(通常一个接一个地)渲染,然后渲染后的拼块(子区域)被重组,以提供完整的渲染输出(例如用于显示的帧)。在这种结构中,渲染输出通常被划分为,大小规律且成形的子区域(拼块)(它们通常是正方形或矩形),但不是必须的。
渲染输出数据阵列可以通常是输出帧,输出帧旨在显示在显示装置上,诸如屏幕或打印机上,但还可以例如包括中间数据,中间数据旨在用于后期的渲染通过(还称为“渲染到纹理”输出)等。
当要显示计算机图形图像时,通常首先被限定为一系列图元(多边形),这些图元然后被划分(栅格化)为用于依次图形渲染的图形片段。在正常图形渲染操作期间,渲染器将修改(例如)颜色(红色、绿色和蓝色,RGB)和与各片段关联的透明度(阿尔法、α)数据,使得可以正确地显示片段。一旦片段已经完全穿过渲染器,则它们的关联数据值存储在存储器中,以便输出,例如,用于显示。
图4示出了图形处理流水线3的、与本实施方式的操作有关的主元件和流水线阶段。如本领域技术人员将理解的,可以存在图4未例示的图形处理流水线的其它元件。这里还应当注意的是,图4仅是示意性的,并且例如,实际上,所示的功能单元和流水线阶段可以共享重要的硬件电路(即使它们在图4中被示意性地示出为单独阶段)。还将理解的是,如图4所示的图形处理流水线的各个阶段、元件和单元等可以根据期望来实现,并且因此将包括例如适当的电路和/或处理逻辑等,用于执行需要的操作和功能。
如图4所示,图形处理流水线3包括多个阶段,包括顶点着色器20、外壳着色器(hull shader)21、曲面化器(tesselator)22、域着色器23、几何着色器24、栅格化阶段25、早期Z(深度)和模版测试阶段26、呈片段着色阶段的形式的渲染器27、后期Z(深度)和模版测试阶段28、混合阶段29、拼块缓冲器30、以及下采样和写输出(多采样分辨率)阶段31。
顶点着色器20采用如下的输入数据值,该输入数据值与针对要生成的输出限定的、顶点等关联,并且处理那些数据值,以生成一组对应的“顶点着色的”输出数据值,用于由图形处理流水线3的后续阶段使用。顶点着色例如,修改输入数据,以考虑要被渲染的图像中的发光效果。
外壳着色器21对斑点控制点(patch control point)组进行操作,并且生成已知为斑点恒量的附加数据,曲面化阶段22子划分几何结构,以创建外壳的更高阶的代表,域着色器23经由曲面化阶段对顶点输出进行操作(类似于顶点着色器),并且几何着色器24处理诸如三角形、点或线的全部图元。这些阶段与顶点着色器21一起有效地进行所有需要的片段前端操作(诸如转换和发光操作),和图元设置,以响应于提供给图形处理流水线3的命令和顶点数据,设置要被渲染的图元。
图形处理流水线3的栅格化阶段25进行操作,以将组成渲染输出(例如,要显示的图像)的图元栅格化为各个图形片段,以便处理。为了这样做,栅格化器25接收用于渲染的图形图元,将图元栅格化为采样点,并且生成具有用于渲染图元的适当位置(代表合适的采样位置)的图形片段。
由栅格化器生成的片段然后向前发送到流水线的剩余部分,以便处理。
早期Z/模版阶段26对其从栅格化器25接收的片段进行Z(深度)测试,以预见是否可以在该阶段丢弃(剔除)任何片段。为了这样做,早期Z/模版阶段26将从栅格化器25发布的片段的深度值(与片段关联的深度值)与已经渲染的片段的深度值进行比较(这些深度值存储在作为拼块缓存器30的一部分的深度(Z)缓冲器中),以确定新片段是否将由已经被渲染的片段遮蔽。同时,执行早期模版测试。
通过片段早期Z和模版测试阶段26的片段然后被发送到片段着色阶段27。片段着色阶段27对通过早期Z和模版测试的片段进行适当的片段处理操作,以便处理片段,以生成适当渲染的片段数据。
该片段处理可以包括任何合适且期望的片段着色处理,诸如对片段执行片段着色器程序、向片段应用纹理、向片段应用雾化或其它处理等,以生成合适的片段数据。在本实施方式中,片段着色阶段27是呈着色器流水线(可编程片段着色器)的形式。如下面将更详细讨论的,该片段处理包括处理顶点着色属性数据,以生成插值属性数据。
然后,存在“后期”片段Z和模版测试阶段28,该阶段尤其对着色后的片段执行流水线深度测试的结尾部分,以确定被渲染的片段是否将实际在最终图像中看到。该深度测试使用在用于拼块缓冲器30中的Z缓冲器中存储的片段位置的Z缓冲器值,通过将从片段着色阶段27发布的片段(与片段关联的)深度值与已经被渲染的(如存储在深度缓冲器中的)片段的深度值进行比较,来确定用于新片段的片段数据是否应当代替已经渲染片段的片段数据。该后期片段深度和模版测试阶段28还对片段执行任意需要的“后期”阿尔法和/或模版测试。
通过后期片段测试阶段28的片段然后经历(如果需要)任意必须的与已经存储在混合器29中的拼块缓冲器30中的片段的混合操作。对片段需要进行的任意其它剩余操作(诸如,抖动(dither)等(未示出))也在该阶段执行。
最后,(混合后的)输出片段数据(值)被写到拼块缓冲器30,从该拼块缓冲器30它们可以例如被输出到帧缓冲器用于显示。用于输出片段的深度值还适当写到拼块缓冲器30内的Z缓冲器。拼块缓冲器存储颜色,并且深度缓冲器分别存储合适颜色等或Z值,用于缓存器代表的各个采样点(实质上用于正被处理的块的各个采样点))。这些缓冲器存储代表整个渲染输出(即,要被显示的图像)的一部分(拼块)的片段数据的阵列,缓冲器中的各组采样值对应于整个渲染输出的各自像素(例如,各2x2组采样值可以对应于输出像素,其中,使用4x多采样)。拼块缓冲器被提供作为位于(局部到)图形处理流水线(芯片)上的RAM的一部分。
来自拼块缓冲器30的数据被输入到下采样(多采样分辨率)写输出单元31,因此输出(写回)到外部存储输出缓冲器,诸如显示装置(未示出)这样的帧缓冲器。显示装置可以包括例如,包括像素阵列的显示器,诸如计算机监测器或打印机。
下采样和写输出单元31将在拼块缓冲器30中存储的片段数据下采样到用于输出缓冲器(装置)的适当分辨率(即,使得生成对应于输出装置的像素的像素数据的阵列),以生成用于输出到输出缓冲器的输出值(像素)。
一旦渲染输出的拼块已经被处理,并且其数据被输出到主存储器(例如,到主存储器(未示出)中的帧缓冲器),以便存储,然后处理下一拼块等,直到足够的拼块已经被处理,以生成整个渲染输出(例如,要显示的帧(图像))。然后,该处理针对下一渲染输出(例如,帧)重复等。
用于包括不基于拼块的流水线的图形处理流水线3的其它结构当然是可行的。
如可以从图4看到的,图形处理流水线3包括多个可编程处理或“着色器”阶段,即,顶点着色器20、外壳着色器21、域着色器23、几何着色器24和片段着色器27。这些可编程着色器阶段执行具有一个或更多个输入变量的各着色器程序,着色器程序生成输出变量组并且由应用提供。为了这样做,应用2提供使用高级别着色器编程语言(诸如GLSL、HLSL、OpenCL等)实现的着色器程序。这些着色器程序然后由着色器语言编译器来翻译成用于目标图形处理流水线3的二进制代码。这可以包括创建编译器内的程序的一个或更多个中间表现。编译器可以例如是驱动器4的一部分,特殊API调用使编译器运行。编译器执行可以由此被看做绘制调用准备的一部分,绘制调用准备响应于由应用生成的API调用由驱动器而进行。
图4示意性地示出了图形处理单元3的操作阶段。图5示出了图形处理单元3的对应功能单元,对应功能单元用于进行(由此充当)图4示出的图形处理流水线的各种处理操作和阶段,且与本发明有关。图形处理单元3中可能有其它功能单元。仅为了简化,图5示出了仅与以本发明的方式中的操作有关的那些功能单元。
如图5所示,图形处理单元3包括栅格化器25、线程派生器(spawner)40、可编程执行单元41、变化插值器42、纹理映射器43和混合器29。
线程派生器40可操作,以派生用于由用于其接收的片段的可编程执行单元41执行的执行线程。
可编程执行单元41操作以执行着色器程序来进行图形处理流水线的着色器操作,诸如外壳着色器、顶点着色器和片段着色器。为了这样做,可编程执行单元41从线程派生器40接收执行线程,并且为那些执行线程执行相关着色器程序。
变化插值器42操作以跨图形图元对顶点属性数据进行插值,并且作为该操作的一部分,经常创建要用于采样图形纹理的纹理坐标。
纹理映射器43操作以使用例如由变化插值器42生成的纹理坐标来采样图形纹理,并且从图形纹理生成经滤波的纹理采样结果。
混合器29操作以混合例如由可编程执行单元生成的片段着色结果和之前生成的片段着色器结果,诸如已经存储在拼块缓冲器中的结果。
现在将参照图6和图7详细描述一个实施方式中的变化插值器42的操作。
如图6所示,在该实施方式中,三角形图元60使用四个片段61、62、63、64的“四元组(“quad)”65来采样,片段61、62、63、64中的每一个具有中心采样点。
关于第一坐标系x,y来限定四元组65的中心参考点的位置xcentre,ycentre。如下面更详细讨论的,还对于图元60生成关于第一坐标系xmy,xpy限定的采样点delta值。第二坐标系相对于第一坐标系旋转角度θ。在该实施方式中,θ为45°。
如下面将参照图7更详细讨论的,变化插值器42使用关于第一坐标系限定的中心参考点的位置xcentre,ycentre连同关于第二坐标系限定的采样点delta值中的至少一个,来生成四个片段61、62、63、64的采样点的插值属性数据。
图7示意性示出了用于对与本实施方式相关的顶点着色属性数据的变化流水线70的功能单元。在变化流水线70中可以存在其它功能单元,但为了简化,图7示出了与以本发明的方式进行的操作更相关的这些功能单元。
如图7所示,图5的变化插值器42形成变化流水线70的一部分。变化流水线70还将质心系数缓存71用于存储质心系数,将质心坐标缓存72用于存储质心坐标,并且将属性缓存73用于存储顶点着色属性数据。
变化流水线70从栅格化器25接收图元60的旋转后的质心系数(iapb、japb;iamb、jamb)和旋转后的透视校正系数(Wapb;Wamb),并将它们存储在质心系数缓存71中。在该实施方式中,旋转后的质心系数(iapb、japb;iamb、jamb)和旋转后的透视校正系数(Wapb;Wamb)可以被认为是采样点delta值(Sxpy;Sxmy)。
旋转后的质心系数(iapb、japb;iamb、jamb)和透视校正系数(Wapb;Wamb)根据未旋转质心系数(ia、ja;ib、jb)和透视校正系数(Wa;Wb)在图元设置期间来生成。未旋转质心系数(ia、ja;ib、jb)和透视校正系数(Wa;Wb)以传统方式在图元设置期间来生成,然后被旋转为以以下方式提供旋转后的质心系数(iapb、japb;iamb、jamb)和透视校正系数(Wapb;Wamb):
如将理解的,上述等式等同于应用如下的旋转矩阵:
其中,θ=45°,连同通过乘以1/√2来实现附加缩放。该附加缩放意味着各旋转后的质心系数(iapb、japb;iamb、jamb)和透视校正系数(Wapb;Wamb)可以由单个加法或加法以及除以2的位移位(bit shift)来计算。
变化流水线70还从栅格化器25接收图元60的未旋转的质心系数(ic、jc)和未旋转的透视校正系数(Wc),并将这些存储在质心系数缓存71中。
变化流水线70还从顶点着色器20接收顶点着色属性数据。顶点着色属性数据由顶点着色器20以传统方式来生成,并且包括图元60的顶点颜色、顶点透明度、顶点纹理坐标等。变化流水线70还在将图元60的顶点着色属性数据存储在属性缓存73中之前,转换和/或准备顶点着色属性数据。
变化插值器42响应于从可编程执行单元41接收到变化请求消息77而操作。变化请求消息77包括四元组65的参考点的位置xcentre,ycentre,其表示要插值的顶点着色属性数据的采样点。
在该实施方式中,变化插值器42包括质心估算器75和属性估算器76。
质心估算器75接收变化请求消息77,然后访问质心系数缓存71中所存储的图元60的质心系数(iapb、japb;iamb、jamb;ic、jc)和透视校正系数(Wapb;Wamb;Wc),然后以以下方式生成四元组65的各个采样点的质心坐标(i0、j0;i1、j1;i2、j2;i3、j3)。
首先,将参考点的位置xcentre,ycentre用于确定参考点的质心坐标icentre,jcentre。这包括使关于第一坐标系限定的参考点的位置xcentre,ycentre旋转,以便生成关于第二坐标系限定的旋转后的位置xpycentre,xmycentre。在该实施方式中,该旋转以以下方式来实现:
xpycentre=xcentre+ycentre.
xmycentre=xcentre-ycentre.
如将理解的,上述等式等同于应用如下的旋转矩阵:
连同附加缩放通过乘以1/√2来实现。
该附加缩放意味着各旋转后的质心坐标xpycentre,xmycentre可以由单个加法或加法来计算。缩放还取消如上所讨论的应用于质心系数的1/√2缩放,使得没有插值属性数据的整体缩放。
然后,将旋转后的质心坐标xpycentre,xmycentre、质心系数(iapb、japb;iamb、jamb;ic、jc)以及透视校正系数(Wapb;Wamb;Wc)用于以以下方式使用平面等式确定参考点的质心坐标icentre,jcentre和透视校正值(Wcentre):
icentre=[iapb*xpycentre]+[iamb*xmycentre]+ic
jcentre=[japb*xpycentre]+[jamb*xmycentre]+jc
wcentre=[wapb*xpycentre]+[wamb*xmycentre]+wc
然后,分别将旋转后的质心系数(iapb、japb;iamb、jamb)和透视校正系数(Wapb;Wamb)加到参考点的质心坐标(icentre,jcentre)和透视校正值(Wcentre),或从参考点的质心坐标(icentre,jcentre)和透视校正值(Wcentre)减去,以便以下方式生成四元组65的采样点的质心坐标(i0、j0;i1、j1;i2、j2;i3、j3)以及透视校正值(w0;w1;w2;w3):
[i0,j0]=[icentre-iapb,jcentre-japb]
[i1j1]=[icentre+iamb,jcentre+jamb]
[i2j2]=[icentre-iamb,jcentre-jamb]
[i3j3]=[icentre+iapb,jcentre+japb]
w0=wcentre-wapb
w1=wcentre+wamb
w2=wcentre-wamb
w3=wcentre+wapb
如果期望,然后以以下方式使用四元组65的采样点的透视校正值(w0;w1;w2;w3)将透视校正应用于质心坐标(i0、j0;i1、j1;i2、j2;i3、j3):
[i0,j0]=[i0/w0,j0/w0]
[i1,j1]=[i1/w1,j1/w1]
[i2,j2]=[i2/w2,j2/w2]
[i3,j3]=[i3/w3,j3/w3]
在该实施方式中,应用透视校正还归一化质心坐标(i0、j0;i1、j1;i2、j2;i3、j3)。然后由质心估算器75向质心坐标缓存72输出四元组65的采样点的(透视校正后的)质心坐标(i0、j0;i1、j1;i2、j2;i3、j3)。
然后,变化插值器42的属性估算器76访问质心坐标缓存72中所存储的透视校正的质心坐标(i0、j0;i1、j1;i2、j2;i3、j3)以及属性缓存73中所存储的图元60的顶点着色属性数据。
然后,属性估算器76通过使用各采样点的质心坐标(i0、j0;i1、j1;i2、j2;i3、j3)进行插值来导出四元组65的采样点的插值属性数据(S0、S1、S2、S3)。实际上的插值包括:将各质心坐标(i0、j0;i1、j1;i2、j2;i3、j3)乘以与质心坐标有关的顶点的顶点着色属性值(Si、Sj、Sk,例如,色值、透明度值、纹理坐标等),然后对相乘的结果求和。在本实施方式中,这以以下方式来实现:
S0=Si_new*i0+Sj_new*j0+Sk
S1=Si_new*i1+Sj_new*j1+Sk
S2=Si_new*i2+Sj_new*j2+Sk
S3=Si_new*i3+Sj_new*j3+Sk
其中,Si_new=Si-Sk且Sj_new=Sj-Sk
Si_new=Si-Sk且Sj_new的值由变化流水线70根据顶点着色属性数据来提前确定且存储在属性缓存73中,以便在导出采样点的插值属性数据(S0、S1、S2、S3)时使用。然后,由变化插值器42的属性估算器76在变化结果消息78中向可编程执行单元41输出插值属性数据(S0、S1、S2、S3)。
然后,可以由图形处理流水线的随后阶段(诸如(例如使用插值纹理坐标形式的插值属性数据对纹理进行采样的)纹理映射器43或(例如,使用插值颜色形式的插值属性数据进行混合操作的)混合器29)使用插值属性数据(S0、S1、S2、S3)。
从上面可以看出,至少在本发明的优选实施方式中,本发明提供了一种图形处理系统,该图形处理系统允许对于多个采样点更有效地生成插值属性数据。这至少在优选实施方式中通过使用采样点的参考位置连同旋转后采样点delta值生成采样点的插值属性数据来实现。