三线性插值
当纹理较小时,可使用三线性插值降低锯齿
原图纹理:
三线性插值:(寻找周围的四个像素点)
双三次插值算法(取周围16个像素点)
Mipmap(分级细化纹理)
计算某个像素点的mipmap,需要获取该像素点对应的纹理空间大小。(多开销 1 3 {1\over 3} 31内存空间).
d
u
du
du为选取纹理坐标两点的u分量之差,
d
v
dv
dv同理。
d
x
dx
dx为选取屏幕坐标两点的xf分量之差,
d
y
dy
dy同理。
因为这里选取临近的像素点取值,故
d
x
,
d
y
=
1
dx,dy = 1
dx,dy=1,所以这里
L
=
m
a
x
(
(
d
u
1
)
2
+
(
d
v
1
)
2
,
(
d
u
2
)
2
+
(
d
v
2
)
2
)
d
u
1
,
d
v
1
为
临
近
的
右
边
的
纹
理
坐
标
差
,
d
u
2
,
d
v
2
为
临
近
的
上
方
的
纹
理
坐
标
差
L = max(\sqrt{(du_1)^2+(dv_1)^2},\sqrt{(du_2)^2+(dv_2)^2}) \\ du_1,dv_1为临近的右边的纹理坐标差, du_2,dv_2为临近的上方的纹理坐标差
L=max((du1)2+(dv1)2,(du2)2+(dv2)2)du1,dv1为临近的右边的纹理坐标差,du2,dv2为临近的上方的纹理坐标差
这里用L可近似该像素点的纹理覆盖范围的边长。
D = l o g 2 L D = log_2L D=log2LD为分级细化纹理映射的级别。级别越大,约模糊。
小数分级细化纹理的线性插值
如果D不为整数,可以使用线性插值,使用floor(D)级纹理,和ceil(D)积纹理进行线性插值(根据D的大小加权插值)。
问题
mipmap只能处理正方形图像,如果是扁平状纹理映射
各向异性过滤(解决了矩形的问题)
向右每次横轴缩小一半,向下每次纵轴缩小一半。(开销多了三倍)
可解决一些矩形形状的纹理。
另外一些方法
EWA过滤
将不规则形状拆成多个圆形覆盖椭圆,多次查询覆盖原来形状。