利用光线追踪对光线与设计及交互进行建模

描述

对大家来说,光线追踪是一项既熟悉又陌生的技术。说熟悉,是因为可能大家其实都见过;说陌生,是因为除了计算机图形领域的专家,真正了解该技术的人可能为数不多。

现代电影有赖于光线追踪技术来生成或强化特效,包括逼真的反射、折射和阴影效果。正是由于运用了这些效果,才使得史诗级科幻片中的星际战斗机如此栩栩如生。光线追踪能够助力打造令人血脉喷张的飙车场景,也能使战争片的火焰、烟雾和爆炸场景更加真实。

光线追踪生成的影像与摄影机拍摄的影像很难区分开来。真人动作电影将计算机生成的效果与真实拍摄的影像无缝融合,而动画电影则能够通过光线和阴影隐藏用数字方式生成的场景,以达到如摄影机拍摄般的逼真效果。

什么是光线追踪?

想了解光线追踪,你可以环顾四周,找到被光线照亮的物体,沿着到达视点的光线反方向进行追踪,就是光线追踪。

如果你最近去过电影院,就能实际见到光线追踪。

但在过去,计算机硬件的速度不够快,无法做到实时。比如在视频游戏中,电影制作人渲染单个帧的时间可能很长,因此他们会在渲染农场中离线渲染。而视频游戏画面转瞬即逝。因此,人们依赖于另一种技术来处理大部分实时图形,即光栅化。

什么是光栅化?

长期以来,实时计算机图形一直使用一种称为“光栅化”的技术在二维屏幕上显示三维物体。该技术速度快,且效果足够好,尽管它仍然无法达到光线追踪所能达到的水平。

借助光栅化技术,可通过虚拟三角形或多边形网格来创建物体 3D 模型。在这种虚拟网格中,每个三角形的顶点与大小及形状不同的其他三角形的顶点相交。每个顶点关联着大量信息,包括其在空间中的位置以及有关颜色、纹理及其“法线”(normal)信息,这些信息可用于确定物体表面的朝向。

计算机随后将 3D 模型中的三角形转换为 2D 屏幕上的像素或点。根据存储在三角形顶点中的数据,能为每个像素分配一个初始颜色值。

进一步的像素处理或“阴影处理”包括根据场景中光照与像素的碰撞来改变像素颜色,以及将一个或多个纹理应用于像素,进而生成应用于像素的最终颜色。

光栅化技术的计算量异常大。一个场景中的所有物体模型可使用多达数百万个多边形,4K 显示器中有近 800 万个像素。而且,屏幕上显示的每个帧或图像通常会在显示器上每秒刷新 30 到 90 次。

此外,还要使用内存缓冲区(为加快运行速度预留出来的一点临时空间)在屏幕上显示之前,预先渲染这些帧。还需使用景深或“z 缓存” 存储像素深度信息,以确保在屏幕上特定的像素位置会显示最上层的物体,并隐藏其背后的物体。

这正是为什么拥有丰富图形功能的现代计算机游戏会依赖于性能强悍的 GPU。

光线追踪有何不同?

光线追踪技术与光栅化不同。在真实世界中,我们看到的 3D 物体被光源照亮,且光子在到达观众眼睛之前,可以从一个物体反射到另一个物体。

光线可能会被某些物体阻挡,形成阴影。或可能会从一个物体反射到另一个物体,比如当我们看到一个物体的图像反射在另一个物体表面时就是这样。光线穿过透明或半透明物体(如玻璃或水)时会发生折射。

光线追踪通过从我们的眼睛(或“观景式像机”)反向追踪光线捕捉这些效果, IBM 的 Arthur Appel 于 1969 年在《Some Techniques for Shading Machine Renderings of Solids》中首次提出了这种技术。此技术可追踪通过 2D 视图表面上每个像素、到达场景 3D 模型中的光线路径。

