1.本技术涉及纹理过滤,尤其涉及各向异性纹理过滤。
背景技术:2.图形处理单元(gpu)可以用来处理由应用程序生成的几何形状数据(例如,限定图元或补片的顶点),以便生成图像数据。例如,gpu可以确定要存储在帧缓冲器中的图像的像素值(例如,颜色值),该像素值可以被输出到显示器。
3.gpu可以分两个阶段处理所接收的几何形状数据——几何形状处理阶段和光栅化阶段。在几何形状处理阶段期间,将顶点着色器应用于从应用程序(例如游戏应用程序)接收的几何形状数据(例如限定图元或补片的顶点)以将几何形状数据变换到渲染空间(例如屏幕空间)中。在几何形状处理阶段中还可以执行诸如裁剪和剔除的其他功能以移除落在视锥外的几何形状数据(例如图元或补片),和/或照明/属性处理。
4.在光栅化阶段期间,将经过变换的图元映射到像素并且识别每个像素的颜色。这可以包括对经变换的几何形状数据进行光栅化(例如,通过执行扫描转换)以生成图元片段。术语“片段”在本文中用于意指采样点处的图元的样本,所述样本将被处理以对图像的像素进行渲染。在一些示例中,可以存在像素到片段的一对一映射。然而,在其他示例中,可能存在比像素更多的片段,并且这种过采样可以允许像素值的更高质量渲染。
5.然后,可以通过称为隐藏表面移除的过程来移除隐藏的(例如,被其他片段隐藏的)图元片段。然后可以将纹理化和/或着色应用于未隐藏的图元片段以确定所渲染图像的像素值。例如,在一些情况下,可以通过将纹理(例如图像)应用于该片段来识别片段的颜色。如本领域的技术人员所知,纹理(也可以称为纹理图)是用于表示预先计算的颜色、照明、阴影等的图像。纹理图由多个纹素(即,颜色值)形成,所述纹素也可以被称为纹理元素或纹理像素。对片段施加纹理通常包括将所述片段在渲染空间中的位置映射到所述纹理中的位置或定位,以及使用所述纹理中的所述位置的颜色作为所述片段的纹理颜色。然后可以使用该纹理颜色来确定片段的最终颜色。根据纹理确定其颜色的片段可以被称为纹理映射片段。
6.由于片段位置很少直接映射到特定纹素,因此片段的纹理颜色通常通过称为纹理过滤的过程来识别。在可以被称为点采样、点过滤或最近邻插值的最简单情况下,屏幕空间中的片段被映射到纹理中的位置(即,映射到纹理空间中的位置),并且与纹理中的所识别位置最接近的纹素的值(即,颜色)被用作该片段的纹理颜色。然而,在大多数情况下,使用更复杂的过滤技术来确定片段的纹理颜色,这些过滤技术组合了靠近纹理中的所识别位置的多个纹素。更复杂的过滤技术的示例包括各向同性过滤技术和各向异性过滤技术。各向同性过滤技术在垂直轴线上均匀地过滤纹理,而各向异性过滤技术不均匀地过滤纹理,而是基于纹理在片段的邻近区域中经历的局部(即各向异性)翘曲来过滤纹理。在一些情况下,该翘曲可以考虑纹理在屏幕上相对于相机角度的位置。各向同性过滤技术的示例包括但不限于双线性过滤和三线性过滤。
7.在双线性过滤中,通过根据距离的成对线性加权平均值来组合到纹理中所识别位置的四个最近纹素。与点采样相比,这通常提供了来自位映射纹理的连续图像的更平滑重建。双线性过滤已经被证明尤其适用于其中由于纹理映射而导致纹理被放大的应用。然而,当纹理被缩小时,点采样或双线性过滤都不提供适当的解决方案,因为它们不考虑纹理空间中的片段覆盖区的大小。
8.点采样和双线性过滤可以与称为多级渐远纹理的技术组合。在多级渐远纹理技术中,一系列(或金字塔型)多级渐远纹理被预先计算(例如,预先生成和/或离线生成)。每个多级渐远纹理是原始纹理的较低分辨率版本。具体地讲,根据标准,每个多级渐远纹理的高度和宽度为前一级的1/2,其中奇数维度向下取整,而小于1的任何维度向上取整为1。所述标准为每个多级渐远纹理分配整数细节级别(lod)(对于最高分辨率为0,并且对于每个后续级别加1)。多级渐远纹理允许为片段选择适当的细节级别,在这种意义上,其纹素覆盖区最接近地匹配片段覆盖区的多级渐远纹理级别是用于过滤的良好候选级别。具体地讲,较高分辨率的多级渐远纹理可以用于离屏幕/观看者较近的片段/对象,而较低分辨率的多级渐远纹理可以用于离屏幕/观看者较远的片段/对象。因此,多级渐远纹理提供了一种有效的解决方案来实现纹理缩小,而不必引入附加的过滤,其潜在地不会将计算成本和存储器带宽成本结合起来。当点采样和双线性过滤与多级渐远纹理技术一起使用时,从最接近的多级渐远纹理级别(或者最接近的多级渐远纹理级别的缩放版本)中选择纹素。
9.三线性过滤包括对两个最接近的多级渐远纹理级别(一个为较高分辨率,一个为较低分辨率)执行双线性过滤,然后在双线性过滤的结果之间进行线性插值。与双线性过滤类似,三线性过滤提供纹理可能经历的连续缩小范围的更平滑的近似。
10.双线性过滤或三线性过滤均未考虑片段覆盖区可能在不同方向上翘曲不同量(例如,当纹理相对于屏幕/观看者处于后退角时)的事实,从而使得难以使用单个参数(例如,细节级别)来近似纹理空间中的片段覆盖区。在这类情况下,双线性过滤或三线性过滤可能产生模糊的结果。
11.各向异性过滤通过组合在纹理中的所识别位置周围但在根据该片段在屏幕空间中的投影形状被映射到纹理上(即,在纹理空间中)的样本图案上的若干个纹素来解决此问题。虽然各向异性过滤可以减少极端视角下的模糊,但是各向异性过滤在计算上比各向同性过滤更密集。
12.然后,通过纹理过滤输出的纹理颜色可以被用作片段着色器的输入。如本领域的技术人员所知,片段着色器(可以替代性地称为像素着色器)是对各个片段进行操作以确定其颜色、亮度、对比度等的程序(例如,一组指令)。片段着色器可以接收片段(例如,其位置)和一个或多个其它输入参数(例如,纹理坐标)作为输入,并根据特定着色器程序输出颜色值。在一些情况下,可以进一步处理像素着色器的输出。例如,当存在比像素更多的样本时,抗混叠技术,例如多样本抗混叠(msaa)可以用于从多个样本(其可被称为子样本)生成特定像素的颜色。抗混叠技术将过滤器,例如但不限于箱式过滤器应用于多个样本,以生成像素的单个颜色值。
13.在执行纹理化和/或着色之前执行隐藏表面移除的gpu被称为实施“延迟”渲染。在其它示例中,gpu可能不实施延迟渲染,在这种情况下,可以在对片段执行隐藏表面移除之前将纹理化和着色应用于这些片段。在任一情况下,所渲染的像素值可以存储在存储器(例
如,帧缓冲器)中。
14.下文描述的实施方案仅以举例的方式提供,而不构成对克服用于执行各向异性纹理过滤的已知方法和硬件的任何或所有缺点的实现方式的限制。
技术实现要素:15.提供本发明内容是为了介绍在以下详细描述中进一步描述的一些概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
16.本文描述了执行各向异性纹理过滤的方法。这些方法包括:生成描述纹理空间中的椭圆形覆盖区的一个或多个参数;在待采样的椭圆中的多个采样点中的每个采样点处执行各向同性过滤,该待采样的椭圆基于椭圆形覆盖区;以及组合多个采样点中的每个采样点处的各向同性过滤的结果,以通过线性插值序列生成组合结果,其中该线性插值序列中的每个线性插值包括将该序列中的前一个线性插值的结果与多个采样点中的一个或多个采样点的各向同性过滤结果相混合,用于线性插值的多个采样点中的一个或多个采样点相比用于该序列中的前一个线性插值的多个采样点中的一个或多个采样点更靠近椭圆形覆盖区的长轴的中点。
17.第一方面提供一种执行各向异性纹理过滤的方法,该方法包括:生成描述纹理空间中的椭圆形覆盖区的一个或多个参数;在待采样的椭圆中的多个采样点中的每个采样点处执行各向同性过滤,该待采样的椭圆基于椭圆形覆盖区;以及组合多个采样点中的每个采样点处的各向同性过滤的结果,以通过线性插值序列生成组合结果,其中该线性插值序列中的每个线性插值包括将该序列中的前一个线性插值的结果与多个采样点中的一个或多个采样点的各向同性过滤结果相混合,用于线性插值的多个采样点中的一个或多个采样点相比用于该序列中的前一个线性插值的多个采样点中的一个或多个采样点更靠近椭圆形覆盖区的长轴的中点。
18.多个采样点可以包括对称地位于椭圆形覆盖区的长轴的中点周围的偶数个采样点,并且每个线性插值可以包括将前一个线性插值的结果与在距椭圆形覆盖区的长轴的中点相等距离的两个采样点处的各向同性过滤的结果的组合相混合。
19.在两个采样点处的各向同性过滤的结果的组合可以包括在两个采样点处的各向同性过滤的结果的平均值。
20.多个采样点可以包括位于椭圆形覆盖区的长轴的中点一侧的采样点,并且该方法还可以包括:在待采样的椭圆中的第二多个采样点中的每个采样点处执行各向同性过滤,第二多个采样点包括位于椭圆形覆盖区的长轴的中点的相对侧的采样点;组合第二多个采样点中的每个采样点处的各向同性过滤的结果,以通过第二线性插值序列生成第二组合结果,其中该第二线性插值序列中的每个线性插值包括将该第二序列中的前一个线性插值的结果与第二多个采样点中的一个或多个采样点的各向同性过滤结果相混合,用于线性插值的第二多个采样点中的一个或多个采样点相比用于第二序列中的前一个线性插值的第二多个采样点中的一个或多个采样点更靠近椭圆形覆盖区的中点;以及将组合结果和第二组合结果进行组合。
21.在线性插值序列的第一线性插值中,用于第一线性插值的多个采样点中的一个或
多个采样点的各向同性过滤结果可以与起始值相混合。
22.该线性插值序列可以被配置为将多个采样点中的每个采样点处的各向同性过滤的结果与截断过滤器进行组合;起始值可以为零;并且该方法还可以包括基于截断过滤器的截断项来将组合结果归一化。
23.基于截断过滤器的截断项来将组合结果归一化可以包括通过1减去截断过滤器的截断项的总和所得结果的倒数来重新缩放组合结果。
24.该线性插值序列可以被配置为将多个采样点中的每个采样点处的各向同性过滤的结果与截断过滤器进行组合;并且起始值可以表示截断过滤器的截断项的组合。
25.该线性插值序列可以被配置为将多个采样点中的每个采样点处的各向同性过滤的结果与截断高斯过滤器进行组合。
26.每个线性插值可以使用用于该线性插值的线性插值因子将序列中的前一个线性插值的结果与多个采样点中的一个或多个采样点的各向同性过滤结果相混合。
27.该方法还可以包括根据待采样椭圆的长半径与待采样椭圆的短半径的比率动态地计算用于线性插值的线性插值因子。
28.该方法还可以包括从查找表根据待采样椭圆的长半径与待采样椭圆的短半径的比率获得用于线性插值的线性插值因子。
29.用于该序列中的第k线性插值的线性插值因子γk可以等于γk=m(k-k)+c,其中k是在椭圆形覆盖区的长轴的中点的同一侧的多个采样点的采样点数目,η是待采样椭圆的长半径与待采样椭圆的短半径的比率,并且
30.用于该序列中的第k个线性插值的线性插值因子γk可以等于其中k是在椭圆形覆盖区的长轴的中点的同一侧的多个采样点的采样点数目,η是待采样椭圆的长半径与待采样椭圆的短半径的比率。
31.多个采样点中的相邻采样点之间的间距可以与个单位成比例,其中η是待采样椭圆的长半径与待采样椭圆的短半径的比率。
32.多个采样点可以沿椭圆形覆盖区的长轴定位。
33.第二方面提供一种生成图像的方法,该方法包括根据第一方面执行各向异性纹理过滤,以及基于组合结果生成图像。
34.第三方面提供一种在图形处理系统中使用的纹理过滤单元,该纹理过滤单元被配置为执行第一方面的方法。
35.第四方面提供一种包括第三方面的纹理过滤单元的图形处理系统。
36.本文所述的纹理过滤单元和/或图形处理系统能够以集成电路上的硬件来体现。可以提供一种在集成电路制造系统处制造如本文所述的纹理过滤单元和/或图形处理系统的方法。可以提供一种集成电路定义数据集,当其在集成电路制造系统中被处理时,将该系统配置为制造如本文所述的纹理过滤单元和/或图形处理系统。可以提供一种非暂态计算机可读存储介质,在其上存储有纹理过滤单元或图形处理系统的计算机可读描述,该计算机可读描述当在如本文所述的集成电路制造系统中被处理时,使得集成电路制造系统制造
体现纹理过滤单元或图形处理系统的集成电路。
37.可以提供一种集成电路制造系统,包括:非暂态计算机可读存储介质,在其上存储有如本文所述的纹理过滤单元或图形处理系统的计算机可读描述;布局处理系统,其被配置为处理计算机可读描述以便生成体现纹理过滤单元或图形处理系统的集成电路的电路布局描述;以及集成电路生成系统,其被配置为根据电路布局描述制造纹理过滤单元或图形处理系统。
38.可以提供用于执行如本文所描述的方法的计算机程序代码。可以提供其上存储有计算机可读指令的非暂态计算机可读存储介质,当在计算机系统处执行时,所述计算机可读指令使计算机系统执行如本文所述的方法。
39.如对本领域技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。
附图说明
40.现在将参考附图详细描述示例,在附图中:
41.图1是展示将屏幕空间中的圆形覆盖区映射到纹理空间中的椭圆形覆盖区的示意图;
42.图2是展示执行各向异性纹理过滤的第一示例方法的示意图;
43.图3是展示执行各向异性纹理过滤的第二示例方法的示意图;
44.图4是根据一个实施方案的执行各向异性纹理过滤的示例方法的流程图;
45.图5是展示图4的方法的示意图;
46.图6是展示对称各向异性纹理过滤方法的示意图,其中使用两个同心椭圆来近似期望的椭圆形覆盖区,其中一个椭圆小于期望的椭圆,另一个椭圆大于期望的椭圆;
47.图7是展示非对称各向异性纹理过滤方法的示意图,其中使用两个偏心率不同的椭圆来近似期望的椭圆形覆盖区;
48.图8是使用高斯过滤器组合图4方法的各向同性过滤结果的示例方法;
49.图9是展示纹理采样点的示例集合的各向同性过滤结果的示例集合的示意图;
50.图10是展示不同各向异性比率的线性插值因子的曲线图;
51.图11是展示截断样本集合的不同各向异性比率的线性插值因子的曲线图;
52.图12是根据一个实施方案的执行各向异性纹理过滤的第二示例方法的流程图;
53.图13是示出两个示例过滤器的脉冲响应的曲线图;
54.图14是示出图13的两个示例过滤器的频率响应的曲线图;
55.图15是包括被配置为执行图4的方法、图8的方法和/或图12的方法的纹理过滤单元的示例图形处理系统的框图;
56.图16是其中可以实现本文所述的纹理过滤单元和/或图形处理系统的示例计算机系统的框图;并且
57.图17是用于生成体现如本文所述的纹理过滤单元和/或图形处理系统的集成电路的示例集成电路制造系统的框图。
58.附图示出各种示例。技术人员将理解,附图中所说明的元件边界(例如,框、框的组,或其他形状)表示边界的一个示例。在一些示例中,情况可能是一个元件可以被设计为
多个元件,或者多个元件可以被设计为一个元件。在适当的情况下,贯穿各附图使用共同的附图标记来指示类似的特征。
具体实施方式
59.以举例的方式给出以下描述,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文所描述的实施方案,并且对所公开的实施方案的各种修改对于本领域技术人员而言将是显而易见的。仅以举例的方式描述实施方案。
60.如上所述,纹理映射是将纹理(即图像)映射到3d场景中的对象上的过程。例如,可以将表示砖块图案的纹理应用于墙壁对象,以使得看起来好像墙壁是由砖制成的。本文使用术语“屏幕空间”来表示显示器的3d坐标系,其中定义了诸如图元和补片的3d对象。屏幕空间中的每个像素由像素坐标(x,y)和深度z定义。本文使用术语“纹理空间”来表示纹理的2d坐标系。纹理空间中的每个纹素由纹理坐标(u,v)定义。
61.在各向异性纹理过滤中,将在纹理中的所识别位置周围但在根据过滤器在屏幕空间中的投影形状被映射到纹理上(即,在纹理空间中)的样本图案上的若干个纹素组合。各向异性纹理过滤与其他过滤方法(诸如各向同性纹理过滤方法)相比,可以改善成角度的并且离相机更远的纹理的外观。一种已知用于实现各向异性纹理过滤的方法是paul s.heckbert和ned greene首先提出的椭圆加权平均(ewa)过滤器技术。在参考图1描述的ewa技术中,像素被视为在屏幕空间104中具有圆形覆盖区102,其投影到纹理空间108中的具有任意取向的椭圆106。然后,将纹理过滤结果计算为椭圆形覆盖区内部的纹素与像素过滤器的投影权重的卷积。如果纹理空间中像素的中心可以转换为(0,0),则可以根据关系式(1)计算像素的椭圆形覆盖区,其中d2是当像素被映射回屏幕空间时离像素中心的距离的平方:
62.d2(u,v)=au2+buv+cv2ꢀꢀꢀ
(1)
63.其中
[0064][0065][0066][0067]
f=a
nncnn-b
nn2
/4
[0068]
a=a
nn
/f
[0069]
b=b
nn
/f
[0070]
c=c
nn
/f.
[0071]
偏导数表示纹理空间中的u和v的变化相对于屏幕空间中的x和y的变化的比率。然后对椭圆形覆盖区内部的纹素进行采样、加权(根据过滤器分布)和累加。接着将结果除以权重之和(它是纹理空间中椭圆形过滤器的体积)。
[0072]
ewa当与高斯过滤器分布结合使用时(在本文中可以称为高斯ewa),被视为质量最高的纹理过滤技术之一,并且经常被用作测量其他过滤技术的质量的基准。然而,已经证明ewa技术难以在硬件中实现。具体地讲,计算权重和椭圆参数可能占用大量计算资源,并且在一些情况下可能需要获得许多纹素。
[0073]
已经提出了申请人已知的不同方法(并非承认它们是众所周知的方法)来近似高斯ewa,其可以更容易地在硬件中实现。这些技术中的一些技术涉及在沿椭圆中的线的若干个点处执行各向同性过滤(诸如三线性过滤),并且组合各向同性过滤的结果。例如,在参考图2所描述的一种方法(可以称为texram方法)中,椭圆202由平行四边形204表示,在沿平行四边形204的长轴210的若干个样本点208(其可以称为探针)处执行三线性过滤206,并且生成三线性过滤的结果的加权平均值。具体地讲,texram使用四个偏导数来创建纹理空间中的两个向量和样本点208沿着具有这两个向量中的较长向量的长度和斜率的线210布置。
[0074]
在参考图3所展示的另一种方法(可以称为feline方法)中,生成椭圆304的长轴302,在沿该椭圆的长轴302的若干个样本点308(其可以称为探针)处执行三线性过滤306,并且将三线性过滤的结果与高斯权重组合。如下面的关系式(2)所示计算采样线的长度(linelength),其中ρ
+
是椭圆的长半径,并且ρ-是椭圆的短半径。采样点关于采样线的中点(um,vm)310对称地分布,使得第n个采样点(un,vn)的位置可以如下面的关系式(3)所示计算,其中,如果探针的数目为偶数,则n=+/-1、+/-3;如果探针的数目为奇数,则n=0、+/-2、+/-4。采样点之间的距离为其中δu和δv根据下面所示的关系式(4)和关系式(5)计算,其中theta为短轴的角度并且iprobes为探针的数目。然后,通过计算探针距屏幕空间中的像素过滤器中心的距离的平方,再求幂,来将高斯权重应用于每个探针n。然后将累加的探针结果除以所施加的所有权重之和。
[0075]
linelength=2*(ρ
+
–
ρ-)
ꢀꢀꢀ
(2)
[0076][0077]
δu=cos(theta)*linelength/(iprobes-1)
ꢀꢀꢀ
(4)
[0078]
δv=sin(theta)
·
linelength/(iprobes-1)
ꢀꢀꢀ
(5)
[0079]
在一些情况下,代替用三角函数计算步进向量(δu,δv),可以通过直接缩放较长向量来确定该步进向量。
[0080]
本发明人已经确认,通过在沿椭圆长轴的若干个样本点处执行各向同性过滤可以更准确地估计高斯ewa,其中样本点之间的距离与个单位成比例,η是椭圆的长半径(ρ
+
)与椭圆的短半径(ρ-)的比率,因此椭圆的长半径与椭圆的短半径之间的比率(即η)可以被称为各向异性比率。如下文更详细地描述的,当采样点之间的距离与个单位成比例时,估计的最大误差不取决于各向异性比率。
[0081]
本发明人还已经确认,与沿长轴的样本点的间距无关,通过以递归方式组合各向同性过滤的结果,可以更准确地估计高斯ewa。如下文更详细地描述的,这不仅可以减少对多个小值求和时可能出现的累积误差,而且还可以简化权重的计算。
[0082]
在一些情况下,可以组合这两种技术以获得甚至更准确的高斯ewa估计值。
[0083]
因此,本文描述了使用这些技术中的一种或多种技术来执行对纹理的各向异性过滤的方法和纹理过滤单元。
[0084]
现在参考图4,其展示了用于对纹理执行各向异性过滤的示例方法400。方法400开始于框402,其中基于定义屏幕空间与纹理空间之间的关系的信息以及识别纹理中感兴趣
的点或位置的信息来生成定义纹理空间中的椭圆形覆盖区(例如,图5的椭圆形覆盖区502)的参数。该椭圆形覆盖区表示将屏幕空间中的采样核的圆形或椭圆形覆盖区投影到纹理空间中。对于感兴趣的像素或片段,采样核识别在感兴趣的像素或片段附近或周围的像素或片段,对于该感兴趣的像素或片段,相应的纹理颜色将被用于确定该感兴趣的像素或片段的纹理颜色。
[0085]
识别纹理中感兴趣的位置的信息可以包括一组纹理坐标(u,v),其识别纹理中的与屏幕空间中的特定片段或像素相对应的位置。这组纹理坐标可以定义期望的椭圆形覆盖区的中点(例如,图5的中点510)。
[0086]
在可以被称为显式细节级别案例的一些情况下,定义屏幕空间与纹理空间之间的关系的信息可以包括表示纹理空间中的u和v的变化相对于屏幕空间中的x和y的变化的比率的偏导数在可以被称为隐式细节级别案例的其他情况下,定义屏幕空间与纹理空间之间的关系的信息可以包括能够由其确定或至少估计所述偏导数的信息。例如,定义屏幕空间与纹理空间之间的关系的信息可以包括与相关像素/片段的相邻像素/片段(例如,像素/片段的2
×
2块)相对应的纹理坐标。在一些情况下,椭圆形覆盖区的参数还可以基于纹理的尺寸。
[0087]
定义可以生成的椭圆形覆盖区的参数可以包括但不限于:该椭圆形覆盖区的长轴(例如,图5的椭圆形覆盖区502的长轴504),以及长轴和短轴的长度(ρ
+
和ρ-,它们还可以被分别称为长半径和短半径)。
[0088]
存在许多已知的用于生成纹理空间中的椭圆形覆盖区的参数的方法。纹理空间中的椭圆形覆盖区的参数能够以任何合适的方式生成。在一些情况下,长轴可以通过执行偏导数的全导数矩阵(例如雅可比矩阵)的奇异值分解(svd)来识别。这涉及取矩阵m,对其求平方mm
t
(或m
t
m),然后对角化。这通过关系式(6)说明:
[0089][0090]
其中j是如关系式(7)中所示的偏导数的雅可比矩阵
[0091][0092]
并且该雅可比矩阵的平方如关系式(8)所示。
[0093][0094]
该雅可比矩阵平方的倒数然后可以如关系式(9)所示表示。
[0095][0096]
对于本领域的技术人员将显而易见的是,这得到关系式(1)。对于本领域的技术人员来说,这仅仅是一个示例也是显而易见的。gb专利号2583154中描述了用于生成纹理空间中的椭圆形覆盖区的参数的另一种示例方法,该专利据此全文以引用方式并入本文。
[0097]
一旦识别了定义纹理空间中的椭圆形覆盖区的参数,方法400就前进到框404。
[0098]
在框404处,识别沿长轴的至少一组等间距采样点(其也可以称为样本点)(例如,可以识别图5的长轴504上的采样点506)。每组等间距采样点对应于、关联于或涉及纹理空间中的待采样椭圆。待采样椭圆基于和/或涉及框402中所识别的椭圆形覆盖区。在一些情况下,待采样椭圆是框402中所识别的椭圆形覆盖区。然而,在下文描述的其他情况下,待采样椭圆可以小于、大于、偏心率大于或偏心率小于框402中所识别的椭圆形覆盖区。识别沿长轴的一组等间距采样点可以包括:(i)识别该组中的采样点数目;(ii)识别该组中的采样点间距;和/或(iii)识别该组中的至少一个采样点的位置(从该位置可以识别其他采样点)。
[0099]
可以基于待采样的相关椭圆的长半径(ρ
+
)与短半径(ρ-)的比率(即各向异性比率η)来选择该组中的采样点数目n。在一些情况下,如下文更详细地描述的,n可以与各向异性比率η、采样率β和标准偏差(其优选地为2个标准偏差的倍数,即2α)中的高斯核的宽度成比例。一般来讲,采样率β控制样本沿长轴核(即高斯核)的间隔紧密程度。β越高,样本沿长轴的间隔就越紧密。如果β为2,则每隔短轴的一个标准偏差采样,替代当β为1时每隔短轴的两个标准偏差采样。在一些情况下,n可以等于参数α和β可以被明确地提供(例如,基于采样预算),或者可以基于所提供的信息被动态地选择。例如,在一些情况下,所提供的信息可以简单地指示质量级别(例如高质量或低质量),并且可以相应地选择α和β。
[0100]
优选地,每个组中的采样点之间的距离σ通过比例因子k与个单位成比例。如下文更详细地描述的,已经确定,当采样点之间的距离或间距σ与个单位成比例时,与各向异性过滤结果相关联的误差的上界不取决于各向异性比率,从而确保指定的性能预算具有平衡的近似质量。
[0101]
在一些情况下,比例因子k可以等于如下文更详细地描述的,当比例因子等于时,在框408中应用于框406中所执行的各向同性过滤的结果的高斯权重可以仅针对整数各向异性比率生成。这可以减少实现该方法的成本(例如权重列表)。然而,比例因子的这种表达式的缺点在于间距(因此近似质量)是不连续的,具体地讲,当从一个整数各向异性比率跳跃到另一个整数各向异性比率时,可能不连续地跳跃。在重建质量低(例如,如果采样率低,例如β=1/2)的情况下尤其如此,其中重建质量低可能导致过滤后的图像中的不连续跳跃(这些不连续跳跃可能是突出的)。
[0102]
在其他情况下,比例因子k可以等于如下文更详细地描述的,当比例因子等于时,应用于各向同性过滤的结果的高斯权重不限于整数各向异性比率,这使得权重的计算和存储更加复杂,但是对于各种比率,间距是连续的,并且当样本数目趋于无穷大时,间距在极限内给出均匀的误差。
[0103]
在一些情况下,组中的第一样本可以从长轴的中间点、中点或中心点偏移间距的分数ψ(分数ψ也可以称为偏移量)。在这些情况下,每个样本点n的位置可以用表示,其中n是半开区间中的任意整数,并且ρ
+
是长轴半径向量。在某些情况下,如果采样点的数目n是偶数,则偏移量ψ可以被设置为1/2,
使得采样点关于长轴的中间点对称地定位。例如,如果n=2,则然而,偏移量1/2也可以用于奇数个样本。例如,如果n=3,则n=3,则
[0104]
对于本领域的技术人员将显而易见的是,这仅仅是示例,并且偏移量ψ可以被设置为其他合适的值。特别地,如果采样点的数目n是奇数,则当ψ被设置为0时,可以获得关于长轴的中间点或中点对称的点分布。例如,如果ψ=0、n=3,则然而,偏移量0也可以用于偶数个样本。例如,如果ψ=0、n=4,则
[0105]
在还有其他示例中,分布图案可以分别针对奇数个样本和偶数个样本在偏移量0与1/2之间交替。然而,为了连续性(当各向异性比率增大时),可能优选的是使用一致的偏移量,其倾向于支持偶数个样本,因为当各向异性比率小时可能需要较少的样本(例如,当该比率接近1时,可能仅需要两个样本,而不是三个样本)。
[0106]
在一些情况下,识别沿长轴的单组等间距采样点,并且待采样椭圆是在框402中识别的椭圆形覆盖区。在这些情况下,在每个所识别的采样点执行各向同性过滤(参见框406),并且使用高斯过滤器组合各向同性过滤的结果(参见框408)。在一些情况下,在采样点处执行的各向同性过滤可以结合多级渐远纹理插值技术。在此类情况下,在采样点处执行各向同性过滤可以包括:在采样点处以第一多级渐远纹理级别执行第一各向同性过滤;在采样点处以第二多级渐远纹理级别执行第二各向同性过滤;以及在第一各向同性过滤的结果与第二各向同性过滤的结果之间进行插值,以生成采样点的各向同性过滤的结果。因此,在这些情况下,在组合之前(即在框408之前)执行多级渐远纹理之间的插值。为了实现三线性过滤,第一各向同性过滤和第二各向同性过滤可以是双线性过滤,第一多级渐远纹理级别和第二多级渐远纹理级别可以包括一个较高分辨率的多级渐远纹理级别和一个较低分辨率的多级渐远纹理级别,并且在框408处组合每个采样点处的三线性过滤的结果。
[0107]
例如,令短轴的长度ρ-等于个基础多级渐远纹理级别纹素,并且令长轴的长度ρ
+
等于个基础多级渐远纹理级别纹素。如本领域的技术人员所知,短轴长度和长轴长度在归一化的纹理坐标中具有固定的大小,因此对于较低分辨率的多级渐远纹理级别将具有较小的纹素大小。在该示例中,η=3,并且细节级别较小的纹素大小。在该示例中,η=3,并且细节级别这表明从多个多级渐远纹理中采样可能是有益的。在仅识别沿长轴的一组等间距采样点的情况下,识别了间距为的n个样本(其中n与η=3成比例),这由基础多级渐远纹理级别产生了个纹素的有效间距,并且由第二多级渐远纹理级别产生了个纹素的有效间距。对于本领域的技术人员将显而易见的是,这些位置在(u,v)坐标中对齐。因此,每个多级渐远纹理级别的相关位置可以通过沿长轴的单组点来识别。
[0108]
在其他情况下,在使用多个多级渐远纹理级别的情况下,识别沿长轴的多组等间距采样点,每个多级渐远纹理级别一组。每组等间距采样点涉及或关联于不同的待采样椭
圆,其中每个待采样椭圆基于和/或涉及框402中所识别的椭圆形覆盖区。当识别多组采样点时,每组可以具有相同数目的采样点,或者不同组可以具有不同数目的采样点。
[0109]
在识别多组采样点的情况下,可以在每组的每个所识别的点处执行各向同性过滤(参见框406),可以单独地组合每组的各向同性过滤的结果(参见框408),然后可以对这两个组合结果执行插值(例如,使用分数细节级别(lod)多级渐远纹理插值权重)。对于每个多级渐远纹理级别,步长以纹素为单位。在参考图6描述的一些示例中,长轴可以被重新缩放为2η个纹素以保持椭圆的偏心率,使得目标椭圆602(即,在框402中识别的椭圆形覆盖区)是小于目标椭圆602的椭圆604(来自较高分辨率的多级渐远纹理606)和大于目标椭圆602的椭圆608(来自较低分辨率的多级渐远纹理610)的线性插值,前述椭圆中的每一者相对于目标椭圆602是同心的。因此,两个待采样椭圆是较小的椭圆604和较大的椭圆608。这在本文中可以称为对称各向异性过滤。由于两个待采样椭圆604、608的各向异性比率相同,因此每组采样点中的样本数目相同。
[0110]
例如,令短轴的长度ρ-等于个基础多级渐远纹理级别纹素,并且令长轴的长度ρ
+
等于个基础多级渐远纹理级别纹素。在该示例中,对于每个多级渐远纹理级别,使用个纹素的间距。由于来自第二多级渐远纹理级别的纹素的宽度是来自第一(基础)多级渐远纹理级别的两倍,所以第二多级渐远纹理级别的核宽度是第一多级渐远纹理级别的核宽度的两倍。由于样本位置没有对齐,所以为每个多级渐远纹理级别识别单独的一组样本点。
[0111]
在参考图7描述的其他示例中,长轴未被重新缩放(即,保持未改变),使得目标椭圆702通过较高偏心率的椭圆704相对于目标椭圆702的线性插值(来自较高分辨率的多级渐远纹理706)和较低偏心率的椭圆708相对于目标椭圆702的线性插值(来自较低分辨率的多级渐远纹理710)来近似。因此,两个待采样椭圆是较高偏心率的椭圆704和较低偏心率的椭圆708。这在本文中可以称为非对称各向异性过滤。由于两个待采样椭圆704、708的各向异性比率不同,因此每组采样点中的样本数目可能不同。一般来讲,用于较高分辨率的多级渐远纹理706的采样点组具有的采样点将是用于较低分辨率的多级渐远纹理719的采样点组的两倍。在这些情况下,如果在较高分辨率的多级渐远纹理上存在小于2的比率,则该比率可以被强行压制到较低分辨率的多级渐远纹理级别上的最小比率1(因此其在比率下限中仍然过度模糊)。
[0112]
例如,令短轴的长度ρ-等于个基础多级渐远纹理级别纹素,并且令长轴的长度ρ
+
等于个基础多级渐远纹理级别纹素。在该示例中,并且较高分辨率的多级渐远纹理级别的间距为个纹素,而较低分辨率的多级渐远纹理级别的间距为个纹素。由于样本位置没有对齐,所以为每个多级渐远纹理级别识别单独的一组样本点。
[0113]
一旦识别了采样点组,方法400就前进到框406。
[0114]
在框406处,在框404中识别的每个采样点处执行各向同性过滤(例如,可以在图5
中的每个采样点506处执行各向同性过滤508)。在采样点处执行的各向同性过滤可以是任何类型的各向同性过滤,诸如但不限于点过滤、双线性过滤(采用或不采用多级渐远纹理技术)和三线性过滤。一般来讲,各向同性过滤器越接近或越类似高斯过滤器,图4的方法400的结果就越好。例如,帐篷式过滤器比箱式过滤器更类似于高斯过滤器,因此使用帐篷式过滤器执行各向同性过滤可以改进各向异性过滤的结果。具体地讲,箱式过滤器是一阶基数b样条,而帐篷式过滤器是二阶基数b样条,后者是通过将箱式过滤器自身卷积而形成的。中心极限定理指出,如果应用这些过滤器的重复卷积(即分布),则它们趋向于正态分布,因此基数b样条可以被看作一系列高斯型的递增阶近似。一般来讲,较高阶的b样条具有更好的抗混叠特性,因此可以产生更好的结果。一旦在每个采样点处执行了各向同性过滤,方法400就前进到框408。
[0115]
在框408处,使用高斯核来组合每组采样点的各向同性过滤结果。例如,在存在单组采样点的情况下,使用高斯核来组合这些采样点的各向同性过滤结果。然而,在存在多组采样点的情况下(一个组对应于每个多级渐远纹理级别),对应于每个多级渐远纹理级别的各向同性过滤结果可以使用高斯核来单独组合。具体地讲,可以使用高斯核来组合对应于较低分辨率的多级渐远纹理级别的各向同性过滤结果,并且可以使用高斯核来组合对应于较高分辨率的多级渐远纹理级别的各向同性过滤结果。
[0116]
在一些情况下,可以通过以下方式来组合一组采样点的各向同性过滤的结果:基于相关采样点的位置识别用于每个各向同性过滤结果的适当高斯权重、计算每个过滤结果与对应权重的乘积,然后计算乘积之和。然而,如下文关于图8更详细地描述的,在其他情况下,可以经由递归线性插值来组合一组采样点的各向同性过滤的结果。
[0117]
在仅识别一组采样点的情况下,方法400可以结束。然而,在识别多组采样点的情况下,方法400可以前进到框410。
[0118]
在框410处,对于不同的采样点组,在框408中生成的组合结果之间进行插值。例如,框410可以包括对于较高分辨率的多级渐远纹理的采样点组,在框408中生成的高斯组合结果之间进行插值,并且对于较低分辨率的多级渐远纹理的采样点组,在框408中生成的高斯组合结果之间进行插值。在一些情况下,可以使用分数细节级别(lod)多级渐远纹理插值权重来执行插值。不过,对本领域的技术人员将显而易见的是,这仅是示例。一旦已执行插值,方法400就可以结束。该方法的结果(框408或框410)可以被称为过滤器结果,其可以被输出以供进一步处理。例如,该方法的输出(框408或框410)可以被输出到着色器(或者图形处理单元或图形处理系统的另一个部件),以用于生成渲染输出(例如,图像)。
[0119]
上文描述的使用多个多级渐远纹理级别的不同方法具有不同的优点和缺点。如果在组合过滤结果之前在不同多级渐远纹理级别的各向同性过滤结果之间执行插值(例如,在识别单组采样点的情况下),沿长轴的采样点可能在高分辨率的多级渐远纹理上间隔过于稀疏,而在低分辨率的多级渐远纹理上间隔过于密集,这可能分别导致就短轴尺度而言质量相对较差和相对较高的近似。相比之下,如果在过滤结果的高斯组合之后在不同多级渐远纹理级别的各向同性过滤结果之间执行插值(例如,在为每个多级渐远纹理级别识别一组采样点的情况下),则在每个多级渐远纹理上将存在一致的间距,因此在核样本密度(即短轴间距)方面的质量将是一致的。然而,如果使用对称各向异性过滤方法,其中使用一对同心椭圆来近似期望的椭圆(一个椭圆小于期望的椭圆,另一个椭圆大于期望的椭圆),
则核长轴长度可能在高分辨率的多级渐远纹理级别上间隔过于密集(在gram缓冲器中的相邻片段之间),而在较低分辨率的级别上间隔过于密集。这是因为使用一对不同尺寸的椭圆会影响与相邻片段的重叠程度。相比之下,如果使用非对称各向异性过滤,其中使用具有不同偏心率水平的一对椭圆来近似期望的椭圆,则对于长轴,为每个多级渐远纹理级别选择期望的过滤器宽度,因此避免了与对两个不同尺寸的核进行线性插值相关联的抗锯齿问题。
[0120]
采样点沿长轴的间距
[0121]
在高斯ewa中,屏幕空间中的圆形高斯过滤器被映射到纹理空间中的椭圆形过滤器。在本文所述的方法中,高斯ewa的连续高斯过滤器被近似为较小过滤器(即,优选地为高斯过滤器的各向同性过滤器)的离散高斯加权和,其可以表示为高斯过滤器与各向同性过滤器之间的卷积。
[0122]
在确定采样点的优选间距时,必须首先识别卷积和构成卷积的过滤器的优选协方差。如下文将更详细地描述的,发明人已经识别出卷积的优选方差为并且各向同性过滤器的优选方差为并且由于函数的方差在卷积下具有加和性质,因此高斯过滤器的优选方差为申请人已知的用于估计ewa的形式(例如,高斯ewa)的方法(并非承认它们是众所周知的方法)通常不考虑各向同性过滤器对目标方差的贡献,从而导致所得的核分布不准确。
[0123]
具体地讲,在各向异性过滤中,优选地在屏幕空间中存在对称协方差矩阵,其映射到纹理空间中的各向异性协方差矩阵。在一些示例中,可以定义空间中的非对称协方差矩阵,但是这在纹理空间中确定椭圆形覆盖区时产生了额外的复杂性。关系式(10)示出了使用全导数或雅可比矩阵(j)(通常由屏幕空间坐标导数形成,如上所述)作为仿射映射近似,将屏幕空间中的协方差矩阵映射到各向异性协方差矩阵特别地,如果该协方差矩阵是对称的(例如,),则对映射的确定简化为之前的关系式(例如,)。可以看出,这描述了具有长轴和短轴的椭圆,其中对于纹理空间坐标φ描述了纹理空间中长轴相对于u轴的角位移。
[0124][0125]
这可以被分为各向同性部分和各向异性部分。具体地讲,令各向异性过滤器由a表示,并且各向同性过滤器由t表示,然后,使用协方差的加和性质(其中过滤器f的协方差被写为可以将关系式(10)重写为关系式(11),关系式(11)又可以被重写为关系式(12),其中与各向异性过滤器a沿轴的方差成比例,并且与各向同性过滤器t的协方差(沿长轴和短轴)成比例。从关系式(12)可以看出,沿长轴的协方差具有加和性质,从而得到卷积的最终方差
[0126][0127]
优选地,关系式(12)等于关系式(10)。换句话讲,优选地,卷积的协方差等于以关系式(10)表示的优选协方差。要使关系式(10)和关系式(12)相等,则φ=θ、并且因此,各向异性过滤器的优选协方差为所以,在确定各向异性过滤器的协方差时,要考虑各向同性过滤器的协方差。
[0128]
既然高斯过滤器(即,各向异性过滤器)的优选协方差已经被确定为那么将对误差的分析用来识别样本点沿长轴的优选间距。具体地讲,由于离散加权和仅仅是连续高斯分布的近似,所以在连续高斯分布与其离散近似之间将存在误差。发明人已经确认,如果样本之间的间距与个单位成比例,则该误差的上界不取决于各向异性比率。这是有利的,因为当误差不取决于各向异性比率时,对于给定的(核)采样率预算可以实现一致的质量。具体地讲,当误差不取决于各向异性比率时,可以看出,如果对于较低的比率减少样本的数目,这将导致较大的误差。换句话讲,对于较低的各向异性比率,不能切割拐角。
[0129]
具体地讲,令具有优选协方差的离散高斯加权和如关系式(13)所示以1维表示,其中ψ是从第一样本所在的椭圆的长轴中心的偏移量,σ是样本之间沿长轴的距离,并且δ是用于将积分内定义的卷积减小到离散和的狄拉克δ函数。如上所述,在一些情况下,偏移量ψ等于1/2,使得当存在偶数个样本时,这些样本均匀地分布在长轴的中间点或中心点的任一侧(即,这些样本关于长轴的中点或中心对称)。然而,在其他情况下,偏移量ψ可以是其他值,诸如但不限于零。
[0130][0131]
将高斯加权和用各向同性过滤器卷积。令各向同性过滤器为如关系式(14)所示的具有协方差的高斯过滤器,该协方差是各向同性过滤器的优选协方差。
[0132][0133]
然后,该卷积的一般形式可以由关系式(15)表示,其可以通过使用狄拉克δ函数δ消除积分而被重写为关系式(16),使得该卷积可以被写为由离散高斯过滤器加权的每个样本位置处的较小高斯的和。具体地讲,在积分中应用狄拉克δ函数δ的结果当x
′
=x-(n+ψ)σ时仅为非零值,因此x
′
被替换为x-(n+ψ)σ,并且去除了积分。
[0134][0135]
然后,可以如下所示地排列关系式(16)中的指数,以得到关系式(17)中所示的指数的表示,其中指数被表示为两个项(即取决于n的第一项和不取决于n的第二项)的组合。可以看出,这种重新排列已通过完成平方来实现。
[0136][0137]
关系式(16)中的指数然后可以用其在关系式(17)中的表达式来代替,于是得到关系式(18)。由于关系式(17)的第二项不取决于n,因此其可以从求和中去除,于是得到关系式(19)。可以看出,求和之外的项表示具有方差的高斯过滤器。因此,关系式(19)可以被重写为具有方差(即)的高斯过滤器的函数,如关系式(20)所示
[0138][0139]
具有方差(即)的高斯过滤器是卷积的期望结果,因此期望关系式(20)的括号内的项尽可能接近于1。关系式(20)可以通过使用如关系式(21)中所表达的高斯到自身的傅里叶变换来进一步简化。从关系式(21)可以看出,高斯函数的傅立叶变换仍然是高斯函数。可以看出,关系式(21)是通过完成该平方以及的事实而生成的。
[0140][0141]
如果则关系式(21)可以被重写为关系式(22)。
[0142][0143]
然后,可以使用关系式(22)将关系式(20)重写为关系式(23)。
[0144][0145]
使用恒关系式其规定整数频率正弦函数的离散序列等效于具有整数间距的狄拉克δ函数的序列,关系式(23)可以被重写为关系式(24),后者又可以被简化为关系式(25),因为相对于狄拉克δ函数δ的积分选择整数位置处的被积函数。
[0146][0147]
确定像核那样的算子上的最坏情况误差的一种方式是当核k作用于某函数f(在各向异性过滤情况下是纹理)时使用上确界范数。上确界范数可以由关系式(26)表示,因此l1范数可以由关系式(27)表示。
[0148][0149][0150]
因此,期望的连续高斯与卷积之间的误差可以被表示为l1范数,如关系式(28)所示。可以使用关系式(25)将关系式(28)重写为关系式(29)。可以看出,总和已经被减少到仅为正整数n。因此,该误差的上界可以由关系式(30)表示,因为高斯积分为1,并且余弦的上界也为1。
[0151][0152]
从关系式(30)可以看出,如果样本沿长轴的间距σ与个单位(即本示例中的ρ-)成比例,如关系式(31)所示,其中κ是某个常数,则关系式(30)中所示的误差的上界可以如关系式(32)所示表示。
[0153][0154][0155]
因此,从关系式(32)可以看出,当样本沿长轴的间距σ与个单位成比例时,误差的上界不取决于比率η或单位(例如,在该示例中为ρ-),这是有益的。具体地讲,它允许存在用于一组参数的统一界限。
[0156]
在上述分析中,假设在离散卷积中应用了无穷级数权重,这显然是不可行的。本文将该误差作为独立参数来处理,如下文更详细地描述的,该独立参数可以由核支持的程度来控制。
[0157]
现在将描述两种不同的示例实现方式,其中样本沿长轴的间距σ与个单位成比例。如本领域的技术人员所知,对于诸如高斯函数的非负函数,方差(更确切地说,标准偏差,即方差的平方根)给出了核的标度和过滤程度的指示。因此,如果各向异性过滤器具有优选的方差则该过滤器的标准偏差为由于高斯分布(离散型或连续型)具有无限的支持,所以该级数被截断以生成过滤操作的有限序列。虽然可以选择更高质量的窗口函数,但是这里的示例假设在有限数目的项之后简单地终止该级数。
[0158]
期望高斯核沿长轴(即样本点在其上延伸的长轴的长度)的支持与两个标准偏差(即)以比例因子α成比例。如果沿长轴存在n个均匀间隔的样本,则主要通路上的样本之间的间距或距离σ可以如关系式(33)所示表示,其中ρ-为短半径向量,而ρ
+
为长半径向量。因此,2α表示被样本覆盖的长轴的标准偏差的数目。关系式(33)然后可以用项来表示,如关系式(34)和关系式(35)中所示。
[0159][0160][0161][0162]
在第一种示例实现方式中,n(其必须是整数)与各向异性比率η、采样率β与核以标准偏差计的宽度(即2α)成比例,如关系式(36)所示。一般来讲,采样率β控制样本沿长轴核的间隔紧密程度。β越高,样本沿长轴的间隔就越紧密。如果β为2,则每隔短轴的一个标准偏差采样,替代当β为1时每隔短轴的两个标准偏差采样。在该示例中,通过用关系式(36)的右侧替换关系式(34)中的n,可以由关系式(37)表示样本点之间的间距σ。
[0163][0164][0165]
因此,对于该第一种示例实现方式,比例因子κ等于从关系式(32)中的不关系式可以看出,近似中的误差的上限随着β增大而减小。这表明,在α趋向无穷大的极限中,当η刚好大于整数时,近似质量最高。具体地讲,从关系式(37)可以看出,当各向异性比率η为整数(即)时,样本沿长轴的间距σ(以ρ-为单位)与以恒定或固定的比例因子成比例。当各向异性比率η不是整数(即,)时,样本沿长轴的间距σ(以ρ-为单位)与以可变因子成比例。这意味着非整数各向异性比率的样本间距至少与相应的整数各向异性比率一样密集。
[0166]
如上所述,在本文所述的方法中,在沿长轴的采样点处执行各向同性过滤,并且经由加权和来组合各向同性过滤的结果,其中权重根据高斯核来确定。这可以表示为各向异性过滤器(离散高斯加权和)和各向同性过滤器的卷积。各向异性过滤器可以由上文所示的关系式(13)来表示。从关系式(13)可以确定,对第n个样本点执行的各向同性过滤的结果的权重可以根据关系式(38)来确定,其中ψ是从第一样本所在的长轴的中点的偏移量,并且σ是样本之间的间距。在一些情况下,可以将偏移量设置为1/2。然而,在其他情况下,可以将偏移量设置为其他值,诸如但不限于零。(n+ψ)σ可以如关系式(39)所示表示。如果用关系式(39)的右侧替换关系式(38)中的(n+ψ)σ,则关系式(38)可以被写为关系式(40)。可以重新排列关系式(40),从而得到关系式(41)。
[0167][0168][0169][0170][0171]
在该第一示例中,n如关系式(36)中所阐述,这意味着关系式(41)可以被重写为权重关系式(42)。
[0172][0173]
从关系式(42)可以看出,在该第一示例中,只需要计算各向异性比率的整数值的权重。这可以减少实现该第一示例的成本(例如权重列表)。然而,该第一示例的缺点在于间距是不连续的,具体地讲,当从一个整数各向异性比率跳跃到另一个整数各向异性比率时,
可能不连续地跳跃。在重建质量低(例如,如果采样率低,例如)的情况下尤其如此,其中重建质量低可能导致过滤后的图像中的不连续跳跃(这些不连续跳跃可能是突出的)。
[0174]
因此,在第二种示例实现方式中,为了避免不连续的间距,可以针对非整数比率加宽各向异性过滤器支持(如α所指示)。具体地讲,在该第二示例中,α被表示为各向异性比率η的函数,如关系式(43)所示,其中α0是整数,表示核支持的基础比例因子(即,两个标准偏差的倍数)。然后,n可以如关系式(44)所示写出,并且通过用关系式(43)的右侧替换关系式(34)中的α以及用关系式(44)的右侧替换关系式(34)中的n,可以由关系式(45)来表示样本点之间的间距σ。
[0175][0176][0177][0178]
在该第二示例中,样本的间距(以ρ-为单位)总是与以固定或恒定的比例常数成比例,而不管各向异性比率是否为整数。
[0179]
在该第二示例中,n如关系式(44)中所阐述,这意味着关系式(41)可以被重写为关系式(46)。
[0180][0181]
从关系式(46)可以看出,在该第二示例中,权重不限于整数各向异性比率,这使得权重的计算和存储更加复杂,但是该第二示例具有如下优点:对于各种比率,间距是连续的,并且当样本的数目趋于无穷大时,在极限内给出均匀误差。
[0182]
应注意,对于整数各向异性比率,样本点的间距和相应权重的第一示例公式和第二示例公式最终是相同的。此外,如果第一示例中的α等于第二示例中的α0,则在每个示例中使用相同的样本数目,而不考虑各向异性比率。在前一种情况下,样本密度增加,而核支持(以标准偏差表示)保持恒定,从而产生提高的样本密度近似质量,但具有与级数截断相关联的大致恒定的误差。在后一种情况下,样本密度保持恒定,但核支持增加,从而减少了与级数截断相关联的误差,但是如上文所指出的,这种效果随着基础核支持增加而减小,并且在极限内消失。
[0183]
递归线性插值
[0184]
执行上述各向异性过滤的方法包括在纹理空间中沿椭圆长轴的多个采样点处执行各向同性过滤(例如双线性过滤或三线性过滤),以及使用高斯核来组合这些各向同性过滤的结果。换句话讲,生成各向同性过滤结果的高斯加权和。如上所述,使用高斯核来组合各向同性过滤的结果的一种方式是基于采样点的位置来识别每个各向同性过滤结果的高斯权重、计算每个权重与对应的各向同性过滤结果的乘积,以及计算这些乘积之和。然而,以这种方式计算高斯加权和有许多缺点。首先,因为一些权重以及因此相关的乘积可能变得相当小,所以该方法包括对可能导致大的累积误差的多个小值求和。其次,这种计算高斯
加权和的方法包括以高精度水平计算和存储复杂的高斯权重。
[0185]
因此,本文描述了一种计算各向同性过滤结果的高斯加权和的改进方法,该方法可以减少来自小权重的累积误差,并且还可以节省时间和资源。更具体地讲,在本文描述的方法中,高斯加权和是在从各向同性过滤结果开始的线性插值序列上计算的,这些各向同性过滤结果对应于离长轴中心最远并且朝长轴中心移动的采样点。
[0186]
例如,高斯加权和可以表示为如关系式(47)所示的线性插值序列,其中fk是第k次迭代后的结果,γk是第k次迭代的线性插值因子,并且其中n是沿长轴的采样点的偶数数目。
[0187][0188]
每次迭代,使用线性插值因子γk将当前总数(f
k-1
)与对应于长轴中间点左侧第(k-(k-1))个采样点的各向同性过滤结果l
k-(k-1)
和对应于长轴中间点右侧的第(k-(k-1))个样本点的各向同性过滤结果r
k-k
相混合。因此,l用于代表对应于长轴中间点左侧的采样点的各向同性过滤结果,而r用于代表对应于长轴中间点右侧的采样点的各向同性过滤结果。在k次迭代之后获得最终结果fk。
[0189]
在另一个示例中,代替组合同一次迭代中的相应的l各向同性过滤结果和r各向同性过滤结果,可以单独地对l各向同性过滤结果和r各向同性过滤结果进行插值,并且可以将l各向同性过滤结果的插值与r各向同性过滤结果的插值进行平均。具体地讲,在该示例中,每次迭代,使用线性插值因子γk将l各向同性过滤结果的当前总数与各向同性过滤结果l
k-(k-1)
相混合,如关系式(48)所示;并且使用线性插值因子γk将r各向同性过滤结果的当前总数与各向同性过滤结果r
k-(k-1)
相混合,如关系式(49)所示。在k次迭代之后,最终结果fk被计算为l各向同性过滤结果的最终总数与r各向同性过滤结果的最终总数的平均值,如关系式(50)所示。
[0190][0191][0192][0193]
尽管在第二示例中生成并存储了两个单独的部分结果,但是该方法可以具有增加高速缓存一致性的优点,因为在相邻样本上执行内部循环(与核的相对两端相对),并且外部循环可以潜在地交错,或以其他方式考虑邻近片段的过滤操作。例如,与水平屏幕空间轴对准的各向异性过滤器可以选择平行地处理一对竖直对准的片段,首先对左边的点(由于各向异性的水平方向,这些点应当是空间相干的)进行递归插值,然后对右边的点进行递归插值,之后继续移动到右侧的下一个竖直片段对。由于片段对左侧的右边的点将从右向左移动,而该片段对右侧的左边的点将从左向右移动,这可能意味着来自左侧竖直片段对的最终样本靠近来自右侧竖直片段对的第一样本。
[0194]
现在参考图8,其展示了使用高斯过滤器经由递归线性插值来组合在多个采样点处执行的各向同性过滤的结果的方法800。换句话讲,方法800是图4的方法400的框408的示例实现方式。方法800可以由图形处理系统的纹理过滤单元(诸如图15的纹理过滤单元
1506)执行。
[0195]
方法800在框802处开始,其中迭代计数器k被初始化(例如,初始化为1)并且当前总数(即f0)被初始化为起始值。如果初始插值因子γ1为1,则f0对最终结果没有贡献,并且当前总数可以被初始化为任何值。这将仅仅根据一组递归权重来定义归一化加权和。然而,如下所述,当直接根据无穷级数写入时,可以简化高斯和的权重。
[0196]
由于该级数被截断以获得可实现的过滤器,所以起始值f0可以表示所有截断项的部分结果。将起始值初始化为所有截断项的部分结果的优点在于,可以定义单组权重γ(从内向外加工),而不考虑截断度。在一些示例中,起始值f0可以是以纹理样本(例如中心值)或已知平均值形式的截断项的总和的估计值。
[0197]
在其他情况下,可以将当前总数(即f0)初始化为零。在此类情况下,最终结果可以被归一化(例如,通过对特定比率的截断度的丢失权重制表)。因此,在当前总数被初始化为零的情况下,在框810之前,方法800还可以包括将结果按重新缩放的最终归一化步骤。一旦迭代计数器k和当前总数已经被初始化,方法800就前进到框804。
[0198]
在框804处,使用线性插值因子γk将当前总数与对应于椭圆长轴中间点左侧第(k-(k-1))个样本点的各向同性过滤结果(即l
k-(k-1)
)和/或对应于椭圆长轴中间点右侧第(k-(k-1))个样本点的各向同性过滤结果(即r
k-(k-1)
)相混合,以生成新的当前总数。在一些情况下,方法800可以用于仅在l各向同性过滤结果之间、仅在r各向同性过滤结果之间,或者在l和r这两种各向同性过滤结果之间进行线性插值。
[0199]
在方法800用于仅在l个各向同性过滤结果之间进行线性插值的情况下,则在框804处,可以计算(1-γk)f
k-1
+γk(l
k-(k-1)
),其中f
k-1
是当前总数。在这些情况下,该方法还可以包括针对r各向同性过滤结果重复框802至810,然后确定l各向同性过滤结果的插值和r各向同性过滤结果的插值的平均值。类似地,在方法800用于仅在r个各向同性过滤结果之间进行线性插值的情况下,则在框804处,可以计算(1-γk)f
k-1
+γk(r
k-(k-1)
)。在这些情况下,该方法还可以包括针对l各向同性过滤结果重复框802至810,然后确定r各向同性过滤结果的插值和l各向同性过滤结果的插值的平均值,该平均值可以被计算用于生成最终结果。在方法800用于在l个各向同性过滤结果与r个各向同性过滤结果之间进行线性插值的情况下,然后在框804处,可以计算
[0200]
例如,在方法800用于在与沿图9所示的线的一组均匀间隔的样本点相对应的l各向同性过滤结果和r各向同性过滤结果之间进行插值的情况下,在第一次迭代(即迭代1,k=1)中,使用线性插值因子γ1将lk和rk的平均值与f0相混合,以生成f1。在第二次迭代(即迭代2,k=2)中,使用线性插值因子γ2将l
k-1
和r
k-1
的平均值与f相混合,以生成f2。然后,在第三次迭代(即迭代3,k=3)中,使用线性插值因子γ将l
k-2
和r
k-2
的平均值与f2相混合,以生成f3。
[0201]
在一些情况下,线性插值因子γk可以用线性函数k来近似。用于计算线性插值因子γk的一个示例线性函数在关系式(51)中示出,其中c和m可以分别根据关系式(52)和(53)来计算。
[0202]
γk=m(k-k)+c
ꢀꢀꢀ
(51)
[0203][0204][0205]
在另一个示例中,线性插值因子γk可以根据关系式(54)来计算。在这种情况下,可以直接针对m的各向异性比率的有限(例如定点)组将结果制表(例如制成硬件查找表),然后应用查找表优化技术。
[0206][0207]
因子γk接近线性的事实意味着其可能适于查找表优化。例如,图10示出了关系式(54)的因子γk分别针对各向异性比率2、3、4、6和8的曲线图1002、1004、1006、1008、1010。可以看出,它们通常是线性的。图11示出当样本数目覆盖两个标准偏差时,关系式(54)的因子γk分别针对各向异性比率2、3、4、6和8的曲线图1102、1104、1106、1108和1110。可以看出,在这些情况下,这些因子几乎完全是线性的。
[0208]
对于本领域的技术人员将显而易见的是,这些仅仅是示例,并且可以使用k的其他函数来生成线性插值因子。例如,在上述任一示例中,η可以用βη或来替换。
[0209]
一旦混合完成,方法800就前进到框806。
[0210]
在框806处,确定这是否为最后一次迭代。如果迭代计数器被初始化为1,则如果迭代计数器k等于k,则可以确定这是最后一次迭代。如上所述,k等于其中n是沿椭圆长轴的样本点的偶数数目。如果确定这不是最后一次迭代,则方法800前进到框808。然而,如果确定这是最后一次迭代,则方法800在框810处结束。
[0211]
在框808处,迭代计数器k递增(即k=k+1)。一旦迭代计数器已递增,方法800就返回至框804。
[0212]
根据图8的方法800计算高斯加权和可以减少来自小权重的累积误差,因为图8的方法800组合了用于紧靠在一起并且因此将具有类似权重的样本的各向同性过滤结果。根据图8的方法800计算各向同性过滤结果的高斯加权和还可以节省时间和资源,因为如上所述,线性插值因子γk可以用k的线性函数来近似,该线性函数可以使用相对少的精度位数(例如8位)和/或其中存储函数参数的查找表。
[0213]
尽管图8的方法800被描述为与图4的方法400(其中样本点沿长轴的间距与成比例)结合使用,但是图8的方法800可以独立于样本点沿长轴的间距是否与成比例来使用。
[0214]
尽管图8的方法800已被描述为用于组合使用高斯过滤器的各向同性过滤的结果,但是方法800也可以用于组合使用非高斯过滤器或严格来说不是高斯过滤器的过滤器的各向同性过滤的结果。例如,如下文更详细地描述的,在一些情况下,使用严格来说不是高斯型的权重来组合各向同性过滤的结果可能是有利的。
[0215]
选择各向异性过滤器权重
[0216]
在上述示例中,用于组合各向同性过滤的结果的权重(即,各向异性过滤器权重)是高斯型的。换句话讲,各向异性过滤器是高斯型的。已经证明使用高斯各向异性过滤器在
许多情况下提供良好的结果,这部分地由于高斯过滤器的频率响应。具体地讲,在频域或谱域中具有高斯响应的高斯过滤器充当低通频率过滤器,其对于给定的空间宽度或方差具有最小的光谱宽度或方差(在如下所述的模数平方意义上)。
[0217]
这可以用数学方法来说明。具体地讲,令f:是由关系式(55)定义的连续过滤器,其中φ:是实函数(其可以被称为第一函数),其被定义为使得该过滤器的权重是非负的。过滤器f识别或指定与沿x轴的不同位置(即,对于不同的x值)相关联的权重。在各向异性纹理过滤的语境中,x表示采样点相对于长轴中点的位置。该过滤器从负无穷到正无穷的积分(表示为|f|)可以由关系式(56)表示;该过滤器的均值(表示为)可以由关系式(57)表示;而该过滤器的方差(表示为)可以由关系式(58)表示。
[0218]
f(x)=|φ(x)|2ꢀꢀꢀ
(55)
[0219][0220][0221][0222]
φ的频率响应被表示为其中其中φ与其频率响应之间的关系由关系式(59)和关系式(60)来描述。
[0223][0224][0225]
然后,可以将模平方光谱方差φ如关系式(61)所示写出,其中并且φ
′
(x)是φ相对于x的一阶导数(即)。
[0226][0227]
以关系式(61)示出的模平方光谱方差φ的表达式可以用于将模平方空间方差和光谱方差的乘积纯粹地表示为包括φ(x)及其导数的积分表达式,如关系式(62)所示。
[0228][0229]
然后,该乘积的导数(关系式(62))可以由关系式(63)表示,其中φ
″
(x)是φ相对于x的二阶导数(即)。
[0230][0231]
可以验证,当过滤器f是如关系式(64)所示的高斯过滤器时,关系式(62)的乘积被
最小化(即关系式(63)=0)。具体地讲,这可以通过将关系式(64)直接代入关系式(63)中看出,其中对于关系式(64)的高斯过滤器f,并且并且
[0232][0233]
然而,当连续高斯过滤器由截断的高斯过滤器(使得仅表示高斯曲线的一部分)近似时,并且特别地当离散高斯过滤器被截断为有限数目的样本点时,频率响应变得不太理想(即,其看起来不太具有高斯性)。具体地讲,允许更多的不想要的或更高的频率通过(即,它们没有被充分地衰减)。随着样本点减少,该现象变得更加明显。因此,使用具有高斯权重的各向异性过滤器可能无法在所有情况下均提供最好的过滤结果。本发明人已经确认,代替自动使用高斯权重,可以通过选择使代价函数最小化的权重来确定各向异性过滤器的最佳权重,该代价函数在某些约束下对频率响应中的高频率进行罚分。例如,过滤器f的权重可以被选择为使得模平方空间方差和光谱方差φ的乘积(即,关系式(65))最小化,以便对于给定的空间方差实现最类似高斯分布的频率响应,即,具有φ的最小光谱方差的频率响应。应注意,是将模平方空间方差和光谱方差φ的乘积最小化,而不是简单地将光谱方差φ最小化,因为单独将光谱方差最小化将不会提供有意义的结果,原因是其将把权重推至导致无光谱方差的值,即零(非零)频率。
[0234][0235]
现在参考图12,其展示了执行各向异性纹理过滤的示例方法1200,其中选择各向异性过滤器的权重来最小化光谱宽度或其方差。方法1200开始于框1202,其中确定定义纹理空间中的椭圆形覆盖区的参数。框1202通常对应于图4的方法400的框402,因此可以生成的参数和相对于框402描述的生成这些参数的方法同样适用于框1202。一旦确定了定义纹理空间中的椭圆形覆盖区的参数,方法1200就前进到框1204。
[0236]
在框1204处,基于框1202中所定义的椭圆形覆盖区来标识纹理空间中的一组或多组等间距采样点(其也可以称为样本点)。在一些情况下,这些等间距样本点可以沿椭圆的长轴定位。上文所述的用于(i)确定每组的样本点数目、(ii)识别组的数目以及(iii)识别上述样本点的位置和/或间距的所有的方法和技术(例如,关于图4的方法400的框404描述的方法和技术)同样适用于框1204。一旦识别了纹理空间中的一组或多组等间距样本点,方法1200就前进到框1206。
[0237]
在框1206处,在框1204中识别的每个采样点执行各向同性过滤。框1206通常对应于图4的方法400的框406,因此关于框406描述的用于对样本点执行各向同性过滤的任何方法和技术同样适用于框1206。一旦在样本点处执行了各向同性过滤,方法1200就前进到框1208。
[0238]
在框1208处,为在框1204中识别的每组等间距样本点选择各向异性过滤器,该选择以该组样本的一个或多个参数和椭圆形覆盖区的至少一个或多个参数为基础。该组样本的一个或多个参数可以包括该组中的样本数目n、指示该组中的第一样本的位置的偏移ψ,和/或该组中的相邻样本之间的间距σ。椭圆形覆盖区的一个或多个参数可以包括各向异性比率,或者可以由其确定各向异性比率的参数。
[0239]
基于所述参数选择每个各向异性过滤器的权重,作为在一个或多个约束下使得对各向异性过滤器的频率响应中的高频率进行罚分的代价函数最小化的权重,以确保该过滤器满足纹理过滤器的一个或多个特征。
[0240]
例如,在一些情况下,可能希望将纹理过滤器归一化,以去除全局亮度因子(即dc分量)。因此,可以约束各向异性过滤器以使其归一化。这种约束可以被称为归一化约束,并且对于在关系式(55)中定义的示例过滤器f,可以由关系式(66)来表示。
[0241][0242]
在一些情况下,可能希望纹理过滤器的权重以坐标系的原点为中心。因此,各向异性过滤器的均值可以被约束为零。这种约束可以被称为均值约束,并且对于在式(55)中定义的示例过滤器f,可以由式(67)来表示。
[0243][0244]
如上所述,已经确定,期望各向异性过滤器具有方差η2,其中η是以相应各向同性过滤器的标准偏差为单位表示的各向异性比率。因此,该各向异性过滤器可以被约束为具有方差η2。这种约束可以被称为方差约束,并且对于在关系式(55)中定义的示例过滤器f,可以由关系式(68)来表示。
[0245][0246]
被最小化的代价函数可以是对各向异性过滤器的频率响应或光谱响应中的高频率进行罚分的任何代价函数。如上所述,当连续高斯过滤器由截断的高斯过滤器近似时,频率响应偏离理想的连续高斯过滤器频率响应,并且可能允许不想要的频率。因此,通过选择导致期望的频率响应(例如,更类似高斯分布的频率响应)的过滤器权重,可以提高由各向异性过滤器产生的过滤结果的质量。
[0247]
如上所述,通过选择使得模平方空间方差和光谱方差φ的乘积最小化的权重,可以实现更类似高斯分布的频率响应,其中f(x)=|φ(x)|2。因此,如果空间方差φ是固定的或已知的,则最小化关系式(65)使得光谱方差φ最小化。关系式(65)可以被称为高斯代价函数。
[0248]
在其他情况下,代替选择使推动各向异性过滤器以具有尽可能接近高斯频率响应的频率响应的代价函数(例如关系式(65))最小化的权重,可以使用另一种代价函数,其推动各向异性过滤器以具有不是高斯频率响应但与之类似的频率响应。例如,代替选择最小化关系式(65)的权重,可以选择权重以最小化各向异性过滤器f的l2范数。如本领域的技术人员所知,l2范数(也称为欧几里得范数)是向量的长度。对于关系式(55)的各向异性过滤器f,l2范数可以由关系式(69)表示。这可以被称为范数代价函数。
[0249][0250]
然而,关系式(69)本身不能被最小化,因为选择使关系式(69)最小化的权重将选择倾向于不在频域中产生(非零)频率的权重。具体地讲,关系式(69)未示出相比不期望的阻带频率更偏好期望的通带频率。因此,拉格朗日乘子λ和μ可以用于强制执行上述约束。具
体地讲,λ可以用于强制执行方差约束,而μ可以用于强制执行归一化约束。然后可以用所述拉格朗日乘子写出关系式(69),如关系式(70)所示。应注意,发明人已经确定该解将满足均值条件。因此,假设均值条件为真,并且不使用拉格朗日乘子来明确地强制执行。
[0251][0252]
关系式(70)的变分导数以关系式(71)示出(去除了公因数)。因此,最小化关系式(70)的过滤器f可以通过将关系式(71)设置为零来识别。可以看出,当过滤器f如关系式(72)所示时,关系式(71)等于零,因此关系式(70)被最小化。换句话讲,当过滤器f如关系式(72)所示时,关系式(69)在约束下被最小化。
[0253]
φ(x)(2φ2(x)+λx2+μ)
ꢀꢀꢀ
(71)
[0254][0255]
以图13中的1302示出了如关系式(72)所示的过滤器的脉冲响应,与之相比,以1304示出高斯过滤器对于η=2的脉冲响应。可以看出,这种过滤器具有半径为的有限支持(即,宽度)。
[0256]
关系式(72)的过滤器f的频率响应(表示为)可以由关系式(73)表示并且以图14中的1402示出,与之相比,以1404示出高斯过滤器对于η=2的频率响应。可以看出,频率响应与高斯分布相比仅略差,表明这是识别各向异性过滤器的良好权重组的合适方法。
[0257][0258]
因此,在约束下特别是在方差约束下选择使关系式(69)最小化的各向异性过滤器权重将选择具有尽可能接近图13的1302的空间响应和尽可能接近1402的频率响应的权重。
[0259]
在其他情况下,代替选择使关系式(65)或关系式(69)最小化的权重,可以选择如关系式(74)所示的使光谱扩展f2最小化的权重。这可以被称为光谱代价函数。
[0260][0261]
类似于l2范数关系式(即关系式(69)),关系式(74)本身不能被最小化,因为选择使关系式(74)最小化的权重将选择倾向于不在频域中产生(非零)频率的权重。具体地讲,关系式(74)未示出相比不期望的阻带频率更偏好期望的通带频率。因此,拉格朗日乘子λ和μ可以用于强制执行上述约束。具体地讲,λ可以用于强制执行方差约束,而μ可以用于强制执行归一化约束。然后可以用所述拉格朗日乘子写出关系式(74),如关系式(75)所示。
[0262][0263]
关系式(75)的变分导数以关系式(76)示出。因此,最小化关系式(75)的过滤器可以通过将关系式(76)设置为零来识别。
[0264]
φ(x)(-φ
′2(x)-φ
″
(x)φ(x)+λx2+μ)
ꢀꢀꢀ
(76)
[0265]
对于本领域的技术人员将显而易见的是,以关系式(68)示出的过滤器也将把关系式(76)设置为零,因此将使关系式(75)最小化。因此,在约束下使用关系式(69)或(74)选择权重看起来产生类似的结果,也就是说,它们都将选择具有尽可能接近图13的1302的空间响应和尽可能接近图14的1402的频率响应的权重。
[0266]
在一些情况下,可以在约束下动态地确定(即,实时地)使代价函数之一最小化的权重。然而,这可能是相当耗费时间和资源的过程。因此,在其他情况下,在约束下使一个或多个代价函数最小化的权重可以针对参数的预期范围(例如,针对样本点组s(其在上文和下文中描述)、各向异性比率η和样本间距σ的范围)离线确定。在此类情况下,可以将结果存储在通过参数(例如,样本点组s、各向异性比率η和样本间距σ)进行索引的查找表中。
[0267]
一旦已选择了各向异性过滤器用于每组采样点的权重,方法1200就前进到框1210。
[0268]
在框1210处,使用框1208中所识别的相应过滤器权重来组合每组采样点的各向同性过滤器结果。框1210通常对应于图4的方法400的框408,不同的是,不是使用高斯权重来组合各向同性过滤的结果,而是使用框1208中选择的权重来组合这些结果。可以在框1210中使用上述使用各向异性过滤器来组合各向同性过滤器结果的任何方法和技术。例如,可以在框1210中使用关于框408描述的任何方法和技术或者关于图8的方法800描述的用于组合各向同性过滤器结果的任何方法和技术。在仅识别一组采样点的情况下,方法1200可以结束。然而,如果在框1204中识别多于一组采样点,则方法1200可以前进到框1212。
[0269]
在框1212处,对于每组采样点,在框1210中生成的组合结果之间进行插值。框1212通常对应于图4的方法400的框410,因此用于在不同采样点组的组合结果之间进行插值的任何方法和技术同样适用于框1212。一旦已执行插值,方法1200就可以结束。该方法的结果(框1210或框1212)可以被称为过滤器结果或过滤后的纹理值,其可以被输出以供进一步处理。例如,该方法的输出(框1210或框1212)可以被输出到图形处理系统或图形处理单元的着色器(或另一个部件),以用于生成渲染输出(例如,图像)。
[0270]
现在将描述可以如何根据图12的方法1200的框1208为不同数目的样本选择用于一组采样点的离散各向异性过滤器的权重的示例。令具有权重an的离散各向异性过滤器a(x)由关系式(77)定义,其中,如上所述,δ是狄拉克函数,ψ是从组s中的第一样本点所在的长轴的中心的偏移量,并且σ是采样点之间的距离。应注意,与前面的描述相反,a(x)以各向同性过滤器的标准偏差为单位给出,使得例如这些单位中或(当分别应用关系式(45)和(37)时),在比较表达式时应当记住这一点。这组样本点s包括n个采样点,并且可以如关系式(78)所示表示。
[0271][0272][0273]
离散各向异性过滤器的归一化约束、均值约束和方差约束(现在考虑各向同性过滤器的方差,使得使用η
2-1(各向同性过滤器的方差根据单位的定义为1)来代替η2)可以分别由关系式(79)、(80)和(81)表示。
[0274][0275][0276][0277]
如果ψ=0并且n是奇数,或者如果并且n是偶数,则可以通过在n是奇数时设置a-n
=an并且在n是偶数时设置a-n-1
=an来满足均值约束。这还确保了各向异性过滤器的光谱是真实的,因此不必考虑相位的影响。
[0278]
然后可以将均值约束和方差约束分别进一步简化为关系式(82)和(83)。
[0279][0280][0281]
如本领域的技术人员所知,每种约束减小了解的自由度。由于存在三个关系式并且只有一个未知(即,权重a0),所以如果只有一个样本点(即,n=1),除非η2=1,则该问题被过度约束,并且如下文更详细地描述的,权重被完全约束于2、3或4个样本。
[0282]
例如,如果存在两个采样点(即n=2)并且0≤ψ<1,则存在两个权重(a-1
+a0),根据归一化约束可得a-1
+a0=1,并且根据均值约束可得a-1
=ψa0=1-ψ。如果ψ=0,则只有一个非零权重,因此该问题变得被过度约束。即使ψ大于0,则从方差约束可以看出,除非采样点之间的间距如关系式(84)所示,否则该问题仍被过度约束(比未知数更多的关系式)。所以,当仅存在两个采样点时,采样点之间的间距是唯一可以控制以满足约束的参数。因此,以上关于图4描述的理想高斯间距将不在图12的方法1200中用于仅有两个样本的情形。
[0283][0284]
如上所述,过滤器的宽度优选地为两个标准偏差的整数倍。当时,以关系式(80)示出的间距在时可以达到两个标准偏差,因此当各向异性比率小于时,两个样本可能就够了。
[0285]
如果存在三个采样点(即n=3)并且则将存在三个权重a-1
、a0和a1。根据归一化约束可得a-1
+a0+a1=1,并且根据均值约束可得a
1-a-1
=-ψ,从而得到如(85)所示的权重。
[0286]
a-1
=a1+ψ;a0=1-2a
1-ψ
ꢀꢀꢀ
(85)
[0287]
然后,根据方差约束可得与两个样本的情况不同,这些权重将满足η和σ的所有值的约束。然而,当an≥0时,方差可能仅是低通过滤程度的有意义的指示。根据a0为正的要求可得关系式(86),并且根据a1和a-1
为正的要求可得(87)的关系式。
[0288]
[0289][0290]
这然后得出关系式(88),其对于给定的间距σ和偏移量ψ,示出了η的值,对于这些值,3个采样点就足以满足约束。
[0291][0292]
例如,如果将以一个标准偏差为单位表示的(其对应于以两个标准偏差为单位表示的)和ψ=0代入关系式(88),则1≤η≤2。
[0293]
如果存在四个采样点(即n=4),则该问题被约束不足,因为存在四个未知数(即四个过滤器权重)和仅三个约束。然而,如果并且a-n-1
=an,则保证了均值约束,然后权重被完全约束。然后,根据归一化约束可得1=a-2
+a-1
+a0+a1=2(a0+a1),从而得到在(89)处示出的权重。
[0294][0295]
根据方差约束可得关系式(90),并且根据权重为正的约束可得(91)的关系式。
[0296][0297][0298]
如果使用上文关于图4所述的间距(其可以被称为高斯间距)(即,),则这对于η=2产生关系式(92)中的权重。
[0299][0300]
然而,采样点的不同间距可以用于模拟不同的过滤器。例如,如果使用与帐篷式过滤器的标准偏差的倒数成比例的间距(即),则这对于η=2产生在(93)处示出的权重,这些权重是采样帐篷式过滤器的权重。
[0301][0302]
如果使用与箱式过滤器的标准偏差的倒数成比例的间距(即),则2≤η≤5。这对于η=2产生在(94)处示出的权重并且对于η=4产生在(95)处示出的权重,这些权重是采样箱式过滤器的权重。
[0303][0304][0305]
因此,可以看出,纹理过滤约束本身可能足以确定少量采样点的权重。对于更多采样点(即n>4),权重可以被选择为使上述代价函数(或者,如下文更详细地描述的,类似的离散代价函数)之一最小化的那些权重。
[0306]
例如,对于更多采样点(即n>4),各向异性过滤器a可以执行高斯预卷积,以根据关系式(96)定义|φ(x)|,其中最小化的目标是识别φn,从而识别an。执行高斯预卷积,因为
最终感兴趣的是复合过滤器的频率响应。
[0307][0308]
对于离散过滤器,可以将关系式(77)、(80)和(81)中所示的归一化、均值和方差条件写成如关系式(97)、(98)和(99)所示的离散函数。
[0309][0310][0311][0312]
然后选择使上文列出的代价函数之一(例如,以关系式(65)、(70)和(75)列出的代价函数之一)最小化的an。
[0313]
可以看出,以关系式(97)、(98)和(99)示出的约束可以用于将以关系式(65)、(70)和(75)示出的代价函数分别简化为关系式(100)、(101)和(102),因为这些约束可以直接施加(并且因此代入到前面的关系式中)。
[0314][0315][0316][0317]
在一些情况下,可以使用一般的代数和/或数值技术进一步简化这些代价函数。例如,|φ(x)|4可以由关系式(103)表示,该关系式允许以关系式(101)示出的代价函数被重写为关系式(104)。
[0318][0319][0320]
在一些情况下,代替选择最小化上述连续代价函数之一的权重,可以最小化等效离散代价函数。上述连续高斯函数、范数函数和光谱代价函数的示例离散版本分别以关系式(105)、(106)和(107)示出,其中代价函数的离散版本可以更容易地运算和/或求解。这些离散版本可能更适合于权重的实时计算。然而,最小化连续代价函数的离散版本可能仍然相当耗费时间和/或资源。
[0321][0322]
∑
n∈s
|φn|4ꢀꢀꢀ
(106)
[0323][0324]
纹理过滤单元和图形处理系统
[0325]
现在参考图15,其展示了示例图形处理系统1500。图形处理系统1500包括图形处理单元(gpu)1502和存储器1504。gpu包括纹理过滤单元1506。纹理过滤单元1506被配置为根据本文所述的任何方法来执行各向异性纹理过滤。纹理过滤单元1506可以被配置为从例如着色器程序接收纹理坐标,并且基于所接收的纹理坐标执行各向异性过滤。一般来讲,纹理过滤单元1506可以用硬件(例如,固定功能电路系统)、软件或其组合来实现,但可能优选的是用硬件来实现,因为这倾向于以操作的不灵活性为代价提供较低延迟的纹理过滤操作,但是,由于纹理过滤单元1506的期望操作在设计时是已知的,所以其操作不需要灵活。存储器1504包括用于存储纹理(例如,存储表示纹理的多级渐远纹理)的存储器部分1508,以及用于存储从gpu 1502输出的图像数据(例如,渲染的像素值)的存储器部分1510(其可以称为帧缓冲器)。
[0326]
图16示出其中可以实现本文所述的纹理过滤单元和/或图形处理系统的计算机系统。计算机系统包括cpu 1602、gpu 1604、存储器1606和其他设备1614,诸如显示器1616、扬声器1618以及相机1620。处理块1610(对应于图15的纹理过滤单元1506)在gpu 1604以及神经网络加速器(nna)1611上实现。在其他示例中,处理块1610可以在cpu 1602上或在nna 1611内实现。计算机系统的部件可经由通信总线1622彼此通信。
[0327]
虽然图16展示了图形处理系统的一种实现方式,但是应当理解,可以为人工智能加速器系统绘制类似的框图,例如,通过用神经网络加速器(nna)1611替换cpu 1602或gpu 1604,或者通过添加nna作为单独的单元。同样,在这类情况下,处理块1610可以在nna中实现。
[0328]
图15的纹理过滤单元和图形处理系统被示为包括多个功能块。这仅是示意性的,并不旨在限定这种实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应当理解,在本文中被描述为由单元或系统形成的中间值不需要由单元或系统在任何时间点物理地生成,并且可以仅表示方便地描述单元或系统在其输入端和输出端之间执行的处理的逻辑值。
[0329]
本文所述的纹理过滤单元和/或图形处理系统能够以集成电路上的硬件来体现。本文所述的纹理过滤单元和/或图形处理系统可以被配置为执行本文所述的任何方法。一般来说,上文所描述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如固定逻辑电路系统)或它们的任何组合中实施。本文可以使用术语“模块”、“功能性”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或它们的任何组合。在软件实施方式的情况下,模块、功能性、部件、元件、单元、块或逻辑表示程序代码,所述程序代码当在处理器上执行时执行指定任务。本文所描述的算法和方法可以由执行代码的一个或多个处理器执行,所述代码使得处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(ram)、只读存储器(rom)、光盘、闪存存储器、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或其他数据并且可以由机器存取的其他存储器设备。
[0330]
如本文所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包括以机器语言、解释语言或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用诸如c、java或opencl等编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解译、编译、
运行时,这些软件、固件、脚本、模块或库使得支持可执行代码的计算机系统的处理器执行由所述代码指定的任务。
[0331]
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或它们的具有处理能力以使得其可执行指令的集合或部分。处理器可以是任何种类的通用或专用处理器,诸如cpu、gpu、nna、片上系统、状态机、媒体处理器、专用集成电路(asic)、可编程逻辑阵列、现场可编程门阵列(fpga)等。计算机或计算机系统可包括一个或多个处理器。
[0332]
其还旨在涵盖限定如本文中所描述的硬件的配置的软件,诸如hdl(硬件描述语言)软件,如用于设计集成电路或用于配置可编程芯片以实现所需功能。也就是说,可以提供一种其上编码有集成电路定义数据集形式的计算机可读程序代码的计算机可读存储介质,所述计算机可读程序代码当在集成电路制造系统中被处理(即,运行)时,将该系统配置为制造被配置为执行本文所述任何方法的纹理过滤单元和/或图形处理系统,或者制造包括本文所述任何装置的纹理过滤单元和/或图形处理系统。集成电路定义数据集可以是例如集成电路描述。
[0333]
因此,可以提供一种在集成电路制造系统处制造如本文所述的纹理过滤单元和/或图形处理系统的方法。此外,可以提供一种集成电路定义数据集,当其在集成电路制造系统中被处理时,使纹理过滤单元和/或图形处理系统的制造方法得以执行。
[0334]
集成电路定义数据集可呈计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别进行制造的硬件描述语言,包括作为寄存器传输级(rtl)代码,作为高级电路表示法,诸如verilog或vhdl,以及作为低级电路表示法,诸如oasis(rtm)和gdsii。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如rtl)可以在计算机系统上处理,所述计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,所述软件环境包括电路元件的定义和用于组合这些元件以便生成由所述表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如提供命令、变量等),以便将计算机系统配置成用于产生集成电路的制造定义,以执行定义集成电路以便产生所述集成电路的制造定义的代码。
[0335]
现在将参照图17来描述在集成电路制造系统中处理集成电路定义数据集以便将该系统配置为制造如本文所述的纹理过滤单元或图形处理系统的示例。
[0336]
图17示出了集成电路(ic)制造系统1702的示例,该系统被配置为制造如本文的任何示例中所述的纹理过滤单元和/或图形处理系统。具体地说,ic制造系统1702包括布局处理系统1704和集成电路产生系统1706。ic制造系统1702被配置为接收ic定义数据集(例如,定义如本文的任何示例中所述的纹理过滤单元或图形处理系统)、处理该ic定义数据集,以及根据该ic定义数据集来生成ic(例如,其体现如本文的任何示例中所述的纹理过滤单元或图形处理系统)。通过对ic定义数据集的处理,将ic制造系统1702配置为制造体现如本文的任何示例中所述的纹理过滤单元或图形处理系统的集成电路。
[0337]
布局处理系统1704被配置成接收和处理ic定义数据集以确定电路布局。根据ic定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成rtl代码以确定待产生的电路的门级表示,例如就逻辑部件(例如nand、nor、and、or、mux和flip-flop部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可
以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统1704已经确定电路布局时,其可将电路布局定义输出到ic产生系统1706。电路布局定义可以是例如电路布局描述。
[0338]
如本领域中已知的,ic产生系统1706根据电路布局定义来产生ic。例如,ic产生系统1706可实施用以产生ic的半导体装置制造工艺,这可以涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,所述掩模可在光刻工艺中使用以用于根据电路定义来产生ic。可替代地,提供给ic产生系统1706的电路布局定义可呈计算机可读代码的形式,ic产生系统1706可使用所述计算机可读代码来形成用于产生ic的合适掩码。
[0339]
由ic制造系统1702执行的不同过程可全部在一个位置中例如由一方来实施。可替代地,ic制造系统1702可以是分布式系统,使得一些过程可在不同位置处执行,并且可由不同方来执行。例如,以下阶段中的一些可在不同位置中和/或由不同方来执行:(i)合成表示ic定义数据集的rtl代码,以形成待产生的电路的门级表示,(ii)基于门级表示来产生电路布局,(iii)根据电路布局来形成掩模,以及(iv)使用掩模来制造集成电路。
[0340]
在其他示例中,在集成电路制造系统中对集成电路定义数据集的处理可以将该系统配置为在不处理ic定义数据集以便确定电路布局的情况下制造纹理过滤单元或图形处理系统。例如,集成电路定义数据集可以定义可重新配置的处理器,诸如fpga的配置,并且对所述数据集的处理可以将ic制造系统配置为(例如,通过将配置数据加载到fpga)生成具有所述定义的配置的可重新配置的处理器。
[0341]
在一些实施方案中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文中描述的装置。例如,通过集成电路制造定义数据集,以上文关于图17描述的方式对集成电路制造系统的配置,可制造出如本文中所描述的装置。
[0342]
在一些示例中,集成电路定义数据集可以包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图17中示出的示例中,ic生成系统可由集成电路定义数据集进一步被配置为在制造集成电路时根据在集成电路定义数据集处定义的程序代码将固件加载到所述集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。
[0343]
与已知的实施方式相比,在本技术中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实现的方法中)的实施方式可以引起性能改进。性能改进可以包含计算性能提高、等待时间减少、吞吐量增大和/或功耗降低中的一者或多者。在制造这种设备、装置、模块和系统(例如,在集成电路中)期间,可以在性能改进与物理实施之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实施的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在设备、装置、模块和/或系统的元件之间共享功能块来完成。相反,在本技术中阐述的引起设备、装置、模块和系统的物理实施的改进(诸如硅面积减小)的概念可以针对性能提高进行权衡。这可以例如通过在预定义面积预算内制造模块的多个实例来完成。
[0344]
申请人据此独立地公开了本文所描述的每个单独的特征以及两个或更多个这种特征的任意组合,到达的程度使得这种特征或组合能够根据本领域技术人员的普通常识基
于本说明书整体来实行,而不管这种特征或特征的组合是否解决本文所公开的任何问题。鉴于前文描述,本领域技术人员将清楚,可以在本发明的范围内进行各种修改。