问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

《黑神话:悟空》图形评测:9 分,极其优秀的全局光照和几何系统

创作时间:
作者:
@小白创作中心

《黑神话:悟空》图形评测:9 分,极其优秀的全局光照和几何系统

引用
1
来源
1.
http://www.bilibili.com/read/cv37398790/

《黑神话:悟空》是一款使用 UE5 引擎的动作游戏。它的闪光点在于使用了 UE5 的两项突破性的技术:Lumen 和 Nanite,这使得游戏的图形表现十分优秀。但是 PS5 版糟糕的上采样技术(PC 版的 FSR)使得观感得到了折扣,它造成了太多伪影。其次,黑神话也存在场景可见度剔除所导致的无法忽略的光照错误。本文将主要解析黑神话的 Lumen 光照管线,Nanite 几何管线以及上采样技术等。

Lumen 光照系统

黑神话是一款如假包换的光追游戏,虽然里面有个英伟达单独提供的“全景光线追踪”的方案,但是全局光照开到“中”就已经暗中启动了 Lumen 光追。

Lumen 是近十几年来先进游戏全局光照技术的集大成者。它结合了光线追踪和光栅化的方案,并且也有诸多创新。

首先,Lumen 有着屏幕空间和世界空间方案的结合

Lumen 使用了屏幕空间追踪的反射,以及根据屏幕空间向场景内部撒的光追探针。

世界空间方面,为了更好解决远距离全局光照噪点多的情况,对世界空间专门撒探针进行单独采样,再与已有的光照信息进行插值,得到高质量的距离光。

其次是,Lumen 光追和传统实时光追有着本质上的差别。

传统实时光追的大致流程是:

光线追踪 Mesh BVH 加速结构 - 交点几何信息 - 交点材质信息 -(可选多次反弹,回到第一步)- 着色

Lumen 光追的大致流程是:

(1.8m 以内近距离)光线步进高精度 Mesh DF - 交点几何信息 - 采样 Surface Cache - 交点材质信息 - 着色 - 写入 Radiance Cache - 时域累积/模拟无限反弹

(1.8-200m 较远距离)体素追踪低精度 Global DF - 交点几何信息 - 采样 Radiance Cache 并注入体素 - 时域累积/模拟无限反弹

(200m 远距离)光线距离无穷大 - 采样天空盒

SDF 全称Signed Distance Field,中文名叫“符号距离场”, 是一种几何体代理,它可以根据原有几何体预先烘焙,光线追踪时只是个索引距离的过程,无需实时像 BVH 加速结构那样构建,大大节约了性能,但是精度低,还有一个缺点后面会提。

SDF 还有个特点就是连续可导,不过这个应该是可微渲染才会重点讨论的话题。

Surface Cache 和 Radiance Cache 也是 Lumen 场景的核心。

因为 SDF 只是个表达距离的函数,光线与它求交并不能获取 Material 信息,自然就索引不到例如 Albedo, Normal, Emissive, Direct Lighting 等,于是 Lumen 会实时为每个物件构造表面缓存(Surface Cache)来使得 SDF 追踪的过程中有材质信息可以用。

Surface Cache 可看作一种微型 G-Buffer,表现出来的就是下图所示的一堆 Card,最后将整合到一个巨大的 Texture Atlas 里。

Surface Cache 可以为 Lumen 光追提供采样方向的信息。

Lumen 光追和传统光追还有个巨大的不同就是,它并没有 Secondary Ray,也就是没有二次反弹。

它的间接光照来自于从 Surface Cache 发射光线,光线与低精度 Global DF 求交,并在交点处复用上一帧体素光照(涉及 2nd-order SH 编码)并再写入 Radiance Cache,如此往复下去,便做到了无限次反弹的漫反射间接光照。

在重要性采样的方面,Lumen 利用 G-Buffer 里的 BRDF 数值来调整采样权重,这使得光照贡献更多的地方能分配到较多采样资源,而 BRDF 等于 0 的地方则直接不发射光线以节约性能。

