UE 知识卡片Nanite PipelineDebug
Nanite:从导入到像素
Clustering → Culling → Streaming → Soft Raster → Shade:整条路径,以及什么时候不该用 Nanite。
Question
详细解释 Nanite 从导入到最终像素的处理;聚焦 clustering、culling、on-demand streaming。讨论 Nanite 不是最佳解的场景与根因,以及如何调试性能/伪影。
管线一览
1. Ingest高模 → 分层 Cluster 树 + 压缩
2. Cull簇级视锥/遮挡/屏幕贡献剔除
3. Stream按需从盘流送可见簇(偏爱 SSD)
4. Raster+Shade软件光栅 → 材质 ID → 按材质着色
- 数据摄取:静态网格转内部格式,生成多分辨率 Cluster 树,自动连续 LOD。
- 剔除:在极细粒度上丢弃被遮挡、出屏、或当前分辨率不可感知的簇。
- 按需流送:只把当前视图需要的簇装入内存,降低常驻占用。
- 软件光栅化:产出紧凑深度缓冲 + 材质 ID;亚像素级解析可见性。
- 着色:通常按材质发 draw;着色成本与几何复杂度解耦。
什么时候不该用
| 场景 | 根因 |
|---|---|
| 半透明 / 难搞的 Masked | 深度优先 + 紧凑可见性表示与排序/discard 冲突 |
| 骨骼 / 布料 / 流体等变形 | 预计算簇与剔除每帧失效,重算吞掉优势 |
| 极薄/聚合几何(发丝、碎叶) | 微簇管理开销 > 收益,overdraw / 闪烁风险高 |
| 运行时细分/置换 | 与预处理虚拟化数据结构冲突 |
| 极简低模 | Nanite 基线开销可能高于传统路径 |
调试清单
| 工具 | 看什么 |
|---|---|
r.Nanite.Visualize | 总览 Nanite 行为 |
r.Nanite.Visualize.Clusters | 簇划分是否合理(薄几何尤其) |
r.Nanite.Visualize.Overdraw | 同像素多次绘制热点 |
r.Nanite.Visualize.PageStreaming | 流送瓶颈 |
stat GPU / Insights | Nanite.Raster / Nanite.Render 计时 |
材质提醒:Masked、WPO、PDO 在 Nanite 上可能特别贵。植被/头发若 Nanite 吃力,考虑实例化静态网格 + LOD 或专用路径。