Mip贴图级别选择的制作方法

文档序号:6488357阅读:406来源:国知局
专利名称:Mip贴图级别选择的制作方法
技术领域
本发明涉及计算机图形处理系统和方法。
背景技术
纹理映射是呈现三维(3D)图形的重要要素。将纹理映射到计算机生成的对象表面上是一种可以大大改善其外观真实感的技术。纹理通常是诸如照片或计算机生成的图像这样的二维(2D)图形。例如,可以将墙壁的(局部)二维图像投影到电脑游戏中墙壁的三维表现上。大多数三维对象仅覆盖了屏幕的一小部分,这通常导致纹理贴图(texturemap)缩小(当近距离观看时也能以足够的分辨率提供较好外观)。通常,例如在纹理映射期间如果将墙壁移远,则必须显著地缩小二维图像。原理上,通过显著地缩小原始图像就可以执行纹理映射。为减小读取高分辨率二维图像所需的带宽,通常进行生成二维图像的若干缩小形式的预处理步骤。在纹理映射期间,仅读取与屏幕图像的分辨率最佳匹配的较小的该缩小图像的局部,并将其映射到屏幕上。将原始二维图像及其多个缩小形式一起称为MIP贴图(mipmap)。在“Surveyof Texture Mapping(纹理映射综述)”Paul S.Heckbert,IEEE ComputerGraphics and Applications,Nov.1986,pp.56-67和U.S.6236405 B1中,对纹理映射及MIP贴图作了详细描述。在MIP贴图中,原始图像表示为级别0。在级别1中,每项保持例如2×2纹理像素的平均值。在此使用的术语“纹理像素”指该纹理的图形元素(像素)。可以继续该过程直到最高级别为止,该最高级别具有唯一项,其保持整个纹理的平均颜色。这样,在一个正方形MIP贴图中,级别n的大小是级别n-1的四分之一。本说明书中,使用术语“纹理”作为映射到对象上的任何图像或结构的同义词。
已知几种类型的MIP贴图,它们的不同在于存储哪些缩小图像。在三维MIP贴图中,以相同因子对两个方向进行缩小,而在四维(4D)MIP贴图中,在两个方向上独立地对原始图形进行缩小。与三维MIP贴图相比,四维MIP贴图的布置需要大量存储器来存储。因此,诸如游戏这样的计算机图形程序通常使用三维MIP贴图结构。律师案号为PHNL010924EPP申请号为IB02/05468的非预公开欧洲专利申请描述了用于从三维MIP贴图以飞速写入方式(on the fly)生成四维MIP贴图的一种方法。这使得高质量的呈现也能够与没有向图形系统提供四维MIP贴图的程序相结合。
总体上,已知有几种方法用于将(MIP贴图的)图像映射到屏幕栅格上。大多数常规计算机图形系统使用一种称为反向纹理映射的方法。这种方法中,顺序处理屏幕中的像素,并且在光栅化处理过程中,对于每个像素确定屏幕像素到纹理的投影(产生像素的“覆盖范围(footprint)”),并通常以加权平均方式计算最接近正确像素颜色的平均值。一种可替换的方法称为前向纹理映射方法。该方法通过遍历坐标系中由纹理贴图限定的纹理像素进行工作。然后使用一般用于视频缩放的重采样器将纹理颜色喷涂(splat)到屏幕像素上。
典型地使用图元(通常为三角形)对要呈现的二维或三维对象进行建模。图形系统的顶点着色器接收输入的图元顶点,并使用顶点着色程序为每个顶点修改或添加属性。在前向映射系统中,然后光栅化引擎在内插这些属性时遍历纹理空间中的图元。光栅化引擎接收定义三角形顶点的顶点坐标。光栅化引擎计算要投影到三角形中的每个纹理像素的纹理坐标(u,v)。对于每个被访问纹理的栅格位置(u,v),纹理像素着色器由这些属性计算图元表面的局部色彩。然后由屏幕空间重采样器将这些表面颜色重采样到屏幕像素位置上。在两遍前向映射方法中,将二维图像的映射分解为两个一维(1D)映射。首先将图像在一个方向上映射,通常为扫描行方向即水平方向,然后在另一个方向上映射。那么第一遍处理完整的扫描行,因此对于正被呈现的整个图元(三角形)来说,在纹理空间光栅化引擎中的垂直MIP贴图级别是固定的。光栅化引擎根据顶点信息指出三角形所需的最大细节量。为了仍能够改变水平MIP贴图的级别,使用四维MIP贴图布置。也可以使用一遍二维滤波器,并同时改变水平和垂直MIP贴图级别。所提供的信息包括水平MIP贴图级别mmlu和垂直MIP贴图级别mmlv。光栅化引擎沿由这两个四维MIP贴图级别值确定的栅格来处理纹理像素。纹理空间重采样器将来自被识别的四维MIP贴图的数据重采样到纹理像素位置。
期望对要使用的MIP贴图作出适当选择。选取太详细的MIP贴图会产生过大的存储带宽。选取太粗糙的MIP贴图会产生质量过低的图像。尤其,对于两遍前向纹理映射图形系统,基于三角形内任意处所需的最大细节量,垂直MIP贴图的级别对于整个三角形来说是固定的,因此选择太详细级别的风险很高。
发明概要本发明的一个目标是提供用于选择MIP贴图级别的方法和系统。
为达到本发明的目标,提供一种用于呈现显示图像的系统,包括纹理存储器,用于以MIP贴图结构存储纹理贴图;纹理贴图中的纹理像素由一对u和v坐标指定;对于纹理像素(u,v),光栅化引擎用于,确定相应的初始四维MIP贴图级别(mmlu,mmlv);确定放大因子,该放大因子代表当纹理像素映射到显示器上相应像素位置时出现的放大;根据确定的初始四维MIP贴图级别mmlu、mmlv和放大因子来确定相应的最终四维MIP贴图级别;以及纹理空间重采样器,用于从由该对最终四维MIP贴图级别所确定的纹理贴图中获取纹理数据;纹理映射器,用于将所获取的纹理数据映射到定义显示图像的相应像素数据上。
本发明认识到,虽然光栅化引擎在由初始四维MIP贴图级别(mmlu,mmlv)(以与三角形内某处所需的最大细节量相对应的方式)所确定的栅格上进行操作,但这些值(通常由光栅化引擎传递给纹理空间重采样器)可能不是从MIP贴图结构中选取纹理的理想值它可能表示与三角形内特定点处实际所需的级别相比详细得多的级别。如果从高视点(high perspective)观看该三角形,尤其会产生这种情况。这引起在栅格的一个或两个正交方向上出现放大。例如,垂直放大因子(垂直方向通常以v表示)表示,对于当前光栅化栅格位置,在垂直光栅化MIP贴图级别mmlv中v值相差1的两个纹理像素在屏幕上相距多远。则放大因子对纹理空间重采样中使用的MIP贴图级别的选择有影响。根据本发明的系统既可以用于反向纹理映射系统,也可以用于前向纹理映射系统。
根据从属权利要求2的措施,根据垂直放大来调节垂直四维MIP贴图级别。这与两遍图形系统很好地相结合,两遍图形系统中,光栅化引擎本身在第一遍时以对于整个三角形固定的垂直四维MIP贴图级别和可变的水平MIP贴图级别进行操作,该固定的垂直四维MIP贴图级别基于三角形内任意处所需的最大细节量。这样的传统光栅化引擎使用了随每个纹理像素变化的水平四维MIP贴图级别。根据本发明,光栅化引擎通过根据该垂直放大调节其初始垂直四维MIP贴图级别,对于每个纹理像素确定纹理空间重采样器使用的最终垂直四维MIP贴图级别。光栅化引擎的所有其它操作不受影响,并且仍能以固定的垂直四维MIP贴图级别进行操作。
根据从属权利要求3的措施,如果放大因子小则降低MIP贴图级别mmlv。在这种情况下可以使用较低的垂直分辨率。通常,由光栅化引擎提供的垂直四维MIP贴图级别代表了图元中纹理像素所需细节的最高级别。尤其,如果放大因子小(在该方向上为高视点),则在该方向上出现相对大的缩小,使得在该方向上可以使用较少细节的四维MIP贴图。
根据从属权利要求4的措施,纹理存储器存储一种四维MIP贴图结构。纹理空间重采样器对由最终确定的级别(可能具有较低分辨率)指示的四维MIP贴图进行操作。光栅化引擎仍对初始四维MIP贴图(可能具有不必要的高细节)进行操作。重采样器通过从最终确定的四维MIP贴图中重构数据(例如通过内插),来向光栅化引擎提供数据。这样,在这些质量并未受损的纹理像素处,可以减少纹理存储器的带宽。
根据从属权利要求5的措施,与诸如游戏这样的计算机图形应用的通常情况一样,纹理存储器存储三维MIP贴图结构。纹理空间重采样器以飞速写入方式从一个三维MIP贴图生成最终确定的四维MIP贴图。非预公开欧洲专利申请IB02/05468描述了一种以飞速写入方式从三维MIP贴图生成四维MIP贴图的方法。这使得不向图形系统提供四维MIP贴图的程序也可以与高效率高质量的呈现结合。
分别根据从属权利要求6和7的措施,如果高质量呈现优先,则三维MIP贴图级别可以被选择为两个四维MIP贴图级别中的最大值;或者,如果减少存储器带宽优先,则三维MIP贴图级别可以被选择为两个四维MIP贴图级别中的最小值。
根据从属权利要求8的措施,当选择三维MIP贴图级别时,也要考虑最大的各项异性(anisotropy)级别。从属权利要求9表示一种进行该操作的优选方式。
为达到本发明的一个目标,提供了一种用于呈现显示图像的方法,包括以MIP贴图结构存储纹理贴图;在纹理贴图中的纹理像素由一对u和v坐标指定;对于纹理像素(u,v),在光栅化操作中确定相应的初始四维MIP贴图级别(mmlu,mmlv);确定放大因子,该放大因子代表当纹理像素映射到显示器上相应像素位置时出现的放大;以及根据确定的初始四维MIP贴图级别mmlu、mmlv和放大因子,确定相应的最终四维MIP贴图级别;在纹理空间重采样操作中,获取由最终四维MIP贴图级别所确定的纹理贴图的纹理数据;将所获取的纹理数据映射到定义显示图像的相应像素数据上。
将参考下文中描述的实施例说明本发明的这些和其它方面,从而本发明的这些和其它方面将变得显而易见。
附图简要说明图中

