Mipmap 级别是具有特定分辨率的纹理版本。Mipmap 级别存在于称为 Mipmaps 的集合中。Mipmaps 包含单个纹理的逐渐缩小且分辨率更低的版本。
例如,Mipmap 可能包含纹理的四个版本,从原始纹理(Mipmap 级别 0)到 Mipmap 级别 1、Mipmap 级别 2 和 Mipmap 级别 3。
Mipmaps 通常用于在 3D 场景场景包含游戏环境和菜单。可以将每个唯一的场景文件视为一个独特的关卡。在每个场景中,您放置环境、障碍物和装饰,本质上是分段设计和构建您的游戏。 更多信息
请参阅 词汇表中渲染对象,其中纹理对象与摄像机一个组件,用于创建场景中特定视点的图像。输出要么绘制到屏幕上,要么作为纹理捕获。 更多信息
请参阅 词汇表的距离可能会有所不同。更高级别的 Mipmap 用于靠近摄像机的对象,而更低级别的 Mipmap 用于更远处的对象。
在 GPU 以小于其完整分辨率渲染纹理的情况下,Mipmaps 可以加速渲染操作并减少渲染伪像。Mipmap 实际上是原始纹理的缓存、降采样版本。GPU 可以对已经降采样的版本执行较少的运算,而不是对原始的完整分辨率纹理执行许多采样运算。
有时,Mipmaps 并没有好处。Mipmaps 会将纹理的大小增加 33%,无论是在磁盘上还是在内存中。当纹理仅以其完整分辨率渲染时,例如未缩放的UI(用户界面) 允许用户与您的应用程序交互。Unity 目前支持三种 UI 系统。 更多信息
请参阅 词汇表纹理,它们也不会带来任何好处。
您可以手动为纹理创建 Mipmap,也可以指示 Unity 为您生成 Mipmap。要自动生成 Mipmap,请确保原始纹理的分辨率为 2 的幂值,如 Mipmap 示例图像所示。
您可以在纹理导入设置检查器中启用或禁用纹理资源的 Mipmaps。
当 GPU 采样纹理时,它会根据当前像素计算机图像中最小的单位。像素大小取决于屏幕分辨率。像素照明是在每个屏幕像素处计算的。 更多信息
请参阅 词汇表的纹理坐标 (UV) 和 GPU 计算的两个内部值(DDX 和 DDY)来确定要使用哪个 Mipmap 级别。
GPU 使用这些值来确定纹理的多少细节对摄像机可见。当前像素与其相邻像素之间更大的距离和更大的角度意味着 GPU 选择更低分辨率的 Mipmap 级别;更短的距离和更小的角度意味着 GPU 选择分辨率更高的 Mipmap 级别。
GPU 还可以使用三线性过滤将来自两个 Mipmap 级别的信息混合在一起。在采样时混合 Mipmap 级别可以使从一个 Mipmap 级别到另一个 Mipmap 级别的过渡不那么明显。为了混合 Mipmap 级别,GPU 会从一个 Mipmap 级别获取特定百分比的纹理信息,其余的则来自另一个 Mipmap 级别。
根据采样器设置,称为 Mipmap 偏差的设置在采样时可以执行两件事。
GPU 具有一个全局 Mipmap 偏差,它默认将其应用于其 Mipmap 级别选择。纹理可以有自己的 Mipmap 偏差,Unity 会将其添加到全局 Mipmap 偏差或从中减去。您还可以为手动编码的着色器在 GPU 上运行的程序。 更多信息
请参阅 词汇表中的单个纹理采样操作指定自己的 Mipmap 偏差。
要设置单个纹理的 Mipmap 偏差,请参阅Texture.mipMapBias。要在手动编码的着色器中设置纹理采样操作的 Mipmap 偏差,请使用 HLSL 函数,例如tex2dbias。要在 Shader Graph 中设置纹理采样操作的 Mipmap 偏差,请参阅采样纹理 2D 数组节点或采样纹理 2D 节点。
您可以使用Mipmap 流式传输控制 Unity 在运行时加载 Mipmaps 的方式。