(摘自官网)就在不久之前,我们刚刚揭开了虚幻引擎5的神秘面纱。我们对于次世代的愿景之一就是让实时渲染细节能够媲美电影CG和真实世界,并通过高效的工具和内容库让不同规模的开发团队都能实现这一目标。

演示视频请见(翻译来自 @游研社 ):

更多背景请见:

http://unrealengine.com/blog/a-first-look-at-unreal-engine-5


很多专业回答了,别的就不多说了,补充一点儿(窃以为的)Nanite背后的核心要素技术(之一)的细节。不是科普文,只适合有一定渲染基础的人看。

https://devblogs.nvidia.com/introduction-turing-mesh-shaders/?

devblogs.nvidia.com

解释几个常见的误解:

  1. 3D scan或者Z brush的模型(几千万或者上亿面)可以直接用:对也不对。可以直接扔进游戏引擎编辑器。但是并不能直接扔进渲染管道。中间有个meshlet的剖分预计算过程。简单来说,烘培(或者模型导入)的时间更长了。(所以我觉得今后美术和关卡之间还会有一个云伺服器的距离)而且,对于复杂模型,meshlet的自动剖分不见得理想,有时候还是需要手工辅助调整;但是低模-LOD-法线烘培流水线的确可能是要被淘汰了。(well,在移动端还没有追上来之前,其实也不会淘汰,而是更加分裂)
  2. 模型存储高达*TB:对也不对。制作环境当中的原始文件(3D扫描结果或者zbrush)的存储开销的确会很大。所以采用这个新工作流的团队要考虑用中心存储替代开发人员的本地存储,并且要上万兆网。但是经过meshlet剖分计算之后的顶点存储,因为meshlet剖分,每个碎片的顶点索引可以被控制在16bit,这就可以大大压缩存储容量。

(以上回答基于技术原理推测,不代表UE5或者任何商用产品实际表现)


5/16 更新

先贴两篇很有见地的分析:

https://zhuanlan.zhihu.com/p/140943267?

zhuanlan.zhihu.com图标为什么UE5支持的多边形面数一下子提升了这么多??

www.zhihu.com图标

不管猜中没猜中,能够快速给出自己的模型,甚至付诸实践去验证,真的是非常了不起的。

在这个基础上,从我的角度点评几句。一样只是一家之言,而且也是靠猜,所以随便看看就好。

Nanite这个技术的重点是实现了高模的渲染。也就是原汁原味地渲染原始的高模,这应该是一个前提条件。无论是Tess,还是用频域变换的方法,这其实都是在低模上模拟高模,并不是也不能原汁原味地还原原本的高模。也就是说,添加出来的细节其实和原版有很多偏差。

尤其重要的是UV。Tess技术之所以没有大流行,就是因为UV极难控制。从各位大神分享的Tess的结果mesh上大家也可以看到,哪个3D模型师敢那样切割多边形,我觉得无论哪家公司都会让他第二天卷铺盖走人。

所以,我相信Nanite所存储的是原始的模型。它所解决的是如何根据屏幕自适应载入模型的问题。而不是如何从低模添加细节模仿高模的问题。

我觉得有一个细节很有意思。视频当中提到贴图基本都是8k。8k贴图的像素数是64M。这看起来好像没啥?但是视频当中还提到有个模型是3300万面。这就很有意思了,因为3300万(33M)差不多正好是64M的一半。

熟悉渲染的同学应该知道,虽然一个三角形需要3个顶点才能描述,但是对于连续的三角形,如果用triangle strip,那么理想情况下每增加一个顶点就可以增加一个三角形(另外两个顶点与别的共享)。而在实际项目当中,当然不会那么理想,但是2:1这个比例是比较常见的。

所以我们不妨大胆假设如 @ycz 所说的那样,顶点是存储在贴图上的。那么8K贴图差不多正好能存储33M三角形。也就是说,3300万面的模型顶点数据,差不多一张8K贴图就可以存完。(当然,因为顶点还有顶点属性,如UV等,可能还需要配套的一张或者几张8K贴图)。

