目录
中国区技术总监的演讲,这里做一下笔记。
Nanite
- PC, PS5, XBox Series X/S
- 相比去年的在品质和效率做了提升
- 磁盘存储的压缩和转码
- 支持 Lightmap/Lightmass 2
- 支持破碎物(Geometry Collection)
- 可生成减面后的高质量代替 Mesh
- Ray Tracing 和物理用
- Cluster 生成
- 原始 Mesh LOD0 数据做 Graph Partition
- 一均匀面积和最少边界等条件 Group
- 锁边见面到 Group 原始的一半
- 在 Group 内重新划分新的 Cluster
- 依次直至只有一个 Cluster
- 每个 Cluster 存自己减面后的 Error及 Group Error
- 保证 Cluster 在 DAG 中的 Error 是单调降序的,这时候 Cluster 数量已生成完了。 Cluster 总数是包括每一节 LOD 。效率低(但是人家牛逼)
- 对所有 LOD 的 Cluster分别生成 BVH
- 把每一级 LOD 的 BVH 挂到总的 BVH Root 下。(每个 Mesh 只有一个 BVH ,源码在 Nanite Include 里?)
下面的是展望:
- 支持更多的材质类型
- 内存、性能和质量的进一步完善
- VSM 改进
裁剪流程
- 裁剪和 LOD 选择
- 开足够多的 Persistent 线程做 Culling (多生产者多消费者,这里不要和 这个文章 搞混了)
- MPMC 的 Task 队列
- 利用 BVH 结构做基于 Group 的粗 Culling
- 对剩下的叶子 Group 中的 Cluster 做实际的 Culling
- Culling 条件和 LOD 选择条件一致 每一级 Cluster 其实是下一级的 Group
- 光栅化
- Visibility Buffer: 64位 Depth30: InstanceID37: TriangleID7
- 一个 Draw 画完所有的 Opaque 对象
- 后续的材质 Pass 输出到 GBuffer
- 像素大小的三角面光栅化
- 以 Cluster 为粒度决定软件光栅 VS 硬件光栅(大的网格走的硬件)小的用 Compute Shader
- 并行处理,利用64位的原子操作,主机硬件都支持的,PC啥也支持的。
材质
-
每个 Cluster 32 位
-
两种编码共享,支持最多 64 种材质
-
MaterialID 表
-
材质深度
-
基于屏幕 Tile 的 InstancedDraw 绘制每种可见的 MaterialID 一个屏幕能看到的材质就这几种,做材质深度的写入
-
深度用 24 位存储。画不到的地方会在 VS 干掉。
-
串流
- Culling 算法不感知
- 始终在 GPU 保留 Culling 的层级结构,只 Streaming 纯几何数据,这里防止过好多帧才可以请求到数据
- 以 Cluster Group 为 Streaming 粒度
- 以 Page 对齐,为了减少内存或者显存的碎片,以 Cluster Group 为 Page 。Cluster Root 放到 Page 0 。
- 加载完 Page 后修复数据,分割条件其实是以 Cluster Group 为单位的,但是存储是按照 Page 存储的。
压缩
- 通用压缩很难有成倍的改善
- 利用通用的硬件压缩,调整特定数据优势
- 内存格式
- 存储格式
首先硬件的压缩是免费的。首先让数据尽可能的重复高,哈夫曼算法。有点 ECS 那味了。相同类型排在一块。
未来
- Virtual Shadow Map (SDF不是未来了嘛)
- TSR
- Nanite 的未来计划
Lumen
- 间接光/天光阴影
- 自发光材质
- 多次反弹的 GI
- 反射
- 反射中带有 Diffuse GI (Diffuse不是常量吗,这个是啥意思)
- 可选的硬件光锥
- PC, PS5, Xbox Series X/S
- 简化集中的用户设置
- EA 版本主机30HZ
下面的是展望
- 开放大世界的支持 – 超远距离的 GI,地形的 GI
Platforms
主机
-
正在完善中的 Turnkey 工作流
-
完整的 PS5/XSX 支持(4.25plus、4.26 中就有)
-
改用 GDK for Windows & XBox 1/X
-
清理了 DX 和 PC 上的 DX12 的不统一
-
大量内存优化(尤其是 DX12 的)
-
改善了每帧中间显存资源的复用
-
TSR 针对主机硬件的优化
-
对主机光追的支持(5.0将会有 Production Ready 的完善支持)
-
全新的加载模块:IoStore/Zen Loader 已经在EA版本的主机上默认开启
-
次世代的美术管线能达到 Production Ready
-
通过堡垒之夜和 Demo 在主机上做足够的验证
-
主机 GPU 的内存可视化工具 (Insights)
-
主机的 Timing Insights (Context 切换)
-
默认打开 IOStore/Zen Loader
Cooking / 主机工作流 日哦
Mobile
-
初始的 Turnkey 工作流支持
- Android on Windows
- iOS on Mac
-
移动的延迟渲染进入 Beta 阶段
-
iOS 工具链的可靠性有了很好的改进,
移动端跑 Nanite 和 Lumen 哈哈。
构建大世界的工具集
-
World Partition
- Data Layers 纵向帮你做切分
- 支持 Nanite 的 HLOD 生成
-
Level Instance 把 Actor 看成一个 Actor 。
-
One File Per Actor 减少每次操作锁的粒度。美术操作友好?
-
辅助工具
- 对于小地图不引入大世界流程
- 自动转换 UE4 关卡到 World Partition
-
Production Ready
-
支撑烘焙
日哦
支撑大世界、大量对象书。大量资产的性能
编辑器和用户体验的改进
我不想记录了,自己看把。。。
动画技术
-
脚本话可扩展的动画编辑器
-
Blendspace 2.0
-
Motion Warping(Contextual Animations)
-
Slope Warping + FBIK
-
Control Rig – 封装,函数,PBIK
-
Pose 库,Tweening 工具(Animation In Engine)
-
MotionMatching
-
数据驱动的 Pose Warping
-
Contextual Animation 编辑器
-
FBIK 目标系统
-
IK Rig 资源和配套的编辑器
-
骨架映射
日哦
Chaos / 网络同步的物理系统
MetaSounds – WIP
- 全新引入的高效的音频系统。
- MetaSounds 提供音效参数
- MetaSounds 对比以前的 SoundCues 系统极大的改善了性能
Other Features
- Quartz – 可交互的音乐系统
- Synesthesia – 全新的实时音频分析API
- 音频。。。
Chaos 物理
-
从 EA 版本开始作为默认的物理引擎
-
之后的某个版本将会完全去掉 PhysX 的支持
-
从去年2月就已经作为默认物理引擎在堡垒之夜和所有内部项目中使用
-
正在积极修复 Bug 和改善性能
-
对物理模拟网络同步的支持
-
异步的物理模拟
-
体积场 + RBAN
日哦
Insights
- 提供了全新的 Memory Insights ,能做完善的内存 Profiling,泄露检查。
AncientGame
Meta Human Creator
- MHC 是通过云平台帮助你快速简单创建出高质量数字角色工具
Audio
Metasounds
- 所有功能都达到 Production Ready 状态
- 实现资源实例化和 MetaSound 组合
- 提供全新工具
日哦
更新全新的模板和示例项目
- 全新的 Mannequins(男性女性各有一个)
- 更新或全新的 Start
日哦
4.27主要是为了非游戏用户。主要改善是 Path Tracing。