紋理的各向異性過濾

概念介紹

“各向異性過濾”(Anisotropic Filtering鳍置,縮寫為 AF) 是一種紋理過濾方法。在一些情況下可以提升畫面的清晰度邮府。

下面這幅圖是來自 ARM 網站受神。https://developer.arm.com/documentation/101897/0200/buffers-and-textures/anisotropic-sampling-performance

其中,左圖采用一般的“三線性過濾”茎匠,右圖采用了 2x 的“各向異性過濾”。
可以看到在這個木頭箱子的側面辜荠,左圖較為模糊汽抚,右圖較為清晰抓狭。

ecj1571048092103.png

原理說明

對于有 mipmap 的情形伯病。
如果是“三線性過濾”,會根據紋理坐標的變化率,計算其應該采用哪一級 mipmap午笛。
但惭蟋,紋理坐標是二維的,有 u药磺,有 v告组。
如果 v 和 v 的變化率并不一致,則根據 u 和根據 v 可計算得到不同的 mipmap 級別癌佩。
一般“三線性過濾”會取兩者之間較大的 mipmap木缝,但這樣就不精確了。
“各向異性過濾”則會根據 mipmap_u 和 mipmap_v 的差異围辙,進行多次采樣我碟,然后綜合。
這樣就能提升畫質姚建。

實際的采樣次數由硬件決定矫俺。
當物體的表面正對攝像機時,u 和 v 的變化率差異小掸冤,采樣的次數也少厘托。
當物體表面近乎垂直于視線時,u 和 v 的變化率差異大稿湿,采樣的次數也多铅匹。

程序可以通過圖形 API(Direct3D、OpenGL)設置最大采樣次數缎罢。
設置 2x 的“各向異性過濾”伊群,則最多會采樣 2 次。
如果設置 16x 的“各向異性過濾”策精,則最多會采樣 16 次舰始。
次數越多,畫質越好咽袜,但性能越差丸卷。

下圖是各種設置的視覺效果對比(為了凸顯問題,圖片已經被放大至 200%)

1_HMi0_WQIiNE1TwKyLxSUTA.gif

對性能的影響

“各向異性過濾”會導致更多次數的紋理采樣询刹,影響性能谜嫉。

看各個 GPU 廠商的說法。

  • 高通
    https://developer.qualcomm.com/qfile/34706/80-nb295-7_a-adreno_vulkan_developer_guide.pdf

    Texture filtering can influence the speed of texture sampling. A bilinear texture lookup in a 2D
    texture on a 32-bit format costs a single cycle. Adding trilinear filtering doubles that cost to two
    cycles. Mipmap clamping may reduce this to bilinear cost though, so the average cost might be
    lower in real-world cases. Adding anisotropic filtering multiplies with the degree of anisotropy.
    That means a 16x anisotropic lookup can be 16 times slower than a regular isotropic lookup.
    However, because anisotropic filtering is adaptive, this hit is taken only on fragments that require
    anisotropic filtering. It could be only a few fragments in all. A rule of a thumb for real-world
    cases is that anisotropic filtering is, on average, less than double the cost of isotropic.
    翻譯:
    單次的 bilinear 采樣凹联,耗費一個 cycle沐兰。
    trilinear 采樣會加倍,也就是兩個 cycle蔽挠。
    而有時候 mipmap clamping 會使開銷降低至與 bilinear 等同住闯。所以平均是低于兩個 cycle 的。
    各向異性過濾會導致 N 倍開銷。如果是 16x 各向異性過濾比原,則比正常的過濾慢 16 倍插佛。
    然而,各向異性過濾是自適應的量窘,只在最傾斜的那些像素(片元)才會有 16 倍雇寇。通常只會增加少量開銷。
    通常而言蚌铜,平均是小于“不用各向異性過濾”時的兩倍

  • ARM
    https://developer.arm.com/documentation/101897/0200/buffers-and-textures/anisotropic-sampling-performance

    Using 2x bilinear AF, instead of trilinear filtering, increases image quality and can also improve performance.
    Using high levels of max anisotropy can improve image quality, but at the cost of performance.
    翻譯:使用 2x bilinear AF 性能和質量都會比 trilinear 更好锨侯。但 AF 的倍數增加之后,質量會進一步提升冬殃,但是性能下降识腿。

  • 蘋果
    暫時沒有找到對此問題有準確描述的文檔。
  • nVidia
    沒仔細找官方文檔造壮。但看起來似乎影響很微弱渡讼。
    在這個《泰坦墜落 2》游戲的推薦配置中,使用各向異性過濾之后耳璧,幀率幾乎沒有變化成箫。
    https://www.nvidia.com/en-us/geforce/news/titanfall-2-graphics-performance-and-tweaking-guide/
    25603081-bfbd56bdf408c838.png

    可能不同游戲會有不同,例如這個游戲的瓶頸不在紋理采樣旨枯,則當使用各向異性過濾蹬昌,可能不會影響幀率。

按 ARM 的說法攀隔,2x 的各向異性過濾是很不錯的皂贩。不過接下來就需要進一步測試了。特別是蘋果,沒有找到對應的文章。

擴展閱讀

用 shader 來做過濾悟衩,達到更佳的畫質:
https://bgolus.medium.com/sharper-mipmapping-using-shader-based-supersampling-ed7aadb47bec

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末谁不,一起剝皮案震驚了整個濱河市贼涩,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挤聘,死亡現場離奇詭異,居然都是意外死亡捅彻,警方通過查閱死者的電腦和手機组去,發(fā)現死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來步淹,“玉大人从隆,你說我怎么就攤上這事湾戳。” “怎么了广料?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長幼驶。 經常有香客問我艾杏,道長,這世上最難降的妖魔是什么盅藻? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任购桑,我火速辦了婚禮,結果婚禮上氏淑,老公的妹妹穿的比我還像新娘勃蜘。我一直安慰自己,他們只是感情好假残,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布缭贡。 她就那樣靜靜地躺著,像睡著了一般辉懒。 火紅的嫁衣襯著肌膚如雪阳惹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天眶俩,我揣著相機與錄音莹汤,去河邊找鬼。 笑死颠印,一個胖子當著我的面吹牛纲岭,可吹牛的內容都是我干的。 我是一名探鬼主播线罕,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼止潮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了钞楼?” 一聲冷哼從身側響起沽翔,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎窿凤,沒想到半個月后仅偎,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡雳殊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年橘沥,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夯秃。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡座咆,死狀恐怖痢艺,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情介陶,我是刑警寧澤堤舒,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站哺呜,受9級特大地震影響舌缤,放射性物質發(fā)生泄漏。R本人自食惡果不足惜某残,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一国撵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧玻墅,春花似錦介牙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至剩拢,卻和暖如春喳整,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背裸扶。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工框都, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人呵晨。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓魏保,卻偏偏與公主長得像,于是被迫代替她去往敵國和親摸屠。 傳聞我的和親對象是個殘疾皇子谓罗,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容