那么这个贴图多大一张呢?对于高模,我们保守估计顶点坐标需要fp32才行。在这种情况下,一个顶点是12个位元组。当然因为GPU的对齐关系,恐怕实际按照16位元组排列会效率更高。当然多出来的4个位元组也不必浪费,用来存存PBR要的粗糙度金属度啥的,或者干脆就是顶点所在的三角形编号(面序号),都可以。

这样的情况下,非压缩纹理:64M x 16 = 1GB。很恐怖是吧,但是在PS5的5GB/s+的SSD带宽下,整体的载入时间也在200ms以下。况且这是非压缩的情况。

结合VT技术,根据实际需要载入这个纹理当中的一小块,那么就更快了。

然后这张纹理还可以做Mips。如果巧妙地在这张图上排列顶点,使得在3D空间上相邻的顶点在图上也排列在一起,那么Mips实际上就等于求相邻几个三角形的退化三角形。也就是自动实现了减面的效果。

当然这有个前提,就是要将模型正确地剖分成小碎片,避免跨越边界(导数不连续或者激变的地方)。否则Mips会将这些边缘给平滑掉。我想,Epic也有提到对导出模型的DCC工具有要求,应该也是指这个意思。可能导出的模型当中不仅仅要有mesh,还需要有子表面的分组信息,以便引擎正确将其分割到不同的VT小格子当中。

Anyway,所有一切在UE5正式公布的时候,随著文档以及源代码可见,自然会有确定的答案。但是看到即便是知乎这种并不专业的地方也能有那么多有见地的分析,十分受鼓舞,对国内数字媒体的将来发展,至少在技术层面,更加感到有信心。

顺便再说一下Lumen(对GI自身修养不够所以就只说一句):看到有回答调侃数mm到数千米的说法,其实我倒是觉得可能。这种说法其实恰恰是在暗示Lumen的GI是基于屏幕空间(像素)的,而不是基于场景坐标尺寸的。无论是几mm还是几千米,只要显示在屏幕上,就是那么点儿像素,是吧。所以它们的确是可以都被cover掉的。


Karis在奠基了UE4的PBR管线后,转身在UE5实现了革命性的virtual geometry。真鬼才!

这套out-of-core系统对未来的适应性很强,但是如果你要把这套管线发挥最大化利用的话,惊艳之余,冷静过后,我们来算算这个帐,先不说运行时,如果一个游戏全用8k贴图,上百MB的单模型资源,这游戏最后包体有多大?1T游戏不是梦!反过来,对CG来说这就不是问题了。

有同学开玩笑说,这不就是个mesh shader吗?当然不是。你考虑下virtual texture,本质不是靠暴力算的,所以VG如果继承的是VT的精神,那么他必然可以做到控制消耗,设定一个规定的大小,流式传送需要的顶点数据。

相比较Nanite是Karis的亲儿子,Lumen乍看起来很像Enlighten,熟悉UE的同学一定知道Daniel Wright,Lumen就是这位大神操刀的

补充更新:5/15

Nanite使用基于cs的软光栅。(链接文章原本有链接后来被删)

lumen使用的是非三角面的Ray tracing,场景数据结构采用SDF,voxel和height map。使用screen space技术处理微细节,sdf处理中等粒度细节,voxel处理粗粒度的细节。这些配合temporal技术来达到优化性能的目的。

ref:https://www.eurogamer.net/articles/digitalfoundry-2020-unreal-engine-5-playstation-5-tech-demo-analysis


感谢评论的反馈,发现打脸了。

因为之前并没有看到官方人员关于Lumen的官方解释,所以凭视频猜测是Lumen的实现依然基于rtx的这套方式去做。直到看到这篇采访,Brian Karis和Daniel Wright两个大佬亲自现身说法

Inside Unreal Engine 5: how Epic delivers its generational leap

确实证实了:Lumen是光追,但不是像rtx这样的三角面精确光锥,也不依赖硬体加速。

众所周知,光追直接将光描述为射线,模拟这些射线在空间里不断反弹、折射、传播。