我们不难发现,Lumen 使用了很多低精度的解决方案,这抓住了漫反射间接光照本身非常低频的特点,就算是使用低精度缓存以及 SDF 也无伤大雅。

在 Lumen 的加持下,无论是近距还是远距光照,黑神话的表现都非常优秀。

以一开始的场景为例。近距:

远距:

可惜的是,黑神话的 Lumen 并没有硬件加速,这使得现代光追 GPU 并没有得到较完全的性能发挥,这是扣分项。

全景光线追踪

“全景光线追踪”是英伟达自己制造的商业宣传名词,大概意思就是“纯光追”,技术上来看就是使用了路径追踪渲染管线,这个问题也不需要过多讨论,因为对我而言讨论起来就是无底洞,我不想在这篇讨论游戏技术的文章里复习渲染方程,蒙特卡洛积分估计等枯燥的学术理论。

符合全景光追的游戏其实早就有了,比如 Quake II RTX,Minecraft RTX,它们的光照效果的确令人惊叹,由于路径追踪一直以来都只在离线渲染领域里铺开,之前游戏领域对它的关注少之又少(因为实在是难以实时地跑起来)。直到英伟达提出了它的圈钱战略构想:

不过话说回来,虽然全景光追达到了技术上都是真·影视级的渲染,但由于 Lumen 实在是太优秀了,导致英伟达全景光追的优势在黑神话里实在不太明显。

所以我建议显卡性能不高的玩家不要开启全景光追。

Nanite 几何管线

Nanite 是一个划时代的GPU-Driven的几何处理技术,它与 Mesh Shader 类似,但是是完全不一样的工程实现。

传统的几何管线需要单独设置几套不同精度的模型来实现 LoD 切换,而 Nanite 由于 GPU 高度掌控几何体的线程组(可以控制线程数量),可以实时通过开关线程来实现全自动 LoD(一个线程对应一个基本几何基元,例如顶点)。

同时,GPU-Driven 也使得运行几何管线时 CPU 的负担得到降低。

其次是软光栅,由于现存所有 GPU 架构中的 Raster Engine 光栅化小三角形(接近像素大小甚至更小的三角形)的效率都极为低下,并且造成数量恐怖的过度绘制,游戏实现了大三角形 / 非 Nanite 几何使用 Raster Engine 光栅化,小三角形用 Compute Shader 做软光栅以及小三角形剔除

说到剔除,Nanite 的剔除效率很高。有实例剔除(针对单个 Mesh / 物件)、层级剔除(剔除 Cluster 组)和单个 Cluster 剔除等多管齐下,性能表现优异。

关于粒子、后处理系统,它们的效果同样是很好的,不必多说。

超采样

黑神话提供了 TSR,FSR,DLSS,XeSS 四种超采样技术。

其中 TSR 是 UE5 自己的一个上采样技术,主要是动态分辨率。

其它三个分别为 AMD,英伟达和英特尔的 GPU 架构所服务,所以对于各家显卡而言都建议优先选择自家显卡的上采样技术。

除了 AMD FSR 在黑神话里的表现是真的太垃圾了,动起来 artifact 一大堆,尤其是 PS5 是强制开启 FSR 上采样,所以我觉得 FSR 的垃圾表现是个扣分项。

我觉得这个“超采样清晰度”这个选项是很迷惑人的,给人一种锐化选项的感觉。把这个选项改为“实际渲染比率” 要更明了一点。

非 Ada 架构显卡用户也可以开 FSR / TSR 进行补帧,建议在原始帧率稳定 40 FPS 以上时开启,否则手感稀烂。

漏洞

最后留一个图形问题,什么上采样瑕疵其实都可以不管了,这个应该是最恶劣的,留点心的玩家应该都会发现某些场景(尤其是场景过渡处)会发生巨大的光照变化:

移动一小步后:

我猜测是场景可见度系统错误地剔除了几何体,导致了光照错误。我不是很熟悉 UE5 开发,于是不做进一步评价。

结语

虽然仍存在一些图形问题,但是黑神话的总体表现确实是十分优秀的,是次世代应有的水平。作为第一款国产 3A,它的表现确对得起我的期待。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号