图1示出了前向纹理映射系统的图形流水线;图2示出了反向纹理映射系统的图形流水线;图3示出了四维MIP贴图结构;图4说明了重构滤波;图5说明了屏幕空间预滤波;图6示出了低质量MIP贴图选择;图7示出了中等质量MIP贴图选择;图8示出了在低质量MIP贴图选择下可见的MIP贴图级别转换;图9示出与本发明的图形系统结合在一起的计算机的方框图。
优选实施例详细说明系统概述图1示出了可以使用本发明的图形流水线最后几个步骤的示例性结构。图1示出了一个前向纹理映射系统。图2示出了反向纹理映射系统的图形流水线的最后几个步骤。在本说明中,假定使用三角形作为图元描述将要显现的模型。本领域的技术人员可以轻易地将同样技术应用于其它图元,例如其它多边形、正方形或如贝塞尔面片(Bezier patch)这样的曲面。流水线的输入是由诸如计算机游戏和图形流水线的较早几个步骤这样的图形程序用图元顶点指定的图元。在屏幕空间和纹理像素空间中分别使用(x,y)坐标和(u,v)坐标给定图元。该流水线包括顶点着色器110、纹理空间光栅化引擎120、具有纹理空间重采样器132和纹理存储器134的纹理像素着色器130、屏幕空间重采样器140、以及边缘抗锯齿失真和隐藏表面消除(EAA & HSR)单元150。输出的像素存储在用于显示的帧缓存器160中,例如使用诸如RAM DAC这样的D/A转换器生成模拟输出。如果需要,也可以使用诸如DVI这样的数字接口向显示器提供像素数据。显示器可以是任何类型,包括CRT、LCD、等离子显示器。或者,已呈现的图像也可以用作后续图元的纹理贴图。为说明可以使用本发明的示例性系统,现在对如图1和2所示的图形流水线的功能进行更详细的描述。
图1的顶点着色器110和图2的顶点着色器210将三角形(图元)的顶点作为输入接收,并且使用顶点着色程序来修改或添加每一个顶点的属性。由顶点着色器提供的数据通常包括如固有色(diffuse color)和/或高光色(specular color)、纹理坐标、(齐次)屏幕坐标这样的属性,有时包括额外数据,如曲面法线或着色处理所需的其它数据。顶点着色器可以是传统的转换与光照单元(Transform and Lighting unit)。将顶点着色器产生的属性提供给光栅化引擎。
在所谓的反向纹理映射系统(即,将屏幕空间的像素映射到纹理空间中的纹理上,而不是将纹理投影到屏幕的像素上)中,图2的光栅化引擎220在屏幕空间进行操作。通过从顶点属性中选择屏幕坐标作为光栅化处理的驱动变量,这样的光栅化引擎使用扫描行算法来遍历位于屏幕上图元投影内的像素。从而光栅化引擎在“屏幕栅格”上遍历该图元。使用x(“水平”方向)和y(“垂直”方向)作为屏幕空间中的坐标。
在图1所示的优选实施例中,光栅化引擎120在表面空间(surfacespace)中进行操作(称为前向纹理映射系统)。本说明书在下文中将主要针对该优选实施例。本领域的技术人员能够很好地把下述原理同样应用于反向映射系统。通过选择例如纹理坐标(而不是屏幕坐标)作为光栅化处理的驱动变量,表面空间光栅化引擎遍历图元表面(而不是屏幕上的投影)的参数表示。光栅化引擎在“表面栅格”上遍历图元。与纹理贴图相关的栅格提供了这样的表面栅格,并且优选用作表面栅格(因为在纹理栅格上获取纹理采样无需进行重采样)。在缺少纹理贴图时或者例如当纹理是一维或三维时,可以选取另一栅格。使用u(“水平”方向)和v(“垂直”方向)作为纹理空间中的坐标。应该认识到本说明中的“水平”和“垂直”只是相对的。例如,屏幕可能会旋转,即不影响图形处理而在屏幕上将输出旋转。由于纹理栅格常用作表面栅格,所以术语“纹理栅格”(“纹理空间”和“纹理像素”)将用于表示这种一般化的栅格(以及相关联的空间和采样)。随着光栅化引擎遍历栅格的纹理像素位置,在该栅格上内插每个顶点处给定的所有属性(通常为线性内插,除了对纹理像素所投影的屏幕坐标进行透视内插外)。那么,在每个纹理像素位置都可以得到这些属性,从而纹理像素着色器130可以在这些位置使用他们。当遍历基本栅格的u和v纹理坐标时,光栅化引擎仍保持相应的屏幕坐标(x,y)(或对于反向映射系统反之亦然)。通过 和 的线性内插可以保持对应,其中^表示齐次坐标。这样的坐标在本领域是已知的,这里不再进一步说明。然后可以使用透视除法x=x^w^]]>和y=y^w^]]>来计算屏幕坐标。如下面更详细的说明,使用基于两遍一维重采样的屏幕空间重采样,屏幕y坐标仅用于确定MIP贴图。使用一遍二维屏幕空间重采样器,y坐标也用作重采样器的输入。为了计算实际颜色,光栅化引擎可以内插固有色(RGBA)、高光色(RGB)和额外的纹理坐标对(允许多纹理)。还可以内插其它属性(如表面法线)。
如图3所示,在根据本发明的系统中,纹理空间光栅化引擎对与四维MIP映射(mipmapping)对应的栅格上的纹理贴图进行遍历。在三维MIP贴图中,两个方向上都以相同的因子缩小。三维MIP贴图由MIP贴图级别mml指定。原始图像表示为级别0。在级别1中,每项保持例如2×2纹理像素的平均值。可以继续该过程直到最高级别为止,该最高级别具有唯一项,其保持整个纹理的平均颜色。这样,后续级别在各方向上使用因子2进行缩放的正方形MIP贴图中,级别n的尺寸是级别n-1的四分之一。也可以使用其它缩放因子。在四维MIP贴图中,在两个方向上独立地缩小原始图像。四维MIP贴图由水平MIP贴图级别mmlu和垂直MIP贴图级别mmlv指定。图3表示给出了16个MIP贴图级别(0,0)、(1,0)、...、(3,3)细节的四维MIP贴图。灰色部分(0,0)、(1,1)、(2,2)和(3,3)表示的MIP贴图级别分别形成了原始的三维MIP贴图级别0、1、2和3。对于每个纹理像素(u,v),光栅化引擎将相应的四维MIP贴图级别(mmlu,mmlv)提供给纹理像素着色器130。
纹理像素着色器130为每个纹理像素计算局部表面色彩。图2的像素着色器230以相似的方式进行操作。纹理像素着色器对表面栅格中栅格位置的属性进行操作,并且如果有任何与图元相关的二级纹理存在,则使用标准纹理空间重采样器132进行反向映射,从这些二级纹理中获取色彩。当需要纹理数据时,使用纹理空间重采样器来获取给定纹理坐标的纹理采样。纹理像素着色器基于从光栅化引擎接收的内插坐标以及先前的纹理提取(称为相关纹理)和/或计算的任何结果,产生这些纹理坐标。纹理滤波操作通常基于相邻纹理像素的双线性或三线性内插,或基于这些纹理探测的结合来近似各向异性的(透视变换)滤波覆盖范围。优选地,使用一维FIR滤波器结构以两遍一维重采样来执行纹理像素空间重采样器的二维重采样操作。
在一个优选实施例中,纹理存储器134(和图2的234)以三维MIP贴图结构存储纹理贴图。在这样的实施例中,如下面更详细的描述,优选地将纹理空间重采样器132(和图2的232)配置成以飞速写入方式由三维MIP贴图重建所期望的四维MIP贴图。然后纹理提取相当于由存储在纹理存储器134中的三维MIP贴图数据得到4维MIP贴图的重构。在图3的例子中,通过对三维MIP贴图级别0进行下采样来重构四维MIP贴图(3,0)。所提取的纹理像素可以与内插的固有色和/或高光色结合,产生具有相关联屏幕坐标(通常为非整数)的表面色彩采样,该屏幕坐标表示这个纹理采样映射到屏幕上的位置。通过使用根据本发明的飞速写入方式的四维MIP贴图重构,可以将纹理像素着色器130看作MIP贴图重构器。例如通过标准双线性内插,纹理空间重采样器从二级纹理贴图中获取纹理采样。如果需要,上述操作可以扩展到三线性或各项异性滤波方法,并且还可以增加对一维和三维纹理提取的支持(一旦增加,由光栅化引擎进行的纹理坐标的内插也需要被一般化,以支持可能的第三坐标)。或者,纹理存储器134可以以四维MIP贴图结构存储纹理贴图。在这样的实施例中,纹理像素空间重采样器可以轻易地从指定四维MIP贴图中取得纹理像素数据。如下所述,光栅化引擎可以对更详细的四维MIP贴图进行操作。如果这样,优选地将纹理像素空间重采样器配置为以飞速写入方式由用于重采样的较不详细的四维MIP贴图重构更详细的四维MIP贴图数据,用于光栅化引擎。
屏幕空间重采样器140将映射的纹理像素喷涂在整数屏幕位置上,以在屏幕上提供图元的图像。屏幕空间重采样包括以下操作将纹理像素栅格中的色彩信息重构为连续信号,将该连续信号从纹理空间映射到屏幕空间,在屏幕空间内预滤波该映射的连续信号,以及在屏幕空间内采样该预滤波后的信号。
应该认识到,也可以首先进行从纹理空间到屏幕空间的映射,然后再对映射后的信号进行重构。图4使用方块(box)作为重构滤波器的覆盖范围来说明该映射和重构滤波。也可以使用诸如更高阶滤波器的其它滤波器。图中示出了像素的栅格。每个像素以围绕该像素的无尺寸位置的矩形来表示。实点表示变换(映射)后的无尺寸的输入纹理像素坐标的位置。得到原始纹理像素的覆盖范围并将其投影到屏幕上。在图4中,变换后纹理像素覆盖范围的尺寸和位置以虚线矩形表示。
如图5所示,接着将每个映射后的纹理像素喷涂到(即分布于)屏幕空间的像素上,在这些像素中,屏幕空间的预滤波器覆盖范围与屏幕空间中的重构box(即将纹理像素映射到屏幕空间后)重叠。纹理像素500的重构box以高亮矩形510表示。预滤波器覆盖范围可以扩展到若干个像素。该滤波器可以仅水平扩展,但也可以垂直扩展。在图5的例子中,使用在水平和垂直方向上都具有3像素扩展的滤波器,该滤波器以其所属于的像素为中心,并覆盖相邻的两个像素。在这种情况下,十二个输出像素接收贡献(contribution)。对于这些输出像素中的每一个,通过使用它们各自预滤波器的形状确定贡献,来加权输入纹理像素值。
然后,使用图1的片断缓存器160(和图2的260),将来自于屏幕空间重采样器的像素片断(pixel fragment)在图1的边缘抗锯齿失真和隐藏表面消除(EAA & HSR)单元150(和图2的250)中进行合成。将像素片断按深度分类(depth-sorted)保存到缓存器内,以解决隐藏表面问题。在所有图元被呈现后,将每个像素的所有可视片断合成在一起(由于屏幕空间重采样器传递已被预滤波器加权的色彩,所以该合成通常相当于简单求和)并发送到帧缓存器。由边缘附近的屏幕空间光栅化引擎产生的部分贡献的合成引起边缘抗锯齿失真,导致最终像素色彩可能是不同图元色彩的合成。
调整四维MIP贴图级别对于任何提供光栅化栅格的纹理贴图,光栅化引擎分别保持了水平和垂直MIP贴图级别,它们共同形成了四维MIP贴图级别指数。在四维MIP贴图纹理像素重构处理中,光栅化引擎为每个光栅化栅格位置提供需要提取的纹理像素的u和v坐标和该纹理像素的四维MIP贴图级别(mmlu,mmlv)。
通过使用以因子2在每个方向上对连续级别进行缩放的MIP贴图,通常选择提供介于0.5到1之间放大因子的MIP贴图级别。如果在一个方向上改变了一个纹理像素(例如增加了一个),则在该方向上的放大因子就是像素的差。在纹理像素区域的两个方向上放大因子均为1大致对应于这样的情况,其中该纹理像素区域具有的纹理像素数目与在它所投影的区域中具有的像素数目相同。那么,在两个方向上均为0.5的放大因子大致对应于这样的情况,其中在一个纹理像素区域中的纹理像素数目是它的投影区域内像素数目的四倍。低于0.5的放大更有利于使用较高级别即具有较低的分辨率(提供足够的分辨率且需要更少的带宽)的三维MIP贴图。对于四维MIP贴图,原理上可以独立选择两个特定方向的级别。
在MIP贴图级别之间使用缩放因子2(通常情况下),则通过-2log(s)(即-log2s)给出在一个方向上具有放大因子s的MIP贴图级别。对于其它缩放因子和其它MIP贴图级别的编号,本领域技术人员能够作出相似的MIP贴图选择。
光栅化引擎为每个纹理像素(u,v)确定相应的初始四维MIP贴图级别(mmlu,mmlv)。光栅化引擎在垂直方向(和/或在水平方向,如果需要)上使用固定MIP贴图级别的系统中,该光栅化引擎通过确定三角形顶点在该方向上的放大因子并选择最大的放大因子来确定该方向上的初始四维MIP贴图级别。这样,如果对于给定方向,在一个顶点的放大因子为1而在其它两个顶点处放大因子为0.5,则选择1并计算出该方向上的MIP贴图级别为-2log(1)=0。如果这三个顶点具有两个0.25和一个0.5作为放大因子,则得出-2log(0.5)=1。初始四维MIP贴图级别确定了光栅化引擎操作的栅格。对于三角形内每个纹理像素的纹理空间重采样来说,这些级别不一定是最优值。这样,如果光栅化引擎操作的垂直MIP贴图级别固定而水平MIP贴图级别可变,则光栅化引擎对于每个三角形确定一次垂直四维MIP贴图级别,并且对于每个纹理像素确定一次相应的水平四维MIP贴图级别。根据本发明,光栅化引擎也为每个纹理像素(u,v)确定一个相应的放大因子,该放大因子代表当该纹理像素映射到显示器上相应像素位置时发生的放大。根据本发明,依据初始四维MIP贴图级别和放大因子来确定最终的四维MIP贴图级别。纹理空间重采样器使用该最终的四维MIP贴图级别。优选地,放大因子仅在垂直方向上,在该方向上光栅化引擎本身对于每个三角形使用固定的垂直MIP贴图级别。这在进行两次一维扫描处理时尤其有利。那么第一次扫描优选地在显示器扫描行方向上(“水平”),给出中间图像。然后在另一方向上对该中间图像进行第二次扫描操作。对于第一次扫描,在纹理空间内每个扫描行上水平坐标u是可变的,而垂直坐标v每行是固定的。光栅化引擎提供在整个三角形内都保持不变的mmlv值。每个纹理像素确定一次mmlu值。用这种方法,光栅化引擎为每个纹理像素确定初始值mmlu,该值也作为最终值fmmlu。如下所述,关于光栅化引擎的操作保持不变的初始四维级别mmlv,对于每个纹理像素被调整为用于纹理空间重采样的最终值fmmlv。
如果放大因子小于预定阈值,则通过调整mmlv以确定更低分辨率的MIP贴图级别来确定最终的垂直MIP贴图级别fmmlv,否则保持确定的MIP贴图级别mmlv。为确定该修改,光栅化引擎计算表示第二遍扫描(其将v值映射到y值)的放大因子 该值表示,基于当前选择的光栅化栅格位置,在垂直光栅化MIP贴图级别mmlv上v值相差1的两个纹理像素在屏幕上相距多远。因为mmlv的选择,该距离至多是1个像素间隔,但因为在三角形中缩小倍数的变化,且因为切变的减少可能在垂直方向上改善光栅化栅格,因此该距离可以小得多。使用因子2的缩放,该阈值优选为1/2。本领域的技术人员将能够为其它缩放因子确定最佳阈值。这样,如果 小于1/2,则可以选择比初始mmlv假定的级别更粗糙的四维MIP贴图级别mmlv(并且对于所提取四维MIP贴图级别mmlv中的以后各行,仍具有介于1/2和1之间的有效屏幕像素间隔)。更精确地, 确定可以加到mmlv上的MIP贴图级别差Δmmlv=2log(∂y∂v),]]>以达到为特定光栅化栅格位置提供合适细节量所真正需要的垂直四维MIP贴图级别。这给出最终的MIP贴图级别fmmlv=mmlv+Δmmlv。优选地,除初始四维MIP贴图级别外,光栅化引擎对于每个纹理像素还提供了垂直放大因子。然后可以通过纹理空间重采样器来完成上述确定最终垂直四维MIP贴图级别的计算,但也可以通过系统的另一单元来完成该计算。应该认识到,上面关于一个优选实施例的描述针对垂直放大。其它系统可以在水平方向上或同时在两个方向上使用同样原理。尽管在三角形内某些位置处更精细的栅格上进行光栅化,但仍使用上述技术为重采样选择最佳的四维MIP贴图级别。因此,虽然该更精细的光栅化消耗了更多的处理能力,但提取纹理贴图所需的存储器带宽不受影响。
如果纹理存储器存储了完整的四维MIP贴图结构,则纹理空间重采样器可以使用最终的四维MIP贴图级别从指定的四维MIP贴图中提取纹理数据。与光栅化引擎使用的初始四维MIP贴图相比,最终的四维MIP贴图可能具有较低的分辨率。为了节省带宽,可以使用内插以飞速写入方式从较低分辨率的四维MIP贴图中重构更高分辨率的四维MIP贴图。
选择用于四维MIP贴图重构的三维MIP贴图级别因为应用中通常仅以标准三维MIP贴图方式来传递纹理,所以在一个优选实施例中,对于任何提供了光栅化栅格的纹理贴图,都应用了从三维MIP贴图以飞速写入方式到四维MIP贴图的重构。然后纹理像素着色器用作四维MIP贴图重构器。如上所述,光栅化引擎分别保持了水平和垂直MIP贴图级别,它们共同形成四维MIP贴图级别指数。在四维MIP贴图纹理像素重构处理中,本发明的光栅化引擎为每个光栅化栅格位置提供了需要提取的纹理像素的u和v坐标和该纹理像素的垂直放大因子(或者甚至最终四维MIP贴图级别(mmlu,fmmlv))。四维重构单元需要确定用于提取纹理像素的三维MIP贴图级别mml,可以将这些纹理像素进行滤波以在所要求的坐标(u,v)处提供采样。三维MIP贴图级别mml对应于四维MIP贴图级别(mml,mml),如图3、6和7中的阴影正方形所示。需要根据这些级别生成对角线之外的MIP贴图级别中的采样。附图中示出了如何通过放大从三维MIP贴图级别3(图6)、或通过缩小从三维MIP贴图级别0(图3)、或从两级别之间的级别(图7)生成四维MIP贴图级别(3,0)的纹理像素。给定一个(可能如上述进行调整)由光栅化引擎为纹理像素采样提供的四维MIP贴图级别(mmlu,fmmlv),需要一个确定三维MIP贴图级别mml的函数,使用该三维MIP贴图级别mml来寻址纹理存储器。将对下面的三种选择作更详细的描述,提供不同质量/性能的权衡。
如图6所示,在低质量的设置中,选择与两个四维MIP贴图级别中最粗糙的一个级别对应的三维MIP贴图级别。然后在另一方向上放大该级别(在该方向上产生模糊),以达到四维MIP贴图级别纹理像素。优选地,使用线性内插,或如果需要使用更高阶滤波器来获得该放大。优点是提取了最小数量的三维纹理像素,并且可采用纹理超高速缓存(caching),以重新使用纹理采样生成后续的四维MIP贴图级别纹理像素(因为在相同的三维MIP贴图级别采样之间生成许多四维MIP贴图采样)。与该选择相应的三维MIP贴图级别选择公式是mml=MAX(mmlu,fmmlv)。
如图3所示,在高质量设置中,选择与两个四维MIP贴图级别中精细的一个级别对应的三维MIP贴图级别。然后在另一方向上缩小该级别,以达到四维MIP贴图级别纹理像素。其优点是保持了最高质量和清晰度。但代价是可能会为每个需要生成的四维MIP贴图级别纹理像素提取许多纹理像素。优选地,所生成的纹理像素是所提取纹理像素的非加权平均(也可以使用更高阶的滤波器)。与此选择相应的三维MIP贴图级别选择公式是mml=MIN(mmlu,fmmlv)。
如图7所示,在中等质量的设置中,选择在低质量和高质量设置间的折衷。在一个优选实施例中,该设置由允许某些(昂贵的)缩小(如同高质量设置)的参数a(最大各项异性级别)控制,但至多缩小a个MIP贴图级别。这意味着在一个方向上至多合成2a个纹理像素。在水平和垂直MIP贴图级别之间的任何较大差异使用与低质量设置类似的方法来过渡。在图7中以优选设置a=2说明了这种选择。将a设置为0产生低质量的设置,而将a设置为很大则产生高质量的设置。与该选择相应的三维MIP贴图级别选择公式是mml=MAX(MAX(mmlu,fmmlv)-a,MIN(mmlu,fmmlv))。
较低质量的设置(仅允许很有限的各项异性级别)会导致如图8所示的人造痕迹(artifacts)。从一个角度观看的纹理变得模糊(如同使用传统的非各项异性滤波),但由于我们在使用双线性纹理滤波时离散地切换MIP贴图级别,使得模糊中的跳跃(jump)变得可见。由于对每个纹理像素的三维MIP贴图级别选择,这些线随着观看者的移动而移动(它们并不固定在三角形边缘)。如果需要使用较低质量的选项来限制带宽,可以加入如三线性滤波(在MIP贴图级别之间混合)以使转换平缓。然而,这对于高质量设置(或对于在中等设置中适度允许各项异性级别的情况,如a=3)是不需要的,因为在这些设置中我们有足够的细节,并且不再需要由三线性滤波所产生的额外模糊,。
应该注意,由上述计算分配给mml的值必须限制在MIP贴图级别可用的数值范围内(例如要排除mml的负值),并且转换为用于指示存储器中MIP贴图级别的整数级别。这可以通过任何合适的方法来完成,例如通过舍入或截断。优选地,剩余部分用于三线性滤波。可以选择舍入的时刻。优选地,对最终的mml值进行舍入,例如可以由上述三种方法之一来确定mml。如果需要,在确定Δmmlv时也可以立刻对其进行舍入,例如通过下舍入 图9示出了计算机900的方框图,包括中央处理单元910、存储器920、显示器930以及根据本发明的计算机图形系统940。该计算机可以是诸如个人计算机、游戏机或者工作站的传统计算机。该计算机图形系统可以使用图形处理器来实现。这样的图形处理器可以在用于使图形处理器执行本发明方法的程序的控制下进行操作。该程序可以固定地嵌入(例如在ROM中),但也可以从后台存储器加载。在后一种情况下,该程序可以以任何合适形式分布,例如,使用诸如CD-ROM的记录载体,或诸如因特网的有线或无线通信设备。
应该注意,上述实施例说明而不是限制本发明,并且本领域的技术人员在不背离所附权利要求范围的情况下能够设计出许多可替换的实施例。在权利要求中,不应该将括号内任何参考标记解释为对权利要求的限制。使用动词“包括”及其结合不排除出现权利要求中所声明的元件或步骤之外的元件或步骤。在元件前的冠词“一个”并不排除出现多个这样的元件。本发明可以通过包括若干不同元件的硬件实现,同时也可以通过适当编程的计算机实现。在列举了几种装置的设备(device)权利要求中,这些装置中的一些可以通过一个相同的硬件来实施。在相互不同的从属权利要求中列举了某些措施这一事实,并不表明不能用这些措施的组合得到好处。
权利要求
1.一种呈现显示图像的系统,包括纹理存储器(134),用于以MIP贴图结构存储纹理贴图;纹理贴图中的纹理像素由一对u和v坐标指定;对于纹理像素(u,v),光栅化引擎(120)用于确定相应的初始四维MIP贴图级别(mmlu,mmlv);确定放大因子,该放大因子代表当所述纹理像素映射到显示器上相应像素位置时出现的放大;根据确定的所述初始四维MIP贴图级别mmlu,mmlv和所述放大因子来确定相应的最终四维MIP贴图级别;以及纹理空间重采样器(132),用于从由所述一对最终四维MIP贴图级别确定的纹理贴图中获取纹理数据;纹理映射器(140),用于将获取的所述纹理数据映射到定义显示图像的相应像素数据上。
2.如权利要求1所述的系统,其中,所述放大因子代表由坐标v表示的垂直方向上的放大。
3.如权利要求2所述的系统,其中,所述光栅化引擎用于通过如下方式来确定最终的垂直四维MIP贴图级别fmmlv,所述方式为,如果所述放大因子小于预定阈值,则调整mmlv来识别更低分辨率的垂直四维MIP贴图级别,否则保持所述确定的MIP贴图级别mmlv。
4.如权利要求1所述的系统,其中所述纹理存储器被设置成以四维MIP贴图结构存储所述纹理贴图;每个纹理贴图由一对四维MIP贴图级别确定;所述纹理空间重采样器用于以飞速写入方式从由所述光栅化引擎使用的所述一对最终四维MIP贴图级别在所述纹理存储器中确定的四维MIP贴图的纹理贴图,重构由所述一对初始四维MIP贴图级别确定的四维MIP贴图的纹理贴图的至少一部分。
5.如权利要求1所述的系统,其中所述纹理存储器被设置成以三维MIP贴图结构存储所述纹理贴图;每个纹理贴图由各个三维MIP贴图级别mml确定;所述纹理空间重采样器用于以飞速写入方式由在所述纹理存储器中具有级别mml的相关联三维MIP贴图,重构确定的四维MIP贴图的纹理贴图的至少一部分。
6.如权利要求3和5所述的系统,其中,所述相关联的三维MIP贴图的三维MIP贴图级别mml由MAX(mmlu,fmmlv)给定。
7.如权利要求4和5所述的系统,其中,所述相关联的三维MIP贴图的三维MIP贴图级别mml由MIN(mmlu,fmmlv)给定。
8.如权利要求4和5所述的系统,其中,所述相关联的三维MIP贴图的三维MIP贴图级别mml根据预定的最大各项异性级别a来确定。
9.如权利要求8所述的系统,其中,所述相关联的三维MIP贴图的三维MIP贴图级别mml由MAX(MAX(mmlu,fmmlv)-a,MIN(mmlu,fmmlv))给定。
10.一种包括中央处理单元、存储器、显示器、和权利要求1所述系统的计算机。
11.一种用于呈现显示图像的方法,包括以MIP贴图结构存储纹理贴图;纹理贴图中的纹理像素由一对u和v坐标指定;对于纹理像素(u,v),在光栅化操作中确定相应的初始四维MIP贴图级别(mmlu,mmlv);确定放大因子,该放大因子代表当该纹理像素被映射到显示器上相应像素位置时出现的放大;以及根据确定的所述初始四维MIP贴图级别mmlu,mmlv和所述放大因子,确定相应的最终四维MIP贴图级别;在纹理空间重采样操作中,获取由所述最终四维MIP贴图级别确定的纹理贴图的纹理数据;以及将获取的所述纹理数据映射到定义显示图像的相应像素数据上。
12.用于使处理器执行权利要求11所述方法的计算机程序。
全文摘要
一种计算机图形技术,包括用于以MIP贴图结构存储纹理贴图的纹理存储器(134)。纹理贴图中的纹理像素由一对u和v坐标指定。光栅化引擎(120)为纹理像素(u,v)确定相应的初始四维MIP贴图级别(mml
文档编号G06T15/04GK1816829SQ200480018718
公开日2006年8月9日 申请日期2004年6月30日 优先权日2003年7月1日
发明者巴尔特·G·B·巴伦布吕格, 科内利斯·迈因德斯 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1