传统渲染与DLSS2.0的对比

调研大作业
在这次调研过程中先了解了一下下渲染,之后从传统抗锯齿算法和传统超分辨率算法两个角度与DLSS2.0对比,探究DLSS2.0的意义。

引言

所有的计算性能仿佛就是一块蛋糕,每当你开启新的技术,蛋糕就要被切除一块,而如果你开启软阴影、全局光照、超级采样,那么蛋糕当中的极大部分就会被砍掉,或者说硬件性能守恒,这意味着除非更换硬件,否则没有办法在不削弱一部分体验的前提中提高你另一部分的体验(在大多时候都是游戏),这点就注定很多的优化软件都是基于歪理邪说,道理很简单,如果你不升级配置,或者不超频,那么你的帧率就永远只有那么多,你想要流畅,就注定要砍掉优先级较低的特效,而如果你想要栩栩如生的画面,就注定要忍受较低的帧率——这是无从辩驳的、跨画游戏世界的扛鼎理论。但DLSS的出现很大程度上改变了这一理论。

渲染

渲染是三维计算机图形学中的最重要的研究课题之一,是模型成像的过程。计算机渲染图像,仅仅计算了那些散射到我们人眼方向得光线 , CG里面也叫摄像机方向 ,图形学中称之为 视角方向。
图形渲染管线是实时渲染的核心组件。渲染管线可分为3类,分别为光栅化渲染方法、Ray casting ,混合光线追踪。
光栅化 是传统的渲染管线广泛采用的方式,将场景中的模型进行各种变换和裁剪,最后采样成像素到屏幕上。
光线追踪渲染管线:从相机到屏幕像素发出射线,经过物体表面的镜面反射、折射或漫反射等(BRDF——材质),最终到达光源。我们计算射线与场景物体的所有交点处的辐射度,最终混合为屏幕像素的颜色值。
由于光线追踪对显卡要求高,因而以往的游戏主要是利用光栅化,它是一种渲染计算机图形的更快速方式 。其作用是能够把 3D 图形转换为 2D 像素以显示在屏幕上,但光栅化需要着色器描绘合理逼真的照明效果,其最终的结果不如光线追踪那么自然或逼真。

混合光线可以更好地进行渲染。

像素阴影最基本的要素便是识别环境:它所处的位置、光线来自哪里,光线是否会受到其他曲面的阻碍或折返回来等等。光栅化则不会确定以上信息,因为每个三角形都是独立存在的。在某种程度上,有一些很显然的方法来应对这个问题,但这些方法过于复杂或效率低下,往往导致图像质量不佳。而另一方面,光线跟踪非常擅长获悉周边的环境,但由于计算更复杂,所以速度会很慢。混合渲染器则结合了光栅化的速度和光线跟踪的环境感知能力。在使用光线追踪计算曲面的光线和反射时,它已将G缓冲区光栅化,呈现出所有可视的曲面。
目前市场上的画面渲染可以分为两种:实时渲染和离线渲染

DLSS和传统AA对比

DLSS的一个应用就是反走样,也就是Anti-Aliasing(AA)。
抗锯齿的介绍:

  • 在管线前段(前向渲染),通过增加采样、以及利用深度信息精确在边缘进行抗锯齿的方法:SSAA、MSAA、CSAA(MSAA的优化版,五点采样)、RGSS(采样点旋转,非规则)等。
  • 在管线后段(延迟渲染)通过纯碎的后处理,即图形处理进行的抗锯齿算法:FXAA、MLAA、SMAA等。
  • 滤波器类型的抗锯齿:类似于图像处理中的图像恢复和抗噪技术(锯齿可以看作高频噪音),滤波算法有很多,例如:几何或算数均值滤波、中值滤波、适应性均值滤波等,区别主要取决于滤波器卷积算子的权重设计以及混合方式。注:这种滤波是在屏幕空间进行的,当然也可以走先进行边缘检测(拉普拉斯算子等卷积核),然后只在边缘进行滤波。
  • 设计前置过滤器,将走样信息尽可能传递到管线后段,可能会对管线进行修改:NSAA,AGAA。
  • 时域上的抗锯齿(以上其他的都是屏幕空间的抗锯齿):temprial anti-alasing,TXAA。
  • 其他:基于深度学习的DLAA,实时抗锯齿。

