小弟才疏學淺, 自己知道的講一下
如有講錯..還請版友指正
首先是材質貼圖
顯示卡一個重要的工作就是把圖貼到空空的骨架上去
但是因為要成的像是3D的
所以要把一張平面的圖..貼到有遠近之分的東西上去
勢必要對那張圖做一點處理
這就叫做材質過濾
那張"圖"..就是我們所稱的材質
就好像工藝課有那種木紋貼紙
貼到東西上面去就會讓它看起來像是木頭做的
關於材質的過濾
有好幾種做法
講講三個大家最常看到的
雙線性(Bilinear filtering), 三線性(Trilinear filtering), 非等相性過濾(Anisotropic filtering)
當談到Bilinear和Trilinear的時候
要講到一個東西叫做Mipmap
不管在做Bilinear filtering或是Trilinear filtering的時候
顯示卡首先要對材質做一件事就是Mipmapping
就是把那張材質弄成像金字塔一樣
比如說
這張材質原封不動放在金字塔的最下層, 叫level0
再把這張材質裡面每相鄰四個像素做平均 ( 這樣它的長跟寬會各減一半 )
會做出一張看起來圖案很像但是大小只有原本四分之一的圖
把這張圖放在level0的上面, 就是level1
這樣一直做下去, 把小張的放在大張的上面
一直到長跟寬有一邊的大小縮到只剩下一個像素為止
這樣的一個金字塔..我們稱做Mipmap
當然不一定要用每相鄰四個像素做平均這種方法來產生較小的材質
有更好的方法(像是使用Gaussian Filter)
做好了以後
在要貼圖的時候
顯示卡會去檢查要貼上去的那一個顯示像素
在材質中佔了多少的面積
用這個來判斷要從Mipmap的哪一個level去找材質來貼圖
Bilinear filtering和Trilinear filtering便是在這個步驟上有差異
Bilinear filtering會找到Mipmap中的一個level
然後以長跟寬兩個方向為軸去對"顯示像素在材質上佔的面積"去做Filtering的動作
來得到該顯示像素的值
因為只以兩個方向(長跟寬), 所以叫做Bilinear Filtering
Trilinear Filtering則是會再多一個自由度去做Filtering
這個自由度就是那個金字塔的高
也就是說Trilinear可以抓相鄰的level一起來做Filtering
這樣的顯示效果當然更好
因為用了三個方向(材質的長跟寬,以及Mipmap裡的高), 所以叫做Trilinear Filtering