而这里最大的计算压力,在于要计算每一条射线到底击中了哪个三角面。因为光追考虑的并非屏幕中的三角形,而是整个场景的所有三角形,大型的场景可能是上亿起算。

rtx给的思路是:我用硬体帮你加速这个计算。

而Lumen用了一个非常有意思的思路去实现:

既然找到击中哪个三角形的计算量那么大,那么我干脆不去搜索三角形,而是用其他更简化的数据结构表达这个场景。

Lumen用了三种方式去做ray trace

1.对远距离传播,使用voxel去计算

2.对中距离传播,使用distance field去计算

3.对短距离细节,使用屏幕空间计算去修正。

有趣的是,这三个方案,其实unreal都做过,分别对应SVOGI、DFGI、SSGI

SVOGI(基于voxel的GI)当年原本是UE4钦定的方案,使用voxel表达场景,搜索方式也类似BVH,只是对象是体素而不是三角形,有一定程度的简化。但这个方案,因为PS4实在跑不动而放弃,sweeney也是公开表示过郁闷之情。事实上Nvidia也做过类似的方案,叫VXGI。其实效果还算不错,但因为RTX的出现,当然是被抛弃的节奏,毕竟老黄要卖显卡。

UE4官方案例用VXGI打光,虽然AO有点过浓,但整体的品质不输lightmass太多,1050跑20fps左右

DFGI(距离场GI)是基于距离场的实现,同门师弟还有DFAO(用距离场算AO)和DFRTS(用距离场算阴影),结果后面两个保留下来了,但DFGI因为精度实在不行(其实DFAO精度也不行,但很多情况下可以接受),有诸如漏光、脏(插值不匀)等问题,最后默默的从代码库里屏蔽了。

DFGI目前已不可用,图来自UE4论坛,可以看出左下角这个图内墙照亮的区域很有限,墙的上边缘还有疑似漏光的问题

距离场的问题在于,一个模型,最多只能用64 * 64 * 64的volume texture去表达。你想像一下把一辆车切64刀,每一块下来其实都很大,根本不能精确到车身上每一个细节。在这样低精度的环境下进行raymarch,漏光的问题就很容易出现,同时一些比较细的结构产生的光照反弹、遮挡也很难表达。

另外,DFGI基于raymarch,而raymarch发射出去的射线,是有长度限制的,如果通过增大步长来提高最大距离,精度就下降;反之最大距离就不够。所以DFGI也不太适合计算长距离的GI。像视频开头那道阳光可是打亮了整个大山洞。

至于SSGI,目前是公开可用的GI功能。既然冠名screen space,那么就只能计算屏幕里能看见的光传播。但是,这种方法,不但忽略了屏幕外的光照反弹(一盏红灯照亮的区域离开了屏幕,那么SSGI会完全忽略它的亮度贡献),还无法计算屏幕中遮挡的部分(箱子后面藏一个红灯,遮挡的部分同样被忽略),结果就是这个GI的效果非常不正确。在我们的实践中,SSGI用于现代建筑的环境下还不错,但有丰富植被的自然环境效果就一般般,因为植被的层次负责,有很多像素被遮挡在后,SSGI无法对其做计算。

而Lumen,非常聪明地结合了这三个方案:

Voxel计算较慢,但可以支持远距离的搜索,那么我用来处理远距离的传播,弥补距离场raymarch的距离限制

而距离场就用来计算中距离的传播,这样raymarch的步长也可以缩短,提高精度

Voxel和距离场完成了主要的空间级传播,解决了屏幕空间没法表达整个立体空间的问题。而距离场的精度问题最后用屏幕空间的信息修正一下。

除了Lumen,采访中也提到,Nanite基于自己的compute shader实现软光栅化,Mesh shader和Primitive shader都只是备胎。

这对老黄的N卡来说,可不是好消息。

Lumen这个方案有优秀的跨平台性且开源,各大厂可能纷纷效仿。

RTX虽然提供了精确三角面碰撞计算,但问题是性能又远达不到支撑完全GI的程度,使用降噪方案,画质上未必有绝对优势,但性能却也是刚刚及格,硬体却贵的要命。

老黄的显卡可还怎么卖~

