光线追踪(Ray Tracing)是一种用于生成逼真图像的计算机图形学渲染技术。它通过模拟光线在场景中的传播和交互过程,生成高质量、富有真实感的图像。

本页面主要目录有关于光线追踪的:发展历史、基本原理、优化技术、应用领域、相关合集等介绍

英文名

Ray Tracing

运用领域

游戏、影视、建筑(AEC)等行业

简介

光线追踪能够在计算机中模拟光线的传播、反射、折射等物理现象,呈现符合物理规律的光影效果。主要应用于电影、游戏、动画、建筑等领域。

2016年,Imagination公司推出了首个满足实时光线追踪的加速器专用芯片。NVIDIA于2018年在Turing架构中推出支持光线追踪的初代RT core。同年,微软宣布了支持硬件光线追踪的图形API特性集-DXR的问世;NVIDIA、ILMxLAB、UE4联合发布了基于实时光线追踪的具有电影级视觉效果的《星球大战》短片。2020年,AMD引入了对实时光线追踪的支持,在核心计算单元设计中加入了用于处理光线相交计算的专用硬件-光线加速器。Imagination于2021年将PowerVR Photon架构的光线加速集群加入到GPU中,为手机市场提供光线追踪的IP技术。NVIDIA于2023年12月推出了实时3D创作软件D5渲染器,拥有增强光线追踪性能,并提高实时视窗帧速率的功能,可带来更流畅的编辑体验,进而实现直观的交互式3D创建。

发展历史

1968年,Arthur Appel在一篇名为《 Some techniques for shading machine rendering of solids》的文章中提出了一种光线投射的理念,其具体思路是从每一个像素射出一条射线,然后找到最接近的物体挡住射线的路径,而视平面上每个像素的颜色取决于从可见光表面产生的亮度。1980年,特纳·惠特(Turner Whitted)利用光线的可逆性,首次提出了光线追踪算法。这个算法模拟真实的光照效果,在场景中的光线与物体相交后会因反射、折射和阴影等产生二次光线,二次光线再次到场景中进行相交测试。如此进行迭代计算,直到光线的反弹次数达到预期设置的值。这一算法也被称为递归式光线追踪方法。为了加快计算速度,最初的方式是有规律地划分空间网格,但这种方法存在着空间划分不合理、冗余计算较多等问题。在后续的研究中提出了加速数据结构的概念,其思路是将场景中的图元划分到不同的分层空间结构中,进而快速识别出与光线最接近的图元。kd-tree就是一种适合光线追踪的加速数据结构,曾被应用在学术界和工业界,但由于kd-tree在判断包围盒与图元是否有交集等方面存在的局限性,便出现了更有效的加速数据结构-BVH,它成为了离线和实时渲染领域应用的标准加速数据结构。

Cook于1984年引入蒙特卡洛方法到光线追踪领域,将经典的光线追踪方法扩展为分布式光线跟踪算法,该算法把每一条从摄像机发出的光线在表面点反射至多个不同的方向,分散成多束光线,以此递归,每条光线最终形成一个光线树,可以模拟更多的效果。1986年,Kajiya提出了路径追踪算法的理念,统一了光照公式,并推导出了光照公式的路径表述形式,使得光照公式由一个递归的结构,变成一个路径函数的积分。这种新的形式称为路径追踪。1993年,Lafortune和Willems提出一种双向路径追踪的方法,这种方法能够产生一些传统路径追踪难以采样到的光路,所以能够很有效地降低噪声。Veach于1997年对双向路径追踪做了详细的描述。并把Metropolis采样方法引入图形学,提出了一种新的全局光照算法,称为Metropolis光线追踪。2005年,由Cline提出了Energy Redistribution Path Tracing(ERPT)的方法,它是一种基于Energy Redistribution采样的路径追踪方法。Jakob于2012年提出了Manifold Exploration,这是一种随机采样镜面折射链接而成的光线追踪方法。

计算机、移动平台和游戏机的发展和普及使GPU(图形处理器)成为了重要的单芯片计算单元,随着人们对图像的高需求,光线追踪也被应用在GPU的成像技术中。2016年,Imagination公司推出了首个满足实时光线追踪的加速器专用芯片。NVIDIA于2018年在Turing架构中推出的初代RT core,这是一种支持光线追踪的GPU,采用多指令多数据功耗和低延迟提供卓越的带宽性能,整个显卡核心均可访问这个全局高速缓存。同年,微软宣布了支持硬件光线追踪的图形API特性集-DXR的问世;NVIDIA、ILMxLAB、UE4联合发布了基于实时光线追踪的具有电影级视觉效果的《星球大战》短片。

2020年,AMD引入了对实时光线追踪的支持,为了提高光线追踪的性能,在核心计算单元设计中加入了用于处理光线相交计算的专用硬件-光线加速器,并发布了RX 6000系列的三款GPU,其中的RX 6600 XT集成了28个光线加速器。2021年,NVIDIA推出了升级后的二代RT core,使光线与三角形相交测试的速率提升了一倍,还增加了差值三角形位置单元,主要用于光线追踪中的运动模糊功能。同年,Imagination将PowerVR Photon架构的光线加速集群加入到GPU中,为手机市场提供光线追踪的IP技术。2022年,AMD推出了集成80个光线加速器的RX 6950 XT。

光线追踪

为实现逼真的光线追踪视觉效果,NVIDIA于2023年12月推出了实时3D创作软件D5渲染器,拥有AI神经网络提供支持的DLSS超分辨率、帧生成和光线重建功能。该功能增强了光线追踪性能并提高了实时视窗帧速率,可带来更流畅的编辑体验,进而实现直观的交互式3D创建。

