之前对三线型过滤理解有些问题更新一下
三线性采样点 一次sample采样点是8
(u,v,d)
d是个分数 作为权重
miplevel floor(d)向上取整 在这级mipmap上用uv 采样4个点插值得到a
miplevel ceil(d)向下取整 在这级mipmap上用uv 采样4个点插值得到b
ab按照d的小数部分插值
所以tribilinear在跨不跨mipmap的地方都是sample8个值 所有位置的结果都是插值
(mipmap跨级的意思是指 相邻两个位置 dx/du,dy/dv 计算出来不在一级mipmap的level就是跨级)
然后在这种情况下三线性还能提升性能。。。我也真是服 我要测下看看
原因是 远处cachemissing减小 但是整整多了一倍采样啊 不是增加很多带宽吗 难道我3.0版本对filter对带宽的影响还需要更新?
------
bilinear算法 临近四个点的uv距离下一组uv的四个点 在远处还是会差很大 还是cache missing
有一个容易被忽视的问题是 bilinerar因为有cache的情况下 并不会一直去mem拿tex多半在cache里面 在近的地方
但如果在远处 这部分cache会missing 情况就变成每次都是4 近的时候访存远远低于4
改成tri为什么能提升性能呢这说不通 因为有4次像bri一样的samp一定会做 还有4次性能比较好的 在高level的mipmap上的sample是额外的开销
所以如果他说 Trilinear filtering with mipmaps via GL LINEAR MIPMAP LINEAR requires eight values per sample, but it can actually increase performance since, for faraway pixels, samples from the smaller mip levels are very likely to hit in texture cache.
三线性提升性能 只有一个可能 与之比较的是没有mipmap的bilinear
如果只开mipmap filter不变 比如都是point 用mipmap会减少cachemissing提升性能
开mipmap之后如果用bilinear
mipmap分界处会不衔接 有肉眼可见瑕疵 性能优于三线性的mipmap