当时看到Turing架构的时候,虽然觉得牛逼,但隐隐也会想,把需要高度自由定制的关键演算法做到硬体里,到底是不是一个好的选择。毕竟,软体可以迭代,硬体是固化的。如果硬体满足不了演算法的需求,那这个就变成了摆设。

接下来Nvidia怎么推动技术标准的演化,拭目以待。

(A卡:???)


(原答案,大的结论被打脸,可以看上文,但是几个分析还是有效的,新的Lumen方案是否能解决,我们依然需要观察)

来聊一下视频里没有提到的光追坑

目测lumen大概率就是现在rtx光追的威力加强版(支持了AMD平台),因为目前UE4.25有的坑似乎一个没少。

1.在光照剧烈变化的时候,暗部的GI噪点依然存在,这个是由于目前GI都是分帧叠加再去噪,所以光照变化的时候由于叠加历史不正确而出现噪点。平时有直接光照所以看不大出来,但暗部因为只有GI就会比较明显。

(仔细看暗部,会发现有一种模糊感,建议直接看原视频1080p,知乎图片压缩比较难看清)

(之前测试使用final gather模式的RTGI照亮暗部,因为精度和杂讯的缘故,产生的光照也具有这种难以描述的模糊感,但性能确实轻松达到30fps+的水平,1080p+rtx2060)

2.视频规避了植被,因为目前光追需要持续构建BVH,静态物件可以只构建一次,但画面中有海量带顶点动画的植被就需要每帧都刷新海量的BVH,是性能硬伤,目前似乎也还没有人提出比较完美的解决方案。4.24提供的顶点动画支持也是针对单物件且需要手动开启,足见这个功能存在的性能风险。

(植被加入顶点动画后如果没有刷新BVH,那么光追阴影就会出现部分面发黑的问题,因为真正的顶点和BVH里的顶点已经匹配不上,此外墙上的投影也不会动)

3.视频里透明物件不多,透明/alpha test投影的支持目前也是一堆堆的坑,不过这些随著时间应该会逐步解决。

4.至于为什么没有顺道炫一下4.24新增的毛发系统,目前估计是对光追管线的整合不完善。这也是光追管线一个比较大的痛点,就是老的各种shading model、vertex factory都需要针对其做适配,还要考虑BVH的构建。另外这套毛发系统目前还非常非常不稳定(正在深受其害中的路过:P)

(插片实现的头发,无物理)

不过好消息是,PS5的光追性能看来是杠杠的,实时光追普及化指日可待。


至于nanite,真心的牛逼技术,应该是结合了virtual texture的思想并用mesh shader实现。其他答案里也说了不少这里就不再赘述。

不过大家千万不要觉得产品里真的随便用zbrush高模,看著红红的硬碟空间还有惨烈的导入、构建时间,我觉得大家还是会老老实实该减面减面、该烘焙法线就烘焙,毕竟virtual texture出现都有10年以上了,也没见哪个游戏真的8k贴图的随便往里塞。但是影视方面的同学确实是制作规范上解放了不少。

至于其他方面,预计UE5本质其实还是UE4.30,也就是一个功能更新比较大的迭代版本,但是大的已有模块并不会一下子都来个大翻新(比如蓝图、sequence、mobile管线等)。但即使这样,随著niagara和chaos这些东西正式化,再加上nanite这样的神级系统,你还是不能不说,UE5超香的。


就在不久之前,我们刚刚揭开了虚幻引擎5的神秘面纱。我们对于次世代的愿景之一就是让实时渲染细节能够媲美电影CG和真实世界,并通过高效的工具和内容库让不同规模的开发团队都能实现这一目标。

欢迎观看 「Lumen in the Land of Nanite」,这是一个在PlayStation 5上实时运行的实时演示:

该演示展示了虚幻引擎5的两大全新核心技术:

