电子说
Mipmap是纹理图像的较小的预滤波变体,表示纹理的不同细节层次(LOD)。通过使用mipmap的缩小过滤器模式,Graphics Core可以设置为自动计算哪个LOD最接近将mipmap的纹理元素映射到渲染目标中的像素,并使用正确的mipmap 进行纹理化。
使用 Mipmap 有两个重要的优点:
• 通过大幅提高纹理缓存效率来提高性能, 特别是在强缩小的情况下。
• 通过消除不使用 mipmapping 的纹理采样而造成的混叠,从而提高图像质量。
mipmapping 的单一限制是每个图像需要大约三分之一的纹理内存。根据情况,与渲染速度和图像质量方面的好处相比,这个成本可能很小。在某些情况下,不应使用Mipmap。具体来说,在不能合理应用过滤的情况下,不应使用mipmapping,例如包含非图像数据(如索引或深度纹理)的纹理。对于从不缩小的纹理也应该避免,例如,UI元素中的纹理元素总是与像素一一映射。
理想情况下,应该使用诸如PVRTexTool之类的工具离线创建mipmap,该工具可作为PowerVR图形SDK的一部分提供。可以在运行时生成mipmap,这对于更新渲染纹理目标的mipmap非常有用。在OpenGL ES中,可以使用函数glGenerateMipmap来实现。在Vulkan中没有这样的内置函数,开发人员必须手动生成它们。这不适用于PVRTC纹理,它必须离线生成mipmap。必须决定哪一个代价是最合适的,离线生成的存储成本还是运行时间成本(在Vulkan的情况下增加代码复杂度)在运行时生成mipmap。
最后,应该注意的是,在mipmap级别之间缺少过滤可能导致在mipmap过渡处出现可见的接缝,这是一种称为“mipmap banding”的人工制品形式。 OpenGL ES中的三线性滤波可以通过使用滤波器模式GL_LINEAR_MIPMAP_LINEAR来实现。在Vulkan中,过滤模式应该设置为VK_SAMPLER_MIPMAP_MODE_LINEAR以进行三线性过滤。这样可以有效地消除这些接缝,从而获得更高的图像质量。
全部0条评论
快来发表一下你的评论吧 !