什么是光线追踪技术,以及它的历史?,光线追踪

描述

编者按:本文作者Blake Patterson是一名全栈开发者,他在文中向我们简单科普了什么是光线追踪技术,以及它的历史。

在目前的PC图形硬件中,讨论最多的技术是一项成为光线追踪(ray tracing)的渲染技术。该技术风靡的原因,都源于几年前英伟达发布的RTX开发平台,以及微软而后推出的针对DirectX 12的DirectX Raytracing(DXR) API。DXR可以让Windows开发者在3D环境中加快GPU进行实时光线追踪的速度。这对游戏爱好者来说是个重大利好,因为光线追踪可以实现更真实的光线渲染,可以在3D场景中进行现实中的动作。

但是,目前仅有少部分游戏能够使用DXR所支持的渲染功能,并且很少有GPU在设计时会将DXR考虑在内、将光线追踪计算的加速作为主要目标。但目前来看,光线追踪仍然热度不减,很多从业者依然愿意为此花大价钱买一台GPU。

今年8月14日,英伟达发布了新一代GPU架构——图灵(Turing),以下是国外某网站关于此事的报道:

“英伟达于周一发布了下一代图形架构Turing,名字来源于上世纪初人工智能之父、计算机科学家Alan Turing。

最新的图形处理单元(GPU)比传统图形处理工作负载量更大,其中嵌入了针对人工智能任务和一种新的图形渲染技术(称为光线追踪)的加速器。”

但是,光线追踪并不是新技术。事实上,它几乎和最早的3D计算机图形技术一同出现。

什么是光线追踪?A.J. van der Ploeg在他的文章Interactive Ray Tracing:The Replacement of Rasterization?中这样描述:

“在计算机图形中,如果我们有一个三维场景,通常我们会想知道该场景在虚拟摄像机中是如何呈现的。这种计算虚拟相机中图像的方法就称作渲染。

目前渲染的标准方法是光栅化(rasterization),这是一种局部光线渲染方法。它是将从其他表面反射的光也算作在内,例如镜子中的光线。这对倒影或影子的渲染非常重要。例如,加入我们想对水面反射的场景正确建模,就需要用到全局光线渲染方法。在这种局部光线渲染方法之下,水面上的光线只能由直接照射到上面的光决定,并不是场景中其他部分的光线,所以我们看不到倒影。

……

光线追踪是对光的路径进行跟踪而工作的,例如,你在浴室想要刮胡子,屋顶的灯泡发出的光打到你的下巴上,其中有些光线被吸收,剩余光线反射出你皮肤的颜色。这书光线又经镜子反射,直到进入你的视网膜中。这就是虚拟摄像机中的光线给一个像素上色的方法。”

这种技术第一次当做光线追踪使用是在1972年左右渲染某一场景。数学应用团体(MAGI)成立于1966年,原本是为了评估核辐射的暴露值,他们使用的是自己开发的软件SynthaVision。该软件包含了光线投射的概念,可以在放射物源头和其周围追踪到它的踪迹。之后,SynthaVision被用到了计算机图像生成(CGI)中,从放射物追踪变成了光线追踪,成为了第一个光线追踪系统。1972年,Robert Goldstein等人将SynthaVision用于电影和电视剧的制作中,它的第一部广告视频是为IBM设计的,之后1982年还在迪士尼的电影《电子世界争霸战》中用到。

1985年,Commodore发布了7.14MHz、16位的Amiga计算机,其中具备突破性的视频图像处理能力。其中引起人们关注的最早的Amiga制作出的视频就是The Juggle的demo。它是一个24帧循环动画,在Amiga独有的HAM模式下有一个基于光线追踪的杂耍小人,HAM模式可以同时在屏幕上显示4096种颜色的调色板。我还记得1986年在我的Amiga上初见The Juggler的惊喜之情。The Juggler当时是用实验性光线追踪程序ssg进行一帧一帧的渲染,ssg由动画创作者Eric Graham编写。之后,Graham将该项目扩展到Sculpt 3D中,之后又推出了Sculpt/Animate 4D,激发了许多开发者做出基于Amiga的光线追踪器。

之后,上百种其他类型的基于光线追踪的动画在网络上出现,对Amiga以及其他平台进行渲染。从《电子世界争霸战》到今天,光线追踪几乎是所有CGI动画制作的重要部分,例如皮克斯、梦工厂动画都用到了这一技术。

这里需要注意的是,我提到的所有动画和电影都经过了长时间的逐帧渲染,通常需要大量计算机或者渲染工具。《电子世界争霸战》的图像是逐帧渲染的,因为当时的计算资源很有限。在皮克斯早期的电影《玩具总动员》中,通常平均需要四个小时才能渲染一帧。近几年,皮克斯的渲染时间一直维持在高水平的状态,因为它们的计算资源得到了提高,现在的每一帧渲染的复杂程度都得到了提高。

而现在的关注点都在即时光线追踪上,这也是DirectX光线追踪的主要工作目标。它使用CPU和GPU执行一定的光线追踪功能,但同时也能支持计算硬件执行光线追踪计算,例如英伟达GeForce 20系列的图灵微型架构GPU。图灵GPU中的RT核心在进行光线追踪计算时据说比GeForce 10系列的GPU快8倍。当然,相应的软件也必须通过DXR或其他方法支持光线追踪,才能呈现出精美的视觉效果。

所以,这么看来光线追踪技术已经存在至少45年了,并非是新提出的技术。能让我们在游戏或VR环境中实时体验到这种技术进步的,应该是新的API和不断升级的硬件,这才是真正的新事物。

后记

文章在reddit上发布后,也出现了不同的声音,大家争论的焦点都在“英伟达是否宣布过光线追踪是他们提出的”这一点上。一些网友看过文章之后认为本文的中心思想是在反驳“英伟达创造出了光线追踪技术”,这其实是某些媒体不恰当的表述造成的误会。

事实上,作者的本意是想让大家了解光线追踪技术这一重要图形处理的历史,由于英伟达发布的强大显卡,使得这一技术能在游戏中实时完成渲染,这才是创新所在。

相关推荐

相关文章