Eric Haines是英伟达的工程师(Distinguished Engineer),也是’ Real Time Rendering’第四版的作者,以及‘Ray Tracing Gems’第一版的主编。Ray Tracing Essentials系列是他推出了关于光线追踪的系列视频,共分为7期:
Part 1:基本概念
“Ray Tracing is the technology of the future, and it always will be!”
本系列首先介绍了光线追踪的基本概念,Ray Casting的两种类型以及光线追踪的基本成像原理。
Classical Ray Tracing
然后介绍了Ray Tracing发展过程中主要的贡献和相关算法的解释,一共包括三个主要的光线追踪算法:
详细内容可浏览如下视频:一起看光线追踪(1):基本概念
Part 2 栅格化与光线追踪的对比
“The brute-force approach which is already ridiculously expensive.”
本篇首先对比了光线追踪和栅格化之间的区别,阐述了两者在渲染中相似但又不同的渲染顺序,然后介绍了Bounding volume Hierarchy(BVH)这种光线追踪中广泛应用的加速结构,最后针对基本问题,主要操作,性能,加速结构,缺点等方面,给出了栅格化和光线追踪之间的不同。
Rasterization vs Ray Tracing
文末,作者也给出了自己的观点,两者各有利弊,可以相互结合,形成一种Hybrid的渲染方式,栅格化可以用来渲染底图,而光线追踪则可以用来加强光影等细节效果。
详细内容可浏览如下视频:一起看光线追踪(2):栅格化与光线追踪的对比
Part 3 光线追踪的硬件支持
"Computers will be fast"
这一期,Eric主要讨论了光线追踪涉及到的GPU硬件相关的内容。
首先,Eric给出了自己的观点,尽管随着硬件性能的提升,但渲染的性能始终是恒定的,就好比Windows系统下打开一个窗口永远都需要五秒钟。接着,解释了渲染为何‘embarrassingly parallel’,也分享了他切身经历的渲染性能的发展史,最后也探讨了摩尔定律已经结束了这个不争的事实。
面对现状,现代硬件的发展则侧重于专项功能的优化方案,如上图,在传统的Shader&Compute的基础下,新一代的GPU提供了专门的Tensor Core以及RT Core。这些大大提高了计算性能和光线追踪下的硬件加速能力。
Eric详细介绍了GPU中的RT Core部分,它提供了Ray Tracing的硬件加速能力,侧重于射线与三角形的求交能能力。
同时,现代显卡也极大地提高了内存容量,高到512GB,而通常电影级别的复杂场景的内存需求在50GB左右,这样,可以满足一般应用中将整个场景都放在显卡中提供硬件加速的能力。
最后,现在的显卡更易于调优,方便我们不断地发现瓶颈,优化性能。如上图是性能对比的截图,当我们分别借助Tensor Core和RT Core时,在计算和渲染方面,性能得到了极大的提升。
最后,Eric通过Star Wars Reflections这个Demo,该Demo是NV联合微软的DXR,以及UE渲染引擎而成,最开始采用4块显卡来支撑,而在图灵卡问世后,只需要1块显卡。大家可以亲身感受GPU下光线追踪带来的视觉体验。
详细内容可浏览如下视频:一起看光线追踪(3):光线追踪的硬件支持
Part 4 光线追踪渲染管线
"GPUs are the only type of parallel processor that has ever seen widespread success… because developers generally don’t know they are parallel!"
Matt Pharr: On to the next thing
本篇主要介绍光线追踪的渲染管线。
作者首先给出了栅格化和Ray Tracing渲染管线的对比,详细阐述Vulkan和DXR中光线追踪中的五种shader类型:
接着,Eric阐述了光线追踪的整个流程,以及Any-hit在处理透明物体时的作用。
最后,视频介绍了光线追踪在游戏行业中的价值,比如反射,阴影和全局光照,在其他行业中的烘培,效果比对以及一些非主流应用(比如碰撞检测)等。
详细内容可浏览如下视频:一起看光线追踪(4):光线追踪渲染管线
Part 5 光线追踪效果
"Is it the real life? Is this just fantasy?"
本篇主要讨论光线追踪的渲染效果。
Eric分享了其在康奈尔大学读书时Cornel Box场景的产生过程,基于该场景,解释了软阴影,全局光照,Glossy等效果,作者给出如上图片,让大家来查找图中对应的渲染效果。
接着,Eric又介绍了环境光遮盖,体积光以及光蚀caustics现象,并以自己的经历来解释,为什么caustics is dangerous
详细内容可浏览如下视频:一起看光线追踪(5):光线追踪效果
Part 6 渲染方程
“The ‘Muse’ is not an artistic mystery, but a mathematical equation.”
本篇终于讲到了渲染方程,Eric首先解释了该方程的主要参数,分解该方程并分别解释其中的含义。然后,作者解释了如何通过路径追踪算法求解渲染方程,基于材质的不同,讨论了重要性采样的不同。
最后指出,我们不仅要考虑材质,也需要考虑光源,这样的采样才是最优解,而另一个Eric的论文提出了Multiple IS(多重重要性采样)算法,可以用于优化该算法。
详细内容可浏览如下视频:一起看光线追踪(6):渲染方程
Part 7 降噪
"The world is noisy and messy. You need to deal with the noise and uncertainty."
本篇主要讨论了目前的降噪技术以及该技术的重大意义。
首先,Eric介绍了不同的每像素采样数(SPP)下不同的渲染质量,同时指出,渲染的效果和采样数的根号正相关,这解释了随着采样数越多,受益越不明显的结论。巨大的计算量无法满足实时渲染的性能要求,因此,我们需要一种重建技术,能够提高画质,而降噪就是其中重要的一种方式。
接着,Eric通过一些不同的场景,介绍了降噪技术在高性能下带来的效果显著提升,并给出不同场景下降噪的一些基本策略和算法思路,最后,对比了传统的降噪算法和神经网络训练下的降噪结果。
接着,Eric给出了真实效果,降噪技术以及传统的阴影技术下的渲染效果,其中,降噪技术和真实效果非常接近,而传统的阴影技术则会产生彼得潘问题。
最后,Eric通过一段视频,展现了降噪技术的效果,并强调了,正是得益于降噪技术,能够让光线追踪比想象中更早地进入应用领域,因此,降噪技术是实时光线追踪的重要环节。
最后,作为该系列的最后一期,Eric也表达了对光线追踪的热爱,并给出了他最后的一个quote:
“Ray tracing is simple enough to fit on a business card, yet complicated enough to consume an entire career.”
详细内容可浏览如下视频:一起看光线追踪(7):降噪
最后,个人认为,无论是选择喜欢的事情还是寻找意中人,都应该是那些能让我们眼睛发光的,即便她可望不可及又怎样。