各向異性過濾(英語:Anisotropic filtering,簡稱AF)是一種3D顯示技術,如其名稱所示,它是對周圍各個方向上的像素進行取樣計算後對映到目標像素上的技術。與雙線性過濾和三線性過濾相比,它在大角度顯示方面具有更高的精度,令畫面更逼真,但計算量也更大,對顯示卡的要求也更高。[1]
實作
OpenGL 擴展規範[2]中說明了可能的實作方式,首先定義以下符號:
其中 和 mipmapping 中的定義相同,代表紋理座標對螢幕座標的微分。不同的是引入了變數 N 代表 anisotropic 的比例(一般不超過 16),並且只在 的 mipmap 層級取樣(無視向上取整以及限制最大 anisotropic 程度的 min 的話,則 )。
Anisotropic filter 的結果 可以用平均多個 mipmap 的採樣 求出。
可以看到這個方式需要存取比原本多出 N 倍的紋理記憶體,而且跟原本的 mipmap 方法是正交的,也就是我們可以任意的 mipmap 方法,配合任意的 。
優化
- 相鄰的像素點通常存在於快取裏面。
- 一般來說高度各向異性的點很少(通常小於10%),而需要材質過濾的點也不需要各向異性過濾。
參考文獻