一个36GB的glTF文件,只装了没有材质、没有法线的三角形位置数据,却能让Blender转十分钟后耗尽内存崩掉,让Unreal Engine撑不到五分钟就死机。这个场景叫Zorah,是NVIDIA今年初为展示光追新技术RTX Mega Geometry做的演示,原本要靠自家改过的UE专用分支才能打开。9月底,NVIDIA把它以glTF格式公开出来,结果被一个开源项目接住了——meshoptimizer的作者拿这份场景当真实压力测试,几周内把处理时间从近半小时砍到几分钟,内存占用从近200GB压到几十GB。这不算什么爆炸性新闻,更像一次扎实的工程复盘,但复盘里藏着几个容易被忽略的事实。

一张能撑爆Blender的场景,到底装了什么

Zorah对应的技术叫层级聚簇LOD,自Epic Games 2021年在Unreal Engine 5发布Nanite以来,这成了处理超高精度网格的主流方式。原理不复杂:把网格切成约128个三角形一组的小簇,相邻簇合并、整体简化、再切分,反复递归,最终构建出一张能表示多种细节层级的图结构。渲染时根据画面误差动态选用合适层级,误差控制在1像素以内,切换靠时域滤波掩盖。

meshoptimizer是给这条流程提供算法零件的开源库,2024年起自带示例代码,能把切簇、分组、简化三步串起来。Zorah场景第一次给了作者一个真正巨大的样本,去检验这套代码到底扛不扛得住——16.4亿唯一三角形,实例化后近189亿,当时公开的glTF文件36.1GB,配套渲染缓存62GB。这组数字对应的是最初那版资产,后面会讲为什么这点很重要。

30分钟到3分钟,省下来的时间去哪了

用最初跑通的路径处理这份36GB文件,耗时接近30分钟,内存峰值超过180GB——192GB内存的机器几乎撑到极限,处理时压根干不了别的事。

作者做的不是重新发明算法,是把代码里浪费掉的时间和内存一项项揪出来:稀疏化临时数据结构,避免按整个网格的顶点数去清空数组;优先处理最大的网格,让线程分配更均衡;用SIMD计算包围盒,给三角形做空间排序提升缓存命中;按线程分配独立内存池;把面向光栅化和面向光追的两种聚簇算法分开优化,各自适配下游用途。

这几项叠加下来,独立测试的处理时间压到2分35秒,完整跑通NVIDIA样例整条流程(含62GB缓存序列化)大约3分20秒,内存峰值降到45到60GB

处理Zorah场景:优化前后 优化前 30分钟 完整处理耗时 180GB+ 内存峰值 优化后 2分35秒 完整处理耗时 45–60GB 内存峰值

渲染端的结果也值得记一下:用生成的几何流数据,在一张消费级的RTX 3050(8GB显存)上,靠约2GB的几何流式池渲染整个Zorah场景,光栅化约16毫秒一帧,光线追踪约26毫秒一帧。一张几百块的消费卡,靠算法工程也能扛住原本要专业级硬件才敢碰的超大场景。

别被两套数字绕进去

这里要说清一件容易被忽略的事:上面那组36.1GB、62GB、2分35秒到3分20秒,对应的是当时那一版Zorah资产。NVIDIA后来悄悄更新了公开版本(通常称为v2)——压缩源文件变成7.22GB,生成缓存约26GB,三角形规模基本不变。用v2资产重跑同一套优化后的流程,16线程下大约要6到10分钟,内存常态在29GB左右,短暂峰值44GB。

这组新数字看起来"变慢了",但跟旧版本根本不是同一个基准——场景内容和文件结构都变了,直接拿新旧耗时对比没有意义。

同一个场景,两套口径 早期公开资产 压缩源文件 36.1GB 生成缓存 62GB 优化后耗时 3分20秒 内存峰值 45–60GB 当前v2资产 压缩源文件 7.22GB 生成缓存 约26GB 16线程耗时 6–10分钟 内存常态 约29GB

这种"官方悄悄换资产,评测数字对不上"的坑,在图形圈的benchmark报道里其实常见。看到跑分对比时,先问一句是不是同一份资产,比先信数字更重要。


快是真的快,但别急着叫它成熟

NVIDIA自己的vk_lod_clusters换用meshoptimizer的构建器后,官方changelog给出的说法是速度提升约5倍、内存降低约20倍,而且结果具备确定性——这基本是硬件厂商自己认了一颗第三方开源零件比自家原方案更好用。一个人维护的开源库,被厂商官方样例采纳,在通常被专有引擎和SDK把持的图形基础设施领域,不是件小事。

算法细节,比硬件堆料更值钱

但这套技术不是没有历史包袱。翻回meshoptimizer社区两年前的讨论,层级聚簇LOD的早期实现暴露过明显问题:简化过程可能在到达单一根簇之前就卡死不动、聚簇占用率差、贪婪式分组有时会切出互不连通的碎片——一个91万三角形的角色模型,五层简化下来只压到约18万三角形,远没到理论上限。另一处讨论提到,某些边界定义下,三到五成的顶点会在早期被锁死,没法参与后续折叠。这些问题后来陆续有对应修复,但这次的复盘文章里没提这段历史,读者容易把"这次很快"直接等同于"这套东西一直很成熟"。

  • 风险.稀疏、断裂几何体(草、电线、碎石)仍是公认短板,Zorah场景里草地褪色就是官方承认的局限,靠简化算法本身很难根治,往往需要美术资产层面配合调整

也要说清另一层边界:近期一项针对meshoptimizer、CGAL、Open3D等库的独立感知对比研究,验证的是整网格简化质量,不是clusterlod这条完整的层级LOD管线——簇边界锁定、多层收敛到单一根、无缝拼接这些更细的工程问题,目前公开的第三方验证还不够。底层算法靠谱,不等于整条工业级管线可以直接搬进生产环境不做额外验证。

一个人在几周内,靠工程细节把巨头官方样例的处理效率顶上去,这事说明的是超大规模几何处理这条赛道,算法细节比硬件堆料更值钱。但历史遗留的质量坑和资产版本换代的口径混乱,不会因为一次漂亮的benchmark就自动填平。