Texture Filtering

来源:互联网 发布:linux grub 配置 编辑:程序博客网 时间:2024/05/18 01:44

Texture Filtering

在纹理映射时,需要进行Filter,原因在于:

观察者在不同视角、与object不同距离的情况下,进行纹理映射时,屏幕上的一个像素未必对应于纹理图像上的一个像素。

  • 当一个屏幕像素pixel对应多个纹理像素texel时,就需要使用Filter来得到合理的像素值
  • 当多个屏幕像素pixel对应一个texel时,纹理图像的分辨率显然不能满足要求。

MIPmap 即金字塔,对应于不同分辨率下的纹理图像


典型的三种filter方法:

  1. bilinear filtering
  2. trilinear filtering
  3. 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比例

原创粉丝点击