都知道mipmap是图片LOD,但是这LOD的级别判定是怎么定的呢?
这里就要说一个函数了,求相邻像素的内容的变化率
对,内容的变化率,你的颜色可以代表很多含义
dFdx dFdy求x+1和y+1的像素和当前像素的差别
然后如果一张图片,我们要采样,是不是传入的参数是uv,texture
如果函数内部做了这么个操作
float dx=dFdx(uv) float dy=dFdy(uv)
这样就得到了UV的变化率,很明显嘛 如果一个图片离你很远,两个像素uv跨度直接1了,很近就0.000x这种的,于是就可以拿来决定取LOD的哪一级了
那1920像素,uv是0-1,也就是0.0005的差距是第一级,第二级的话,按道理就是分布960像素0.001
大概就是这么个意思,但是具体做法是另外的公式
float lod = 0.5 * log2(max(dot(px, px), dot(py, py)));