虚幻 – Unreal Engine 5

中国区技术总监的演讲,这里做一下笔记。

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。

发表回复