NVIDIA的光线追踪以及拓展的DLSS技术科普
以供大家喝酒吃饭的时候装逼之用

一、
首先,什么是光线追踪。
光线追踪技术主要运用于电脑3D显示渲染的过程中。光线追踪是一种“来自几何光学的通用技术,它通过追踪与光学表面发生交互作用的光线,得到光线经过路径的模型”。这个定义听起来有些晦涩,我们不妨说简单一点:首先假设屏幕内的世界是真实的,显示器只是一个完全透明的框框,那么屏幕内世界里应该有哪些光线会透过屏幕投入人的眼睛呢?
光线追踪技术正是为了解决这个问题,以确保3D画面看起来更真实。


二、
NVIDIA英伟达的光线追踪。
“光线追踪”并不是Nvidia创造的,而是作为早就存在的一种技术,它的应用范围在游戏开发、影视特效制作等等领域都有涉及,普遍来源于3D引擎的支持,比如虚幻4、寒霜3等引擎,都支持光线追踪。
但是有光线追踪的软件引擎并不能真正的实现光线追踪,光线追踪算法本身不是一个很难的计算过程,但光路的数量非常庞大,因为硬件的计算能力有限,如果对所有的光线光路都进行计算的话,就目前的大众显卡,游戏的帧数和分辨率都会降低到一个很可怜的地步。所以游戏在开发的时候是通过“预渲染”来提高画面表现的,也就是很多的阴影、反射、特效都是事先渲染好的,这回造成一种“不真实”的结果,例如明明玩家的光源是前方直射的,而阴影却十分不明显。(总结就是,参考那些做cad或者3d图像渲染的电脑这么好渲染一幅图片却要好几个小时甚至一天的时间,而我们正常的游戏一秒钟至少也得60幅画面以上才玩的流畅吧)
NVIDIA的RTX系列显卡在性能上上可以实现局部的光线追踪,也就是说一些游戏如果支持NVIDIA的光线追踪的话,在设计的时候,一部分游戏内场景或者物体可以不用事先“贴图”而是交由在游戏过程中实时渲染。RTX光线追踪”是建立在“预渲染”的基础上,对部分光源和表面进行进一步渲染,实现局部“光线追踪”。
在游戏内重要的一些表面:武器表面、水面、墙体等等,而光源也是一样,例如:火光、闪光、灯光等等小范围光源或者不定光等等,较为动态的光源进行实时追踪渲染,但就是这些光源的渲染也足以让RTX这种强劲级别的显卡忙活了。
三、
NVIDIA的DLSS(深度学习超采样技术)
上面说到了光线追踪本身是一项计算量极大极大的工程,而且光线追踪的最低数量还是由游戏内你调整的分辨率决定的,如果你要求的分辨率高,那么显卡就不得不计算更多的光线条数,付出更大的计算量,随之而来的就是游戏帧数的雪崩式降低。
如此看来,游戏帧率和游戏分辨率就是两个不可兼得的东西了,从游戏的原生渲染上看事实上的确如此,
显卡的计算性能目前是有限的。
此时NVIDIA就提出了一个极其大胆的想法,并取得了很大的突破,基于人工智能学习的DLSS技术。
以下的叙述大概总结就是这样的,当我们看小黄片的时候,虽然三点打了马赛克,但我们阅片无数的大脑能够脑补出b在哪里,奶头在哪里,并且它们的形状颜色是怎么样的,尽管这一部分的信息不存在了,但我们脑补了出来,并且乐在其中。
DLSS(深度学习超采样技术),它依赖的就是Tensor Core具备的深度学习能力,使用低分辨率图像(比如1080p)生成高分辨率图像(8K),再把8K图像缩回4K,得到超级采样抗锯齿(SSAA)图像,以代替传统的时间抗锯齿等技术。
简单通俗地讲,就是利用经常不工作或者工作量不饱和的Tensor Core单元进行游戏画面的抗锯齿工作,释放了原本用于抗锯齿运算的CUDA流处理器通用运算单元。那么这部分被释放的流处理器就能用于游戏画面的计算,相当于流处理器变多了,游戏帧数自然也提高了。

上述的很多技术手段可能看官不一定看得懂,总结一下就是,
针对某一款游戏或者一类风格的画面,扔给电脑看,比如1000张8k画质的图像,电脑经过一系列的总结(其中包含很多数学算法),电脑下次再看见类似的低分辨率图片或者细节比如2k或者1k的图片,就可以脑补(计算推断)出这个区域更高清的画面,相对来说这一部分的计算量是远远小于对光线进行追踪的计算量的。
使用DLSS技术成熟后,显卡甚至只需要渲染原生分辨率为600*800的图片,却将4k效果的图片呈现在显示屏上!一切都归功于人工智能。
附:Minecraft我的世界现在好像已经支持DLSS技术,达到一个不可思议的渲染效果,详情可以买一个2080ti显卡亲身体验或者上英伟达的官网看一下它的宣传片,unbelievable,这和我玩的就不是同一个马赛克游戏。
第一次发帖,战战兢兢,大半字是手动码的,hhhhh求求大家给个红星
[
本帖最后由 xzsteven 于 2020-7-8 19:12(GMT+8) 编辑 ]