纹理基础知识和过滤模式详解

转载自 纹理基础知识和过滤模式详解

1. 为什么在纹理采样时候需要 texture filter (纹理过滤)

我们的纹理 要贴到三维图形表面,而三维图形上的pixel中心与纹理上的texel中心并不一致(pixel不一定对应texture上的采样中心texel).大小也不一定一致.

  • 当纹理大于三维图形表面时,导致一个像素被映射到许多纹理像素上.
  • 当纹理小于三维图形表面时,导致许多个像素都映射到相同纹理.
    当这些情况发生时,贴图就会发生模糊或者发生错误.要解决此类问题.必须通过技术平滑texel和pixel之间的对应关系.这种技术叫做纹理滤波.

不同的过滤模式,计算复杂度不一样.会得到不同的效果.
过滤模式由简单到复杂包括:

  • 最近邻插值采样 (Nearest Point Samplir)
  • 双线性过滤 (Bilinear)
  • 三线性插值 (Trilinear)
  • 各向异性过滤 (Anisotropic Filtering)

在了解这些之前,有必要先了解什么是 多级纹理贴图 (MipMap) 和 什么是 各向同性各向异性 .

2. 什么是 MipMap ?

Mipmap由Lance Williams 在1983的一篇文章“Pyramidal parametrics”中提出。Wiki中有很详细的介绍(http://en.wikipedia.org/wiki/Mipmap ) .

  • 比如一张256X256的图,在长和宽方向每次减少一倍,生成:128X128,64X64,32X32,16X16,8X8,4X4,2X2,1X1,八张图,组成MipMap.

在这里插入图片描述
Mipmap 早被硬件支持. 硬件会自动为创建的 Texture 生成 Mipmap 的各级.

  • 在D3D的API:CreateTexture中有一个参数levels,就是用于指定生成mipmap到哪个级别,当不指定时就一直生成到1X1

3. 什么是各向同性 和 各向异性 ?

各向同性 : 当需要贴图的三维表面 平行于屏幕, 则是各向同性的.
各向异性 : 当要贴图的三维表面与屏幕有一定角度的倾斜,则是各向异性的.

也可以这样理解,当一个texture贴到三维表面上从Camera看来没有变形,投射到屏幕空间中后U方向和V方向比例仍然是一样的,便可以理解成各向同性。反之则认为是各向异性。

4. Nearest Point Sampling(最近点采样)

这个最简单,每个像素的纹理坐标,并不是刚好对应Texture上的一个采样点texel,怎么办呢?最近点采样取最接近的texel进行采样。

纹理的大小与贴图的三维图形的大小差不多时,这种方法非常有效和快捷。如果大小不同,纹理就需要进行放大或缩小,这样,结果就会变得矮胖、变形或模糊。

5. Bilinear(双线性过滤)

双线性过滤以pixel对应的纹理坐标为中心,采该纹理坐标周围4个texel的像素,再取平均,以平均值作为采样值。

  • 双线性过滤像素之间的过渡更加平滑,但是它只作用于一个MipMap Level 它选取texel和pixel之间大小最接近的那一层MipMap进行采样。
  • 当和pixel大小匹配的texel大小在两层Mipmap level之间时,双线性过滤在有些情况效果就不太好。于是就有了三线性过滤。

6. Trilinear(三线性过滤)

三线性过滤以双线性过滤为基础。

  1. 会对pixel大小与texel大小最接近的两层Mipmap level分别进行双线性过滤
  2. 然后再对两层得到的结果进生线性插值。

三线性过滤在一般情况下效果非常理想了。

  • 但是到目前为止,我们均是假设是texture投射到屏幕空间是各向同性的。
  • 但是当各向异性的情况时,效果仍然不理想,于是产生了Anisotropic Filtering(各向异性过滤)。

7. Anisotropic Filtering(各向异性过滤)

先看效果,左边的图采用三线性过滤,右边的图采用各向异性过滤。

在这里插入图片描述

  • 各向同性的过滤在采样的时候,是对 正方形区域 里行采样。
  • 各向异性过滤 把纹理与屏幕空间的角度 这个因素考虑进去。
    • 简单地说,它会考虑一个pixel(x:y=1:1)对应到纹理空间中在u和v方向上u和v的比例关系,
    • 当u:v不是1:1时,将会按比例在各方向上采样不同数量的点来计算最终的结果(这时采样就有可能是长方形区域)。

一般指的 Anisotropic Filtering(AF) 均是基于三线过滤的Anisotropic Filtering,因此当u:v不为1:1时,则Anisotropic Filtering比Trilinear需要采样更多的点,具体要采多少,取决于是多少X的AF,现在的显卡最多技持到16X AF。

8. 各过滤模式性能比较

下表是各种过滤模式 采一个pixel需要sample的次数
一般而言,采样数越多,效果最好,但具体使用时要综合考虑性能。

过滤模式采样数
Nearest Point Sampling1
Bilinear4
Trilinear8
Anisotropic Filtering 4X32
Anisotropic Filtering 16X128
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值