各向异性过滤(英语:Anisotropic filtering,简称AF)是一种3D显示技术,如其名称所示,它是对周围各个方向上的像素进行取样计算后映射到目标像素上的技术。与双线性过滤和三线性过滤相比,它在大角度显示方面具有更高的精度,令画面更逼真,但计算量也更大,对显卡的要求也更高。[1]
实现
OpenGL 扩展规范[2]中说明了可能的实现方式,首先定义以下符号:
其中 和 mipmapping 中的定义相同,代表纹理座标对屏幕座标的微分。不同的是引入了变量 N 代表 anisotropic 的比例(一般不超过 16),并且只在 的 mipmap 层级取样(无视向上取整以及限制最大 anisotropic 程度的 min 的话,则 )。
Anisotropic filter 的结果 可以用平均多个 mipmap 的采样 求出。
可以看到这个方式需要访问比原本多出 N 倍的纹理存储器,而且跟原本的 mipmap 方法是正交的,也就是我们可以任意的 mipmap 方法,配合任意的 。
优化
- 相邻的像素点通常存在于缓存里面。
- 一般来说高度各向异性的点很少(通常小于10%),而需要材质过滤的点也不需要各向异性过滤。
参考文献