本文是在计算机图形学期末考察的背景下,通过一周的调查并按个人理解整理得出的。虽说文章也是总结的精华,但个人以为还颇有粗糙之处(如有错误欢迎指正)。在此,笔者把参考资源放于文章之前——相比于本文,参考资料在学术上更准确,内容深刻,表达得体;另一方面也是希望大家优先从参考资料下手,从中得出自己的思考,再来笑看这篇多方借鉴的总结。
Reference
- 如果想要入门或者快速了解一下可以先看B站的科普视频,可以大致了解DLSS是什么,为什么,怎么做。看完视频方便你进一步提出问题,查找资料。
- NVIDIA官网介绍:NVIDIA:DLSS 2.0
此外,NVIDA还在GTC上给出了相应的Talk,其中介绍了DLSS 2.0、针对于游戏的图像超分辨率的挑战以及DLSS 2.0引擎集成:NVIDA’s Talk:GTC 2020: DLSS 2.0 - Image Reconstruction for Real-time Rendering with Deep Learning(这是油管上面的,英语听力ok的可以直接冲,英语不太行的可以开中文字母。好像b站也上线了,但还没点进去过,不知道有没有翻译)本文有关于DLSS 2.0的介绍大抵上也出自这个Talk. - 同时,DLSS团队成员文刀秋二也是这个Talk的汇报人在知乎上也对Talk进行了总结,详见:DLSS 2.0 - 基于深度学习的实时渲染图像重建
- Beyond3D: Diving into Anti-Aliasing个人觉得是很全面很有逻辑的抗锯齿的介绍。有需要的朋友可以自取!
- 书籍:Real time rendering 在实时渲染和计算机图形学领域,《Real-Time Rendering》这本书一直备受推崇。有人说,它实时渲染的圣经。也有人说,它是绝世武功的目录。这次调查主要阅读了本书关于抗锯齿方面的介绍。如有机会可以进军相关领域,还是很期待可以把这本书读一下的。当然毛星云也在CSDN上发布了这本书第三版提炼总结的专栏:【《Real-Time Rendering 3rd》提炼总结】,两者可以配合食用。
- 一篇2021年7月的期刊:An overview of current deep learned rendering technologies 着重讨论实时渲染和深度学习渲染。其中介绍了实时渲染技术中的抗锯齿和超分辨率,深度学习渲染技术中的DLSS和NSS模型,并且介绍了DLSR技术面临的挑战。本文的思路也从这篇期刊而来。
实时渲染技术和DLSS 2.0技术
一、前言
通俗讲,渲染(Render)是处理器将需要计算的画面信息,计算并“绘制”在显示屏幕上的过程。随着显示技术的进步,渲染技术也慢慢地出现了两条主流分支:一种用于视频游戏技术,另一种则是用于影视技术。这两类需求对应的渲染技术分别为:实时渲染与离线渲染。
实时渲染(Real-time rendering)指的是在计算机上快速生成图像。它是计算机图形学中最具交互性的领域。首先一幅图像显示在屏幕上,然后观察者做出动作与反应,并且其动作反馈会影响接下来的生成内容。由于这种反馈、渲染的循环速度足够快,观察者就不会只看到独立的图像,而是会沉浸在这种动态过程中。
由于追求高分辨率和高帧率的真实性体验,RTR技术难度呈指数型上升。显示设备的更新换代以及物理着色、光线追踪、精确物理引擎、更高质量的纹理模型的实现使最新一代 GPU 也难以在不影响帧率的情况下以原始分辨率渲染图像。此时,低分辨率的性能开销实现高分辨率的画面成为大势所趋。
借助于深度学习超采样(DLSS),NVIDIA推出DLSS 2.0。其实现了通过渲染更少的像素,使用 AI 构建清晰、分辨率更高的图像。 DLSS2.0由GeForce RTX GPU上的专用 AI 处理器Tensor Cores 提供支持,是一种经过改进的全新深度学习神经网络,可在生成精美、清晰的游戏图像的同时提高帧速。它为游戏玩家提供了最大化光线追踪设置和提高输出分辨率的性能空间。
本文旨在介绍实时渲染图像重建技术部分基础,同时着重于讨论新兴的基于深度学习的实时渲染重建DLSS 2.0。文章结构如下:第二部分讨论了实时渲染重建技术基础,包括抗锯齿和超分辨率采样两个方向;第三部分着重讨论DLSS 2.0技术的理论、工作原理和实现效果;第四部分分析DLSS 2.0的优点和缺点,并讨论了DLSR技术面临的挑战和展望。
二、实时渲染图像重建技术基础
(一)抗锯齿技术
Aliasing (锯齿)这个术语最早出现在信号处理这门学科中,指的是当一个连续信号被采样后和其他非一致信号混淆的现象。在3D渲染中,这个术语有着更特殊的意思——它涵盖了所有3D渲染光栅化后产生的画面瑕疵。3D场景渲染在光栅化之前是连续信号,但在进行像素渲染(对每个像素生成相应的色彩值)的时候就不得不对连续信号进行采样以获得能够输出到显示器的结果。反锯齿的目标就在于让最终输出的画面和原生场景尽可能接近,修复渲染瑕疵。
所有的渲染失真都可以归因于采样问题(用有限的像素展示无限的细节),使用哪种反锯齿手段与锯齿成因息息相关。因此,为了探讨不同反锯齿手段的优势和劣势,我们先将3D渲染的瑕疵根据其成因简单归纳为6个类别:几何失真、透明失真、子像素失真、纹理失真、渲染失真、闪烁情形(时间性锯齿)。
现如今的抗锯齿技术可以分为两类:一类是通过提高采样质量来减少渲染时锯齿,另一类则是通过对已渲染好的图片分析和后处理来减少锯齿。
1. 基于采样的抗锯齿技术
首先讨论基于采样的反锯齿技术,其实质则是通过渲染比屏幕分辨率更高的画面而后再降采样至屏幕空间分辨率。样本数量,样本位置、采样模式和样本融合方式都会影响最终的画面质量。
样本数量
显而易见,倘若生成一个像素的采样点趋近于无穷多,那么最终的效果就会无限趋近“完美”的光栅化效果。因此,抗锯齿的效果和样本数量密切相关。当然样本数量也关系到设备性能:通常在游戏中每个像素会使用2个或4个采样点,而在高端显示器中可能会使用到8个及以上的采样点。
样本位置
样本位置的选取对最终画面质量有着至关重要的影响。特别是在游戏渲染中,由于采样点数量少,样本位置就更为重要。由于样本位置呈有序点排列,这种抗锯齿也被称作顺序栅格超级采样(Ordered Grid Super-Sampling,OGSS)。然而,对于接近垂直或接近水平的线而言,使用排列有序的采样网格效果往往不佳。此时,采用旋转栅格超级采样(Rotated Grid Super-Sampling,RGSS)可以获得更好的结果。
为了缓解这个问题,我们也可以将采样点稀疏摆放在不同的列。对于抗锯齿来说,理想的摆放应当是稀疏的。换句话说,对于N个采样点,任意两个采样点不会在一个N\times N网格的同一列、行以及对角线上。通过对N皇后问题求解可得到满足这种条件的采样点摆放方式,在此不再赘述。这种稀疏摆放采样点的抗锯齿也被称作稀疏栅格抗锯齿(Sparse Grid Anti-aliasing,SGAA)。
采样类型
- 超采样抗锯齿(Super-sampling Anti-aliasing,SSAA)
基于采样的抗锯齿方法对每个采样点都进行了运算。虽然这样的采样方式可以消除各类渲染失真,但也非常耗费资源。举个例子,N倍采样将会给像素渲染、光栅单元、内存带宽以及内存容量施加N倍的计算压力。这种对每个采样点都进行独立计算的采样也被称为超采样抗锯齿。
- 多重采样抗锯齿(multi-sample anti-aliasing,MSAA)
在进入21世纪后,多重采样抗锯齿开始作为SSAA的一种优化解被广泛应用。MSAA实质是只对 Z 缓存(Z-Buffer)和模板缓存 (Stencil Buffer)中的数据进行超级采样抗锯齿的处理。可以理解为只对边缘进行抗锯齿处理。当硬件支持Z缓存和模板缓存时(而现今大部分GPU都已经支持这些特性),MSAA带来的内存带宽开销会进一步缩小。相比SSAA对画面中所有数据进行处理,MSAA大大减弱对资源的消耗。但由于MSAA仅针对几何体边缘进行抗锯齿,其他类别的失真(透明失真、纹理失真和渲染失真等)都无法被消除。

最低0.47元/天 解锁文章
1806

被折叠的 条评论
为什么被折叠?



