图形学mipmap/ripmap/SAT原理详解

您所在的位置:网站首页 最大各向异性2k什么意思 图形学mipmap/ripmap/SAT原理详解

图形学mipmap/ripmap/SAT原理详解

2024-07-12 03:38| 来源: 网络整理| 查看: 265

参考来源: TA百人计划/GAMES101 屏幕光栅化后对采样后,如果不是1:1对应,会出现两种情况

像素分辨率>纹理分辨率 一个texel对应多个pixel,顶点的uv映射到纹理上不是整数值 (纹理被拉伸) 1.取最近邻方法时,相邻的pixel会对应到相同的texel上 2.双线性插值时,会计算映射到纹理中上下左右四个texel进行混合

无论如何,都不能得到11对应的关系,即像素会出现模糊(blur)

像素分辨率像素分辨率的情况

这里省略mipmap的原理,详情参考b站GAMES101中的纹理章节 以下两种情况为mipmap映射完全正常的情况,即pixel:texel=1:1,每个像素都能在mipmap对应层数中找到11对应的纹理进行采样

当pixel:texel不为1:1时,传统的mipmap做法: 以长边为基准选择mipmap层数,此处因为竖直方向上pixel:texel=1:2所以选择第1层

竖直方向上第0层mipmap为1:2,第1层mipmap为1:1,正确采样 水平方向上第0层mipmap为1:1,第1层为2:1,一个pixel对应2个texel,所以采样到了纹理中对应位置更远的texel,而这个texel可能也同时被与2相邻的pixel也采样到了,所以pixel2和其他pixel可能共同对应同一个texel.就造成了过度模糊(overblur)

针对mipmap只能解决正方形映射的解决方法1: 各向异性过滤 在横竖各压缩2倍的mipmap的基础上,额外生成横竖压缩比不同的图 uv长度不同时查询到对应的map就能实现1:1映射 缺点: 1.mipmap只占用额外1/3内存开销,但是ripmap会占用额外3倍内存开销,用不起 2.只能解决水平和竖直方向上比例不等的问题,如果出现映射到斜角上的纹理无法解决

解决方法2:通过额外存储一张SAT纹理表 SAT纹理上记录了纹理某位置(u,v)距离原点(0,0)所包围的矩形中覆盖了多少texel 计算时通过取4个顶点的uv值在SAT图中查询就可以得知4个顶点所包围的任意矩形内的texel数量,从而在插值时精确的计算出1:1的结果 缺点:内存开销过大

对于各向异性过滤中不能采样有角度的矩形的解决方法1:

解决办法2: 现代GPU会在MipMap的基础上通过多次采样近似RipMap的效果,而不是存一张ripmap的纹理图 所以在解决各向异性过滤的同时仍然只占用mipmap额外空间的大小(1/3)而不是3倍 具体如下图 上面提到了传统的mipmap中以映射到纹理中的最长边来选择mipmap层数 导致的问题是虽然长边方向能够做到1:1映射,但是短边方向会出现过度模糊 而现代ripmap会根据最短边来选择mipmap层数,然后沿着长边作为各向异性线,沿着线的方向多次采样并合成,例如u:v为1:2,则采样数量为1:1的两倍 具体过程: 优点:各向异性线无方向性,无论任何角度的矩形都能够1:1采样 缺点:采样(计算量大),并且因为采用三线性插值,如果为16x各向异性,则最大的计算量可能需要128次采样 (三线性插值,如果1:1需要采样8个纹理值 16x时,u:v=16(ripmap中最左下角和右上角的纹理图) 8*16=128



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3