十年后,业界又迎来下一个重大突破。Turner Whitte 在 1979 年发表论文《An Improved Illumination Model for Shaded Display》,阐述了如何捕捉反射、阴影和折射,他目前就职于 NVIDIA Research。

英伟达

Turner Whitted 1979 年发表的论文开启了光线追踪的文艺复兴时代,为电影领域带来了变革。

利用 Whitted 的技术,当光线投射到场景中的物体时,根据物体表面上碰撞点处的颜色和光照信息可以计算出像素的颜色和照明度。如果光线在到达光源之前反射或通过不同物体的表面,则根据所有物体的颜色和光照信息可以计算出最终的像素颜色。

20 世纪 80 年代的另外两篇论文也同样为计算机图形革命奠定了知识基础,掀起了计算机图形的革命,颠覆了电影的制作方式。

1984 年,Lucasfilm 的 Robert Cook、Thomas Porter 和 Loren Carpenter 详细介绍了光线追踪如何结合众多常见的电影制作技术(包括动态模糊、景深、半影、半透明和模糊反射),而这些效果当时还只能依靠摄影机制作。

两年后,加州理工学院 Jim Kajiya 教授发表论文《The Rendering Equation》从物理学的角度审视了计算机图形的生成,更好地展现了光线在整个场景中的散射方式。

这项研究与现代 GPU 的结合取得了显著的成果,计算机生成图像捕捉的阴影、反射和折射效果能够以假乱真,与真实世界的照片或视频很难区分开来。正是这种真实感让光线追踪开始全面进入了现代电影制作领域。

这款由Enrico Cerica使用OctaneRender创建的计算机生成图像,显示了光线、窗户透射的光、以及灯架上倒映在地板上和反射在相框上形成的图像。

这种技术的计算量同样非常大。正因如此,电影制作人才依赖大量的服务器或渲染农场。而且,渲染复杂的特殊效果可能需要花上几天甚至几周的时间。

可以肯定的是,许多因素都会影响光线追踪的整体图形质量和性能。实际上,由于光线追踪是相当计算密集型的,因此通常采用光线追踪来渲染场景中最有助于提升视觉效果和现实感受的部分,而场景的其余部分则使用光栅化进行渲染。光栅化仍能提供出色的图形质量。

光线追踪未来将如何发展?

随着 GPU 性能日益强悍,下一步理应是让更多人享受到光线追踪技术带来的好处。例如,借助光线追踪工具(如 Autodesk 的 Arnold、Chaos Group 的 V-Ray 或 Pixar 的 Renderman)和性能强悍的 GPU,产品设计师和建筑师能够使用光线追踪,在几秒内即可生成逼真的产品模型,以便他们更加有效地协作,并免去了成本不菲的原型设计环节。

光线追踪已经向建筑师和照明设计师证明了它的价值所在,他们正在利用光线追踪对光线与设计如何交互进行建模。

随着GPU的计算能力日益提升,视频游戏将成为此技术的下一个前沿阵地。NVIDIA 在早前宣布推出 NVIDIA RTX。这是一种光线追踪技术,可为游戏开发者提供电影级画质的实时渲染。它是 NVIDIA 在计算机图形和GPU架构领域经过10年努力所取得的成果。

它包含在 NVIDIA Volta 架构 GPU 上运行的光线追踪引擎,支持通过各种接口进行光线追踪,NVIDIA 与微软紧密合作,通过微软新的 DirectX Raytracing (DXR) API 提供全面的 RTX 支持。

为帮助游戏开发者利用这些新功能,NVIDIA 还宣布 GameWorks SDK 将添加一个光线追踪降噪模块。更新版 GameWorks SDK 即将推出,其中包含光线追踪区域阴影和光线追踪光泽反射。

所有这一切都有助于游戏开发者等将光线追踪技术应用到其工作中,以创建更真实的反射、阴影和折射。

如此一来,玩家在家中玩游戏时便能享受到电影级画质、更佳的视觉效果及游戏体验。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分