Unity 大纹理中的 Mipmap:时序稳定性、流式处理与语义 Mipmap
Mipmaps 不仅仅是纹理的缩小副本;它们对于时间图像稳定性、带宽分配以及在不同细节层级间保持语义一致性至关重要。纹理的 Mipmap 层级选择由其投影足迹在屏幕空间中的密度驱动,而不仅仅取决于距离。双线性过滤在单个 Mipmap 内混合 texels,而三线性过滤则在两个相邻 Mipmap 之间进行插值。各向异性过滤解决了斜面上拉伸足迹的问题,这是三线性过滤无法解决的。理想的 Mipmap 采样层级可能与 GPU 内存中实际可用的最高分辨率 Mipmap 不同,这解释了剪辑后突然出现的模糊现象。完整的 Mipmap 链比仅使用 Mipmap 0 多出约 33% 的 texel 数据,其中 Mipmap 0 约占总量的 75%。禁用 Mipmaps 可能会提升单张截图的质量,但会导致动画不稳定、莫尔条纹和闪烁的高光。纹理导入设置应基于着色器的预期,其中 sRGB 是一个关键的语义考量。经过 Alpha 测试的着色器可能因平均化导致 foliage 在较低 Mipmap 层级消失,Unity 的“保留覆盖”(Preserve Coverage)功能可对此进行缓解。法线贴图的平均化会丢失方差,导致高光不稳定;这需要谨慎处理粗糙度,并可能需要几何高光抗锯齿。打包掩码纹理共享 Mipmap 策略,但其内部的不同数据类型可能需要不同的过滤或生成方法。图集溢出在较低 Mipmap 层级会加剧,因为有效填充空间减少,因此需要针对最低预期 Mipmap 进行设计。Mipmap 限制和流送充当质量调度器,根据视觉重要性优先处理纹理并管理驻留层级。可视化近似 Mipmap 层级有助于诊断问题,如 UV 密度不连续和图集溢出。