Nanite虚拟微多边形几何体可以让美术师们创建出人眼所能看到的一切几何体细节。Nanite虚拟几何体的出现意味著由数以亿计的多边形组成的影视级美术作品可以被直接导入虚幻引擎——无论是来自Zbrush的雕塑还是用摄影测量法扫描的CAD数据。Nanite几何体可以被实时流送和缩放,因此无需再考虑多边形数量预算、多边形内存预算或绘制次数预算了;也不用再将细节烘焙到法线贴图或手动编辑LOD,画面质量不会再有丝毫损失。

Lumen是一套全动态全局光照解决方案,能够对场景和光照变化做出实时反应,且无需专门的光线追踪硬体。该系统能在宏大而精细的场景中渲染间接镜面反射和可以无限反弹的漫反射;小到毫米级、大到千米级,Lumen都能游刃有余。美术师和设计师们可以使用Lumen创建出更动态的场景,例如改变白天的日照角度,打开手电筒或在天花板上开个洞,系统会根据情况调整间接光照。Lumen的出现将为美术师省下大量的时间,大家无需因为在虚幻编辑器中移动了光源再等待光照贴图烘焙完成,也无需再编辑光照贴图UV。同时光照效果将和在主机上运行游戏时保持完全一致。

这一品质上的飞跃得益于无数团队的努力和技术的进步。为了使用Nanite几何体技术创建巨型场景,团队大量使用了Quixel的MegaScans素材库,后者提供了具有成百上千万多边形的影视级对象。为了支持比前世代更庞大更精细的场景,PlayStation 5也大幅提升了存储带宽。

该演示还展示了现有的引擎功能,包括Chaos物理与破坏系统、Niagara VFX、卷积混响和环境立体声渲染。

虚幻引擎4与5的上线时间表

虚幻引擎4.25已经支持了索尼和微软的次世代主机平台。目前Epic正与主机制造商、多家游戏开发商及发行商密切合作,帮助他们使用虚幻引擎4开发次世代游戏。

虚幻引擎5将在2021年早些时候发布预览版,并在2021年晚些时候发布完整版。它将支持次世代主机、本世代主机、PC、Mac、iOS和Android平台。

我们正在设计向前兼容的功能,以便大家先在UE4中开始次世代开发,并在恰当的时机将项目迁移到UE5。

我们将在次世代主机发售后,让使用UE4开发的《堡垒之夜》登陆次世代主机。为了通过内部开发证明我们行业领先的技术,我们将在2021年中将该游戏迁移至UE5。

虚幻引擎的分成门槛提升至游戏总营收达到100万美元

大家仍然可以一如既往地免费下载并使用虚幻引擎开发游戏。但从今天开始,分成门槛提升到了游戏总营收首次达到100万美元时。全新的虚幻引擎许可条款将给予游戏开发者们远比其他引擎的许可模式更慷慨的待遇,且其效力可追溯至2020年1月1日。更多详情,请参见常见问题。

Epic在线服务上线!

好友、匹配、游戏大厅、成就、排行榜与账户:我们为《堡垒之夜》开发了这些服务,并使其登陆了7大主流平台——PlayStation、Xbox、Switch、PC、Mac、iOS和Android。现在,Epic在线服务将免费向全体开发者开放,只需一套简单的多平台SDK即可!

将你自己的账户服务、平台账户或Epic账户系统与这些服务混合搭配使用,就能直通由超过3.5亿玩家以及他们的22亿好友组成的庞大跨平台社区,覆盖超过5亿的设备。

联系我们

UE反馈需求:https://trello.com/b/NvJrWDb7/ue-request

虚幻引擎官方QQ群:1018846968

虚幻引擎官方B站:https://space.bilibili.com/138827797

官方社区邮箱:[email protected]

官方社区经理:大钊([email protected],QQ:2722937652)

投稿联系:知乎上私信或联系小辉辉-社区管理(QQ:258327199)


我来讲讲UE5对电影行业的影响吧。

我是电影学院摄影系的研究生,我毕业论文写的正是虚拟制作(Vitural Production),妈呀,这正准备云答辩,马上论文里三分之一的东西就要被淘汰了,我的内心是一阵崩腾。

原来这种技术的更新,一般只有CG行业的人才会格外关注,但是昨晚的朋友圈刷屏里,我身边认识的大量的摄影师、导演、电影后期制片都纷纷转发,电影人们瞬间被惊醒——什么?现在游戏都能到这个画质了?