光线追踪

基本原理

光线追踪的原理是由人眼到屏幕的每个像素点发出光线,找出这条光线与物体表面的相交点,并找出影响相交点光强的所有光源,从而算出相交点上精确的光线强度,最后结台相交点表面的材质算出屏幕上像素点的像素值。

光线追踪的核心在于计算以人眼为原点,人眼到像素点为方向的射线,与场景中的物体是否相交,并求出相交点的坐标。在计算图形学中.物体的表示方式以三角形面片最为普遍。所以判断射线与物体是否相交的核心.实际上可以演变为判断射线与三角形是否相交。

光线追踪本质上是个递推算法。每个像素的颜色和光强须综合各级递归计算的结果才能获得。用光线追踪算法显示真实感图形不仅需要考虑光源的光照,还要考虑到场景中各物体之间反射、透射的影响;采用光线追踪方法在显示的同时,自然完成消隐功能;有影子效果,光线追踪能完成影子的显示;光线追踪算法具有并行性质,每条光线的处理过程相同,结果相互独立,因此可在并行处理的硬件上快速实现光线追踪算法。在实际的算法进行过程中,需要给出一些光线追踪的终止条件。比如,该光线未碰到任何物体;该光线碰到了背景;光线在经过许多次反射和折射以后,就会产生衰减;光线反射或折射次数大于一定值。

光线追踪

优化技术

光线束遍历

光线束遍历是利用单指令多数据流架构,将多条光线当作一个光线束,调度到GPU的线程束(warp)或CPU的不同线程中进行处理,不同光线共享遍历栈。因此同一个光线束遍历的顺序是一致的。只要其中的一条光线与某个节点相交,那么整个光线束都遍历该节点的子树。该方式能够将二次光线分成阴影光线、反射光线和折射光线三种光线束来进行光线追踪,使光线束的组合更加合理,性能得到较大的提升。但是,该方式的性能会受到内存带宽的限制。

无栈遍历

无栈遍历算法是光线追踪中常用的技术。这种算法的提出源于GPU中有限的寄存器空间,栈的编程复杂度和定制化硬件单元有限的片上存储资源。无栈的遍历算法带来了两点好处:一是按照特定的格式构造加速数据结构在遍历时可以减少内存的访问;二是无栈的遍历算法在GPU平台可以提高并行度,提升计算性能。但通常需要在加速数据结构中设置标记位或进行冗余操作才可以完成无栈遍历。

光线重排序

光线追踪技术由于漫反射和光泽反射会产生不连续的光线。光线束的遍历方法也需要连续的光线才能够保证高性能。此外不连续的光线会造成更高的内存带宽、更高的cache缺失率和计算分支。光线重排序的方法可以将多维光线空间映射到使用标准排序算法排序键的一维空间中,能够在一定程度上缓解这一问题。

降噪技术

随着GPU实时光线追踪解决方案的出现,在降噪领域的研究也逐步兴起。降噪技术主要是基于蒙特卡洛的渲染技术进行解决。蒙特卡洛渲染是基于随机样本的累积来近似给定场景光线追踪结果的算法。降噪技术主要包括滤波技术、机器学习驱动的滤波器、改进采样和近似技术等。滤波技术是在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制;机器学习驱动的滤波器能够帮助降噪网络生成更真实的高频细节和全局照明效果。

实时光线追踪技术

基于神经网络的实时光线追踪技术可以用于降噪、图像的重构、神经辐射场优化、光线采样和图像超分辨率上采样等技术。该技术通过对光线采样技术进行优化,减少非必要的光线采样,能够在低分辨率效果下渲染而后进行上采样的实时性输出,还能够提高镜面反射的渲染效果。

应用领域

影视

光线追踪技术主要应用于动画与离线视频生成系统。空间数据结构让光线追踪可以向实时渲染发展。空间数据结构被应用于场景图像以减少光线投射和图元结构(如三角形、圆、隐式曲面等)相交过程消耗的时间。因为屏幕光线像素的计算可以分布到并行计算单元,所以光线追踪具有高度并行性。电影工业使用渲染集群(Render Clusters)以生成复杂的光线追踪电影场景。

光线追踪

游戏

光线追踪技术在游戏领域中,可以创造更加完美的图像,而且还会对游戏玩法产生根本性的影响。光线追踪技术通过模拟光线的传播,电脑只渲染光线打到地方,因此仅需要很少的人工编程,相比于光栅式渲染简便了很多。同时光线追踪也能表现出相当真实的画面,在光影效果的表现上甚至更强,尤其是符合物理规律的光影效果。支持光线追踪的游戏包括《赛博朋克2077》《看门狗:军团》《使命召唤:现代战争》《重生:边缘》和《光明记忆》等。

光线追踪

AEC行业

能够让光线渲染更逼真和准确的光线追踪技术也被应用在建筑工程以及施工行业中,通过加入光线追踪技术,设计师可以通过类似电影画质的实时渲染来增强创造力,实现更佳的效果。与客户在房间中探索设计,对照明和材料进行实验和测试并实时调整,从而准确模拟真实世界的光线条件。人们可以看到全局照明的实时效果。在建模渲染方面,光线追踪技术被视作AEC行业的重要突破。设计完成的工程图纸,经过GPU分析后,结合材质、光照条件以及物品形状等参数,就可以再进行渲染建模实时模拟展现实际情况。同时,经过更改的参数也会在渲染中自动发生变化,实现所见即所得,并提高人机交互效率。强调浸入感的虚拟现实(VR)也成为了光线追踪的应用方向,而提高渲染效果带来的好处是,将更有利于提高AEC行业的协同办公工作效率。

光线追踪