Texture Filtering
在纹理映射时,需要进行Filter,原因在于:
观察者在不同视角、与object不同距离的情况下,进行纹理映射时,屏幕上的一个像素未必对应于纹理图像上的一个像素。
- 当一个屏幕像素pixel对应多个纹理像素texel时,就需要使用Filter来得到合理的像素值
- 当多个屏幕像素pixel对应一个texel时,纹理图像的分辨率显然不能满足要求。
MIPmap 即金字塔,对应于不同分辨率下的纹理图像
典型的三种filter方法:
- bilinear filtering
- trilinear filtering
anisotropic filtering
首先linear filtering 指的是在不同texel间进行插值采样。那么插值采样的参考texel,可以基于MIPmap的不同level,基于同一level上的不同texel
bilinear filtering
其采样点texel为:在最邻近的mipmap level 上,对应pixel最近的四个点(二维)。pixel采样的时候再根据距离的远近作为权重,其双线性体现在了四个最近的texel。trilinear filtering
首先在最近的两个mipmap level 上分别做bilinear filtering,最后再在结果间做线性插值anisotropic filtering
与isotropic filtering 各向同性不同,在需要进行纹理映射的平面与观察者成倾斜角时,isotropic对于MIPmap 的downsize 比例在长宽上是一样的,而anisotropic则对长宽做不一样的缩放,如 128×128 可以变为 32×128 。 因此,对于text-maped image(待贴纹理的图像)上不同方向变化快慢的不同,可以采用不同的downsize比例