发布网友 发布时间:2022-04-25 20:48
共3个回答
热心网友 时间:2022-06-17 06:59
“各向异性过滤” – 究竟是什么?为什么我们需要他?
在此之前先来具体介绍一下Anisotropic Filt技术。它是用来过滤、处理当视角变化造成3D物体表面倾斜时做成的纹理错误。“Anisotropic”字面上的解释是“各向异性”。传统的双线性和三线性过滤技术都是“Isotropy”(各向同性),其各方向上矢量值是一致的,就像正方形和正方体。而Anisotropic Filt技术则是?a href=../../../../2/data/bear/cs/cs131/index.htm target=_blank>美创�硎噶糠较蛏现挡灰恢碌那榭觥�nisotropic Filt技术的过滤单元并不是“四四方方”的,其典型单元是矩形,还可以变形为梯形和平行四边形。
画面上的一个象素,在一个方向上可以包含不同纹理单元的信息。这就需要一个“非正多边形”的过滤单元,来保证准确的透视关系和透明度。不然,如果在某个轴上的纹理部分有大量信息,或是某个方向上的图象和纹理有个倾角,那么得到的最终纹理就会变得很滑稽,比例也会失调。当视角为90度,或是处理物体边缘纹理时,情况会更糟。
为了解决上面提到的问题,Anisotropic Filt技术就引入了非正多边形的矩形、梯形和平行四边形纹理单元,这样就可以根据实际情况成比例的调整单元。这样斜面在“各向异性过滤”技术的处理下,看起来就不会那么滑稽了。
所有的过滤操作都有同样的一个问题--没有足够的采用纹理,分辨率和显示器大小在实际工作中也有一定的影响。提高分辨率有助于解决采样的问题,因为这样可以给引擎提供更多的采样纹理。使用1600×1200的分辨率(未使用FSAA),有助于提高总体图象质量,在一个较小的显示器(17"以下)上,由于“象素压缩”现象,可以有效的解决纹理错误问题。但是“各向异性过滤”技术却并不是这样解决问题,它可以在象素数量不足的情况下,经过插值运算处理来提高画质。
● 解决方法: “各向异性过滤”
一般情况下,“各向异性过滤”技术是从16个采样纹理中取平均值,其特别的采样单元是双线性过滤的4倍、三线性过滤的2倍。ATI的“各向异性过滤”技术可以做到在它的16X 质量优秀模式下,对128个纹理采样,当然这种情况资源消耗极大,特别对于内存带宽而言。而NVIDIA的在最高的8X模式下,可以对个纹理采样。
● ATI vs. NVIDIA: 合适的过滤
下面是两家公司产品“各向异性过滤”设置的详细数据(注意:ATI有“速度优先”和“质量优先”两个模式)
“各向异性过滤”设置
ATI Performance ATI Quality nVidia
1X 不支持 8
2X 最大为8 最大为16 16
4X 最大为16 最大为32 32
8X 最大为32 最大为
16X 最大为 最大为128 不支持
根据“各向异性过滤”技术的标准,对一个象素应该有16个采样。那么ATI的“2X Quality”或是“4X Performance”才符合标准,而NVIDIA则为“2X”。ATI的“最大为”表示,在实际操作中,显示核心会根据某些法则对不同区域的象素进行不同数量的采样处理。这样做的原因当然是为了带宽。想想下面的数字:当使用32位色、1024×768分辨率、60FPS时,在三线性过滤的情况下(8个采样点),就在每帧画面中需要读取1024×768×8=6,291,456象素(未进行纹理压缩)。如果每个象素4字节,就是25,165,824字节,再乘上每秒的60帧,就得到了需要的带宽1.5GB/s。实际情况下,大多数游戏都采用4:1的纹理压缩,那就是360MB/s。
如果使用NVIDIA的8X模式,“各向异性过滤”采样为个,是三线性过滤的8倍,就需要2.8GB/s的带宽。如果在1600×1200×32的设置下,带宽就需要6.7GB/s。这当然是不现实的。2.8GB/s的带宽已经接近GeForce4 Ti 4600可用带宽的一半了,如果没有纹理压缩,11.2GB/s就达到了显卡的理论最大带宽(实际上能达到吗?)。如果没有较高的纹理缓冲命中率的话,“各向异性过滤”和FSAA技术都只能是纸上谈兵。而实际上带宽还要供景深缓冲、数模转换等操作使用。
3D显卡通常都会自行取消多余的操作,来节省CPU运算和内存带宽的占用。大多数优化操作都是将不可见的物体和象素省略,这样的技术有culling, clipping, depth-buffering, backface culling,或是通过几何算法和距离来减少纹理和物体大小,如MIP-mapping、geometric LOD。但所有的技术都没有在操作时减少物体的棱角,特别是在处理接近场景平面时。
Matrox的Fragment Antialiasing(FAA)技术是个例外,它可以处理物体边缘的情况,可以平滑边缘的锯齿效果。但是该公司承认这项技术还有些兼容性问题。大多数的过滤技术都着眼于减少不可见的物体和象素,因为既然看不到,省略它们也不会降低画面质量。
● ATI的解决方法: 只要应用到是使用“各向异性过滤”
ATI只在Radeon 9700及其之后的产品上支持“各向异性过滤”技术。ATI的实现方式是在框架形成的时候就把斜面的信息保存下来,再根据这些信息决定是否使用“各向异性过滤”技术,并决定使用哪个模式(主要取决于相对视角下斜面的角度)。“各向异性过滤”技术的使用程度可以通过驱动程序设定。用户可以选择速度和质量优先模式,在某个模式中的数字决定了处理场景中扭曲最严重部分的最大采样数。当扭曲程度减小时,ATI的“各向异性过滤”技术将根据其算法减少采样数。在Radeon 9700中,将延长矩形采样单元的长度来获得更多的采样点来纠正更严重扭曲的部分。
“各向异性过滤”设置
ATI Performance ATI Quality
1X 不支持
2X 最大为8 最大为16
4X 最大为16 最大为32
8X 最大为32 最大为
16X 最大为 最大为128
ATI的两种模式(速度和质量)的区别在于使用的是双线性“各向异性过滤”还是三线性“各向异性过滤”模式。不过画面上的提高只在某些场景中比较明显。不过当应用程序有特别的要求时,用户的设定将被忽略。据ATI称,速度优先模式在D3D和OpenGl中,都强制使用双线性“各向异性过滤”,而质量有限模式则在D3D中强制使用三线性“各向异性过滤”,而对OpenGl不做强制规定。
ATI的“各向异性过滤”解决方案是在其认为不需要的地方不使用“各向异性过滤”技术,而将精力都用在最需要的地方。ATI相信这种方式有最好的效果。
● NVidia的方法:通过采样共享,实现动态“各向异性过滤”
NVIDIA也使用了某种特殊算法,不过在“各向异性过滤”中一直使用的都是三线性过滤技术(而不是ATI可选的双线性过滤)。除了这点之外,NVIDIA和ATI的解决方式差别很小。
最主要的差别是两者的采样单元不一样。NVIDIA使用了可在X、Y轴变形的可变四边形单元。NVIDIA可以改变采样点数和采样单元,而ATI只能改变采样个数。
nVidia的首席科学家David Kirk这样解释GeForce 4 Ti的“各向异性过滤”实现方式:
...主要目标是准确处理象素所在源纹理处的采样单元,包括方向、透视关系。在这两个方面,“各向异性过滤”技术比其他任何技术都要好。
处理单元并不一定要是矩形,因为不同的方向可能并不在一个轴线上。而且,根据透视关系,实际的物体可能更像一个四边形。实际组合非常复杂,最近的边应该看起来大,细节程度低而又权重。而采样单元的“前半部分”也应该比后半部分权重。
因此,细节程度会变动到超过两倍。
我们的“各向异性过滤”技术是沿着主轴,对8个三角采样单元进行加权平均。所以,我们可能会使用最大的个点,但将只从两个MIP Map中取样,各点的权重也是不一样的。所有的采样将整体接近最靠近观察点的象素。
因为GeForce 4 Ti可以动态改变采样单元来更好的适应所操作的斜面,nVidia认为这是一种更好的解决方式,可以解决相关的扭曲现象。当物体表面完全垂直于Z轴时,就不会对其进行“各向异性过滤”操作。不得不说,这种解决方式和ATI的差别很小。
两者的方式都可以动态的改变采样率。不同就在于ATI的采样单元一直是矩形的,而nVidia的则可以改变。
下面的问题就简单了,“各向异性过滤”技术带来的质量提高值得吗?目前的答案是否定的。两家公司不约而同的采取了动态“各向异性过滤”技术,期望以最小的性能损失换来最大程度的画面质量提升。
热心网友 时间:2022-06-17 07:00
影响不大;
热心网友 时间:2022-06-17 07:00
其它日常使用中都用不着这些,肉眼也看不出来,只要游戏流畅就行了,显卡性能中影响最大的是显卡核心频率,和显存频率,一些技术上的功能有时只是一种摆设。