传统AA的思路基本只有两种,一种是用图像处理的方法将边缘柔化,另一种是增加采样频率,生成更加精细的画面,然后超采样到屏幕里,因为分辨率的原因,更加精细的画面能够实现消除锯齿的效果,这种抗锯齿效果比较好,而且要实现没有太多技术难度,但是对于性能的要求非常高,其中的代表就是简单粗暴的超级采样抗锯齿(SSAA)、多重采样抗锯齿(MSAA)。

DLSS采用了另一种思路,从LR超分到HR,利用张量单元赋予的深度计算性能,让本地生成的图像跟使用超级采样生成的图像对比,然后通过学习、观察其中的差距来复现后者的质量。但是因为在这个过程中是靠单帧信息进行“脑部”,导致在发生运动时容易产生鬼影现象,甚至可能比不上原生1080p图像。

DLSS原理介绍
原理图来自B站极客湾

DLSS 2.0在AI网络中有两个主要输入:

(1)游戏引擎渲染的低分辨率、锯齿图像

(2)低分辨率,来自相同图像的运动矢量——也是由游戏引擎生成的运动矢量告诉我们场景中的对象在帧与帧之间移动的方向。我们可以将这些向量应用于前一个高分辨率输出,以估计下一帧的外观。我们将此过程称为“时间反馈”,因为它使用了历史信息。

在这里插入图片描述
DLSS 2.0使用神经图形框架NGX,DLSS深度神经网络在NVIDIA DGX驱动的超级计算机上进行训练。
AA算法中除了DLAA外,都是基于软件实现的,对于硬件没有特殊要求;而DLSS是基于硬件实现的,图形渲染之后将数据继续交给硬件,让硬件实现超分或者抗锯齿效果。

若要生成1080p的图像,在使用SSAA时,需要先通过传统管线渲染生成4倍于该分辨率的图像,再通过加权采样实现抗锯齿效果。是相当暴力、在本地缓冲区直接生成数倍于目前分辨率的图像然后超采样精细化,因此硬件损耗极其庞大。

而DLSS只需要先生成1080p的图像,在经过神经网络之后,生成4k图像,再经过超采样以实现抗锯齿效果,或者先生成480p的图像,最终直出以达到降低渲染压力,全称均由硬件实现。

TAA是英伟达设计的更高画质的抗锯齿技术,可以达到和SSAA接近的效果,只不过多采样是基于历史帧缓冲,从历史帧中采样。缺点是随着历史颜色的累积,会导致不可绝对消除的模糊(运动模糊),尤其在移动过快的镜头或物体情况下,会导致重影现象。

DLSS2.0与其实现原理极为相似。但taa是在原生画质基础上实现抗锯齿效果,而dlss2.0是从较低画质实现超分辨率并进行采样。渲染压力更低,且引起基于硬件实现,开启dlss2.0的2060super帧率可以超过不开dlss2.0的2080。
要注意,无论是DLSS1.x还是2.0,输入都只能是1080p的图像,这个实现本身是基于硬件的。
在知乎上找到下面的图片:
原生分辨率+taa
DLSS2.0
在两幅图片左下部分边缘部分明显DLSS2.0的效果更好

传统超分和DLSS2.0的对比

AI视频增强技术

在DLSS发布之前,AI应用于渲染一般是应用于视频。

从两个角度应用,一个是AI补帧(将低帧率的视频补到高帧率),另一个是超分辨率(用低分辨率下的性能开销实现高分辨率下的画面表现)。例如,将24帧的视频补到60帧,720p的视频补到1080p。

AI补帧

基本思路为:使用大量普通视频与慢动作视频进行训练,然后让神经网络学会推理,根据正常视频生成高质量的超级慢动作视频

即先使用深度神经网络补出卷积核,再根据卷积核及前后两帧信息对视频中缺失的帧进行预测并补全,从而生成连续慢速回放的效果。要求画面前后有逻辑,若是动漫,需要其符合制作标准才可以达到更好的效果。

