Translate

2015年4月12日 星期日

Texture filtering 遊戲中的過濾入門介紹

繼上一篇Antialiasing再寫一篇AF

遊戲中的圖形都是2D貼圖到3D模型上
在同樣大小的材質(texture)的情形容易在不同大小(例如距離遠近)或角度變化(圖像非垂直於觀察者角度)出現失真的變化

這種情形就要使用過濾模式:

以下幾張圖可看出過濾模式的差異



關閉過濾 遠方地板材質失真模糊


開啟過濾 遠方地板材質清晰


遊戲中常見的有幾個選項

1.Bilinear filtering(雙線性)
2.Trilinear filtering(三線性)
3.Anisotropic filtering 2x 4x 8x 16x(非等方性)

簡單來講 越下面效果越好

Bilinear 跟 trilinear最明顯的差別就在於往2D圖片前進時圖片突變的情形較小(雙線性會有圖片階層變化)

Trilinear 跟 anisotropic的最明顯差別就在於非垂直於觀察者角度的圖片可以有較好的還原

下面兩張圖可以看出當圖片垂直於觀察者角度(對面的牆) 跟 非垂直於觀察者角度(地板)
雙線性與非等方性過濾的差別

雙線性對於垂直觀察者角度的圖片還原效果佳

地板在非等方性過濾下比起上圖的線性過濾較不會失真
各式過濾法比較(請開啟字幕)




在這些之前先介紹mipmap

Mipmap

為了要加快運算速度跟減少鋸齒化所以有mipmap
原圖一張擁有所有的細節 每一張降階的圖皆為1/2 會損失細節
原圖用在離使用者最近的位置 小圖用在離使用者較遠的位置



Bilinear filtering

在mipmap中做線性差值


Trilinear filtering

改良後的結果,減少圖片的段落感
在臨近的兩個mipmap做bilinear filter 再做線性差值



Anisotropic filtering

改善同向性過濾法無法處理的非垂直角度貼圖變形
不單使用方形mipmap 而使用像是梯型或三角形的mipmap
在處理相對於觀察者的大角度圖形較不會變形


非等方過濾的2X 4X 8X 16X差別則是在角度不同
越高角度越大
關閉過濾


2X


4X


8X


16X

16X過濾的圖片角度雖然較大但是其實沒多少大角度圖片
建議看過差別後再選擇

以硬體需求來看
16x>8x>4x>2x>trilinear>bilinear

若圖形沒有模糊的情況 選最低即可,建議直接從anisotropic filtering選擇

參考資料














沒有留言:

張貼留言