1. 有两个不同的概念:像素(Pixel)和纹素(Texel)

  2. 在纹理上查询纹素有两种方式:

    • 点查(Point Query):小纹理,而要对纹理放大
    • 范围查(Range Query):动态生成 Mipmap
  3. 小纹理:低分辨率纹理应用到高分辨率设备,会产生马赛克问题

    opengl-texture-magnification

    • Nearest:邻近点
      opengl-texture-nearest
    • Bilinear:双线性插值
      opengl-texture-bilinear.jpg
    • Bicubic: Comparison_of_1D_and_2D_interpolation.svg
  4. 大纹理:高分辨率纹理应用到低分辨率设备,会有 锯齿(Jaggies)摩尔纹(Moire)走样(Aliasing) 的问题

    opengl-texture-aliasing

    • 多重采样(supersampling)
  5. 面采样求平均值

    opengl-footprint-in-texture

  6. Mipmap:图像金字塔

    • 具有速度快、只是近似值且只能是方形范围的特点
    • 会额外占用 1/3 的原始纹理显存空间,总共 4/3 的显存占用

    opengl-texture-mipmap.jpg

    opengl-texture-computing-mipmap-level.jpg

  7. 三线性插值(Trilinear interpolation):

    • 先在相邻两层 Mipmap 中分别进行 Bilinear 插值,再在结果之上进行线性插值
    • 局限性:会存在 overblur 的问题

    opengl-texture-trilinear-interpolation.jpg

    opengl-texture-mipmap-overblur.jpg

  8. 各项异性过滤(Anisotropic Filtering)(Ripmap):

    • 对于平行于坐标轴的矩形区域查询有较好的表现,但是对于非矩形区域仍是效果不佳
    • 会额外占用 3 倍的显存空间

    opengl-texture-anisotropic-filtering-result.jpg

    opengl-texture-anisotropic-filtering.jpg

    • 纹理映射的不规则区域

    opengl-texture-irregular-pixel-footprint-in-texture.jpg

  9. EWA Filtering:

    将不规则区域划分为椭圆形查询区域,进行多次查询

    opengl-texture-ewa-filtering.jpg

参考:

  1. GAMES101-现代计算机图形学入门-闫令琪
  2. Bicubic interpolation
  3. 走样
  4. 各向异性过滤
  5. EWA滤波