一.Mipmap的生成
    虚幻引擎在导入贴图的时候,如果贴图的尺寸是为2的N次方,那么引擎会预生成一组等比压缩的纹理,这一组纹理叫Mipmap.
    如下图所示,当导入一张10241024的原始纹理,会生成11张Mipmap
    从原始纹理2的10次方,1024
    1024分辨率,一直到2的0次方,11分辨率,共计11张纹理.
    如果是2048
    2048分辨率,则会生成12张,以此类推,目前UE5最高可以导入16384分辨率的16K纹理,则可以生成15张Mipmap。
    image.png
    最大可导入16K纹理素材
    image.png
    需要注意的一点是,如果纹理要生成mipmap,纹理的长宽都必须是2的N次方,也就是纹理的长宽像素,必须是1、2、4、6、16、32、64、128、512、1024、2048、4096、8192、16384.
    如果不是的话,则不会生成,如下图这张40004000的纹理。
    image.png
    分辨率4000
    4000无法生产Mipmap
    非正方形纹理,只要长宽像素在2的N次方范围内,也能生成Mipmap。生成的数量,以最长的边为主。
    假设一张纹理为1024256,则以最长边1024分辨率为最终生成数量,11张mipmap。这样也会产生一个BUG,某些小纹理长宽比会出错。下图,当一张1024256的图导入引擎,LOD为9\10层级时,长宽比已经不是最初的4:1了
    image.png
    image.png
    所以,非必要情况,纹理资产进引擎,最好是正方形尺寸为2的N次方。
    二、Mipmap的优点
    Mipmap纹理的优点分为两个方面,效果优化性能优化
    1.效果优化
    Mipmap的本质是为了处理场景中远处物体低频采样导致的画面失真
    比如出现闪烁或者摩尔纹
    这只是针对具有高频变换(有色彩变化)的纹理,如果纹理是一个纯色,则有没有Mipmap并没有任何影响。
    image.png
    当然,处理画面失真也只能够处理静态(频域)情况下的画面失真,如果是动态(时域)情况下(时域)的画面失真,Mipmap是无效的,比如高速位移的纹理。

    2.性能优化
    Mipmap是以空间换时间形式的性能优化。能够有效降低显存带宽的占用,以更快的时间渲染,因为根据相机距离,加载了小分辨率的贴图。
    但是内存的占用提高了三分之一。
    同一张纹理,生成Mipmap和不生成Mipmap,内存的占用相差了三分之一。
    image.png
    三、缺点
    缺点主要是因为远处的物体加载了低分辨率的贴图,导致效果上产生了差异。
    1.Mask纹理透明
    对于具有精细Mask纹理的材质,相机距离过远,Mask切换成了精度较低的纹理,会导致材质出现错误。比如植被的树叶消失。
    image.png
    image.png
    解决方法:将Opacity Mask Clip Value改成0.01
    image.png
    2.法线失真
    相机拉远的同时,材质的法线纹理切换为小分辨率的贴图,会导致模型表面变得光滑,材质效果失真。
    早在很久很久以前,人们就发现了这个问题,针对这个问题的解决方案也很多。
    从最早04年Michael Toksvig的Mipmapping Normal Maps这篇文章采用正态分布的方法进行处理法线贴图
    image.png
    以及https://www.cs.columbia.edu/cg/normalmap/normalmap.pdf

    到后面将粗糙度写入法线纹理中,以纠正小Mipmap的法线贴图导致法线丢失但是相对的增加粗糙度来修正这个问题。
    可以参考https://media.steampowered.com/apps/valve/2015/Alex_Vlachos_Advanced_VR_Rendering_GDC2015.pdf
    如下图
    image.png
    image.png
    UE里面也有相关的问题,简单通过材质修正了一下,通过mipmap提高了远处的粗糙度
    image.png
    修正前
    image.png
    修正后,根据距离提高了远处的粗糙度
    四、UE贴图Mipmap相关参数
    相关参数只有这些,官方文档有详细解释
    image.png
    官方文档:
    https://docs.unrealengine.com/4.27/zh-CN/RenderingAndGraphics/Textures/Properties/docs.unrealengine.com/4.27/zh-CN/RenderingAndGraphics/Textures/Properties/
    有一点需要注意的是,不同的纹理组的设置,在Texture Streaming的加载是有优先级的
    角色相关的贴图和部分植被相关的贴图,Mipmap的加载优先级要高于其他的。
    image.png
    角色相关的贴图更优先加载

    文章转载自:https://zhuanlan.zhihu.com/p/425649398 侵删!