唯一没转发的是我认识的一后期公司的老板,他只是默默得转了一句,后期公司太难了。

下面我来讲讲为什么UE5会对电影行业产生颠覆性的影响。原来电影人对于利用游戏引擎进行电影的制作的有点嗤之以鼻的。

你要是跟一个电影人说,你这个片子拍得很游戏啊!那绝对是在骂人。

但是在UE5这一波过后,你再跟电影人说你的电影拍得很游戏啊!那导演估计会觉得你把他捧得有点高了。因为目前在电影特效领域渲染的画面,还没有这个UE5demo渲染的质量高呢!

不过从行业的发展看来,UE5今天的发布,其实主要是补上了其在超高模型解析度和实时全局光照中的最大短板。

但UE在电影行业上的布局其实早就已经开始了。

过去几年里,我一直在研究如何用引擎来辅助电影创作。在之前的行业应用中,游戏引擎主要被用于电影的预览制作。

在2017年的时候,我就作为引擎技术指导参与了电影《鼠胆英雄》的预览制作中。我们当时用了UE和Unity完成了《鼠胆英雄》超过100分钟的预览画面。

当时,我们就用到了激光扫描扫描和场景重建的技术进行预演的制作。

我与技术团队前往了多个实拍取景地,利用激光三维扫描和航拍照片建模的方式,对场景进行三维扫描。并利用这些数据进行了场景的三维重建。为《鼠胆英雄》的虚拟勘景提供了数字资产。

用激光三维扫描仪进行三维扫描

激光扫描仪生成的全景图

激光扫描仪的基本原理与激光测距仪一样,它利用不断旋转的反射镜向外不断发射激光,并计算激光反射回来的时间差,从而得之该点到扫描仪之间的距离。当激光扫描仪旋转一圈之后,则可以获得周围一切物体与扫描仪之间的距离,形成点云文件。激光扫描同时也会拍摄全景照片,通过将点云和全景照片进行像素和点的位置的一一对应,就可以得到带有色彩信息的点云文件。

激光扫描出来的模型

因此,可以将无人机拍摄的照片映射在激光扫描的模型上,最终生成带有高清贴图的模型文件。

经过贴图处理后,导入至游戏引擎里

当时,我们利用这样的制作流程,将完全物理精确的场景信息,通过激光三维扫描还原到虚拟场景中,这样后期就可以进行VR虚拟堪景和虚拟拍摄了。

我拿著虚拟摄影机在虚拟场景中进行测试

但在2017年的时候,我们仅仅能利用这个技术进行虚拟预演。但因为引擎的画质还是离影视级差距太大,这些预演数据只是可以进行参考作用,而无法进行实际电影的拍摄。事实上我们当时压根就没想到用这个东西能拍正式的影片。

但现在UE5更新之后,我们可以直接导入数以亿计的三角面,也就是说,我们利用激光扫描仪和照片建模出来的毫米级精度的数据,如今可以经过处理后直接变成引擎内的资产。(当然,实际上还需要去除光照信息,进行补面和优化等看起来很美,实际很麻烦的过程),但这至少是能在引擎内复现真实世界的一大步。 这实在是让我们做电影CG行业的太兴奋了!

想像一下,刚刚我们扫描的场景数据,可以被精确地在引擎中高质量地还原。然后我们还能制作高质量的数字角色。然后我们拥有了动作捕捉和表情捕捉技术,我们再扛上一个虚拟摄影机,我们就可以在虚拟空间内进行拍摄了!

17年摄影师利用在轨道车上架设虚拟摄影机(就是那几个小点),进行虚拟拍摄

图上那几位推轨道的和掌机的摄影师如今已经是行业内小有名气的摄影师了,而且他们估计也是最早的一批虚拟摄影师。

未来虚拟摄影师这个行业将成为摄影行业的必备技能,传统的摄影师也必须掌握虚拟拍摄技术,才能在虚拟电影制作行业内找到一席之地。



推荐阅读:
相关文章