使用Mipmap的2个优点分析

电子说

1.3w人已加入

描述

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以进行三线性过滤。这样可以有效地消除这些接缝,从而获得更高的图像质量。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分