meshoptimizer 1.1:网格片压缩与不透明微映射
meshoptimizer 1.1 库的新版本新增了网格片压缩编解码器,并支持生成不透明微映射。此更新专注于 GPU 渲染的拓扑优化以及加速光线追踪。开发使用 C++ 和 JavaScript 进行,采用 MIT 许可,主要贡献来自 Valve。
三角网格优化
meshoptimizer 库优化了 GPU 管线阶段中的顶点和索引处理。算法可降低网格复杂度、最小化存储成本,并提升渲染效率。自 2017 年起,该项目不断演进,1.0 版于 2025 年 12 月发布。
相关工具:
- gltfpack:用于 glTF 文件自动优化的命令行实用工具。
- clusterlod.h:支持连续细节层次的集群 LOD 的 C/C++ 库。
网格片压缩编解码器
新技术编解码器通过利用微索引和顶点数据的局部性来压缩网格片拓扑。每个网格片独立编码,简化了并行性和运行时存储结构。
解码针对高速进行了优化:
- CPU:台式机处理器上达 7–10 GB/s,支持写合并内存。
- GPU:通过计算着色器在 RTX 5070 上超过 150 GB/s。
输出数据进一步使用 Zstandard 压缩。解码器生成每三角形 3/4 字节、每顶点 2/4 字节的格式,适用于直接 GPU 使用。
不透明微映射
函数可从网格 UV 坐标和 alpha 纹理生成硬件就绪的微映射。支持 Vulkan (VK_EXT_opacity_micromap) 和 DirectX (DXR 1.2)。
每个三角形沿 UV 分为 4^N 个微三角形。表示选项:
- 2 状态 (1 位):完全消除着色器调用,实现最大光线追踪性能。
- 4 状态 (2 位):通过纹理查找加速任意命中着色器。
通过 OMM 索引缓冲区重用三角形间的映射,以最小化内存。对于 4 状态,可回退到 2 状态。
关键要点
- 网格片编解码器在 CPU 上解压速度达 7–10 GB/s,在 GPU 上超过 150 GB/s。
- 微映射从 UV 和 alpha 生成,与 Vulkan/DirectX 兼容。
- 独立网格片编码简化并行性和运行时存储。
- 支持 1/2 位状态以优化光线追踪和着色器。
- 最终大小使用 Zstandard 额外压缩。
此更新针对使用游戏引擎进行 GPU 渲染和光线追踪的中高级开发者。集成无需更改现有管线。
— Editorial Team
暂无评论。