实现:英伟达团队CVPR-18论文Super SloMo使用深度学习,能将任意视频变为“高清慢速播放”模式
来自上海交大的插帧算法DAIN(Depth-Aware Video Frame Interpolation),它比英伟达的算法效果更清晰、帧率更高。

超分辨率

广义的超分辨率 (SR, Super Resolution) 是指一类用于提升图像分辨率的技术。这类技术已经存在了很长一段时间,应用也非常广泛。事实上,每当我们需要以不同于原始分辨率的尺寸来显示或存储图像时,就已经使用了SR,只不过使用的是其中最为简单的那类算法而已。
对于视频来说,可以采用多帧超分辨率,对于实时渲染,可以采用单帧超分辨率或者超时域采样。

根据研究方向的不同,将单幅图像超分辨率重建算法分为三大类:基于插值的超分辨率算法、基于重建的超分辨率算法以及基于学习的超分辨率算法。

SR算法本质上和传统图像放大算法没什么不同,都是利用已有的图像信息去预测需要的像素点。只不过传统算法的预测模型非常简单,可以通过人工设计的方式实现。

而现代SR算法为了得到更精确的预测结果,其预测模型则复杂了很多。超时域采样有多个卷积层和激活层,会利用到目标像素周围很大一片区域的图像信息,包含成千上万个模型参数,纯靠人工设计是不现实的。所以人们才会依靠机器学习的方式(超级计算机进行训练)来决定参数。

基于学习的超分辨率算法的核心思想是:首先拥有给定场景的待训练图像数据集,接着根据此训练集学习高、低辨率图像之间的映射关系,然后根据映射关系建立非线性模型,最后利用非线性模型把输入的低分辨率图像重建为高分辨率图像。当低分辨率图像信息不满足重建高分辨率图像的需求时,可以利用在训练过程中学习到的特征信息 对此进行弥补,从而提升图像的分辨率。

基于深度学习的超分技术能较好的恢复图像细节. 在视频发送源可能因为种种客观限制, 无法提供高分辨率的视频. 比如摄像头采集能力不足, 网络带宽不足,源端处理能力不足等, 在这些情形下, 如果云端或者接收端的处理能力满足要求, 可以借助超分技术, 对于视频质量做恢复, 呈现给用户高质量的视频. 所以超分技术为在恶劣的客观条件下的视频应用提供了高质量呈现的可能, 是传统的应用借助人工智能技术提升使用体验的一种典型落地场景。
NVidia的超分辨率技术叫做DLSS,AMD的叫做FSR。此外,AMD的 FidelityFX 和 Microsoft的DirectML 尽管和NVIDIA公司的方案相比还是处于婴儿阶段,但是都是基于软件,并不对硬件做出特殊要求。

棋盘渲染基于插值实现,DLSS基于单帧超分辨率实现。DLSS2.0基于超时域采样实现。

工作原理比较

棋盘渲染:先渲染低分辨率图像,得出一半信息,另一半信息通过插值方式获取,最终生成高分辨率图像。

视频插值:基于未来帧和过去帧进行插值。

DLSS2.0:根据在超级计算机上用数万张超高质量图片训练的神经网路作为启发式算法,通过算法重建像素的运动信息和深度信息,再进行超采样,得到最终效果。

DLSS2.0质量档的实现效果质量明显高于棋盘渲染,且帧数将得到较大提升。

死亡搁浅:

在这里插入图片描述

即便是和DLSS2.0的性能档相比,棋盘渲染还是稍显模糊 在水面处,DLSS2.0性能档的水面反射效果并不好。
赛博朋克2077,一个实现了全光追的游戏,在光追全开下直接生成原生4k图像,现阶段没有一个显卡可以跑到30帧以上,而在开启DLSS2.0以后,帧数将会有明显提升,质量档大能达到40帧左右,平衡档能达到50帧左右,而超级性能档能达到70帧左右。原生4k与DLSS2.0质量档二者效果相比,粗看并没有太多差距

最后最后,我太爱极客湾了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值