NT³的自吹自擂 头像

消息来源频道

NT³的自吹自擂

@nt_cubic

频道1,987 位成员公开可见0 人在线

京都百年老店游戏设计老师傅

成员规模1,987 位成员
在线情况0 人在线
消息总数1,599 条消息
浏览量总数136,241 次浏览

在这个频道里搜索消息……

t.me/nt_cubic

关于Unreal5和Nanite
在虚幻5刚发布的时候,Nanite就收到了很多人的瞩目。Nanite和Lumen是这次UE5的重头戏,不过因为王希老师的GAMES104刚好更新到了Nanite,也就是最后一节课,因此我这次想说一下Nanite的故事,但是说来惭愧,因为我没有解析过Unreal的源码,因此可能会有一些错误,请读者指正。
Nanite的思想其实说起来也非常让人眼熟,参与过游戏开发的人可能或多或少知道LOD的技术,LOD的思想就是就是当你的摄像机距离够远,你就没有必要使用高清贴图,你会选择使用稍微模糊一点的贴图来提高你的运行速度。正如mipmap和各向异性过滤的思想的一样,Nanite其实做的也是这件事,并且Unity平台的独立开发者已经可以实现Nanotech技术,原理也是类似的:这一切似乎让人摸不着头脑,那么Nanite为什么需要耗费EPIC整整二十年的时间?它究竟厉害在了哪里?
要知道Nanite的着力点,你首先需要构想一个极端情况:如果我们的一个渲染的mesh远远小于一个pixel,我们该怎么办?在这里读者可以查询回顾一下mipmap的原理,它是通过计算一个dx和一个dy实现的,我们通过两个方向的微分判断这个贴图改用哪一个层级,但是不论如何,你的GPU需要计算几次?
四次,左右上下各一次,然后得到层级。
那么问题就来了,如果一个渲染的对象远远小于一个pixel,那么这个pixel中你需要计算几次?其实没有必要继续想下去了,答案非常明显,这里会耗费大量的计算时间,哪怕是多么小的一个mesh你也需要进行四次运算,实际上这个地方就是曾经3A游戏一个巨大的瓶颈,尤其是如果有人参与开发过PlayStation4或者3平台的游戏,由于其图形计算能力已经落后时代,这个问题就急需克服,而这些问题是类Nanite(包括nanotech)都没有解决的问题。
而Nanite的核心目的,其实在于克服这个问题,而不是简单的按照LOD的思想复刻一遍。他会通过一系列的算法捕捉渲染对象是否是如上文所做的一个低效的对象,如果是的话,它就会启用一个软渲染,直接通过软件层面解决这个地方的着色,而Nanite的另外一个强大的地方就是它的算法组里面包括了可以让层次跳变进化成亚像素级别:在UE5的nanite中,你线性拉近和拉远渲染对象,不会用肉眼看到这些渲染层次和软硬件渲染的跳变。
至于这个一系列的算法是什么?他有多酷?那就不是今天能说的话题了,如果这个东西能如此轻易的实现,那么EPIC不会做二十年,虚幻引擎也不会这么优秀。
UNREAL是EPIC极为强大的图形工程能力的展现,同时UNREAL其实也说明了一个道理,就是工程和学术研究其实是两回事,有些时候道理的研究非常简单,但是实现它就需要花费二十年。