虚幻5到底有什么好激动的?哪些是真的哪些是假的?
虚幻5展望视频
https://www.zhihu.com/video/1244680962706640896
昨天EPIC发布了Unreal5+PS5的实机视频,朋友圈转疯了,我也成为其中一员。放下技术不谈,单单视频中展示的镜头运用,就值得我们大喊一声“虚幻牛啤!”。
这一年多,我也断断续续的做着渲染相关的工作,抱着学习+科普的心态,我想谈谈对它的一些看法,特别是Nanite。
先说结论:虚幻的确做了很多很棒的功能!但有些功能也没有描述的那么神秘,更有些功能,我怀疑它仅仅是一个概念,比如Nanite。
不过这些概念也值得我们为之兴奋!
Nanite
简称,让你随时随地、无限制、瞎放、上亿面数、影视级别模型的功能。
我怀疑这个名字取自日语——纳尼?!
要想知道视频中描述得有多厉害,我们得先知道游戏中模型使用的现状是什么样的。
首先,模型的三角面数量,一直是影响性能最重要指标之一,为避免不小心使用到Unreal这么强的优化功能,我用我熟悉的unity引擎尝试了一下GTX 1050对三角面数量的反应。
密密麻麻的这些都是一个个小模型,我用一些方法控制了视频中说的DrawCall,也就是绘制调用次数,这个场景的三角面数量达到了6990万,可以看到我可怜的显卡已经扛不住了,只剩下2.5帧,也就是说一秒钟你最多看到画面动3下,而一款正常的游戏,至少得保证帧率达到20。在这样的前提条件下,虚幻开口了:
不得不说,光是这一个功能,就足以颠覆整个游戏行业。
还没来得及尖叫,它开始了下一个劲爆的点:
绘制调用次数和内存也不用考虑了!
我再次做了实验
绘制次数54000次,三角面数600万,3.9帧。太细节的就不讨论了,我只想说,绘制次数也是影响性能的关键因素,而Unreal说了,这你也不用管!
而内存呢,内存大家熟悉,但大家可能不太熟悉模型会占多少内存,我看了几个模型,大概5万面的模型会占2M的内存,其实并不算大,但是每个模型需要有贴图,贴图占的内存大小随着规格变化最近大家说的4k贴图,就是4096*4096的贴图,会占20M左右的内存,显然高精度的贴图会带来质量上的提升,但是内存也是指数级增长的,所以有时候不是游戏美术不想把图做好看,把模型做精细,是因为内存实在不足。我们粗略估算就会发现,8G的内存只足够放大概50个5万面带一张4k贴图的模型。
但是人Unreal模型用起来是这样的:
贴图用起来是这样的
美术工作起来是这样的
这么看来,如果不是PS5性能甩了2080ti上千条街,就是EPIC进行了一项空前绝后的优化。
本来需要美术从业人员花大量时间精力去完成的事情,全部都不用做了,只要发挥你的艺术才能,在ZBrush中雕刻出你想要的模型,放进游戏就行,或者哪天灵光一动,扫描一个物件生成模型就完了。
可能说到这里,你也不理解这到底有多棒,我粗略的帮助大家感受一下。
传统的制作一个游戏所需模型要经历这样的步骤,先花钱画出原画,并突出模型细节和特点,根据需要画出三视图。再花钱制作精模,也就是视频中说的影视级别的模型,要求极致的展现所有细节,包括贴图。再花钱根据精模制作面数比较少的低模,这一步根据要求需要制作法线贴图、凹凸贴图等。这很有效,这些贴图可以增加模型的细节,让面数很少的模型,也看起来很精细。
有法线贴图
无法线贴图
基本上每一次需要改动游戏模型,都要回到第一步,从头开始制作,才能保证模型的质量,控制住模型的三角面数量。
不仅如此,为了满足越来越高的美术需求,游戏项目组还需要聘请专门做这方面的技术人员,做对应的优化,针对现有的素材,提高表现力,用一些方法,弥补三角面数量不足的缺憾。
如果Nanite实现,这一切都变得无意义,所有的流程都是那么的苍白无力,估计至少可以给游戏制作节约50%的成本。甚至更高。
我尝试着推测它的实现方式,视频中还是有提到一点点它的实现方式
但..我的想象力不足以想象它的实现方式。
前面提及的每一个“不需要考虑”的点,都是目前做实时渲染最需要考虑的内容,Nanite一旦实现,于我来说,跟“永动机实现”带来的震惊不相上下。
所以我认为它仅仅只是一个概念,尽管我真的非常希望它是真的。
Lumen
这个功能就不像前面说的这么离谱了,可以说现在就有现成的方案可以实现。
光线跟踪最大的问题在于同时需要计算的量太大了。
你可以想象一下,为了得到好的效果,光射进场景里,遇到的每一个像素点,都需要判断是否到达表面,反射、计算衰减、计算光在表面的影响,遇到新的表面,再反射、再衰减再影响,直到光的能量耗尽。
如果想模拟真实的全局光照,至少要进行5次以上的光线跟踪,这样的计算量想要做到实时渲染,一直是个难题。
近年来的成熟方案就是SVO+光线跟踪,简单的解释就是,把复杂的物体先分成很多个小块,用一种数据结构组织好,只计算块与块之间的光线方向变化,而不是用像素点计算,这样极大的缩小的计算量级。
再加上光线跟踪的计算不是在一帧内完成的,分成了多帧完成,就极大缓解了计算带来的压力。可以看出,Unreal也是分了多帧计算的。
仔细观察,你会发现上面这两张图,直接光照方向是一样的,但是洞穴等间接光照的效果都是慢慢出现的。这就是多帧计算的表现,把视频拉到这一段,很容易观察到这种表现。
这个功能还是很棒的,如果能够在Unreal5中开放使用,能极大的提高画面表现力,也就是视频中说的,减少迭代时间。期待。
其他提到的功能,粒子特效/Chaos/卷积混响等,在之前的Unreal大会上就有透露,也是很棒的功能,Chaos能够模拟物体碎裂的效果,不过也是预先生成好的,在实时运行想时候播放一段动画,我第一次看到也十分的激动,但比起前面两个功能,特别是比起Nanite,就显得没那么吸引人了。
最后,由衷希望明年EPIC能够拿出Nanite并重重的打我脸。
希望游戏开发生态越变越好吧,期待Unreal带来更多惊喜,也希望隔壁引擎厂商别落伍了,哈哈。
页:
[1]