实时光线追踪渲染

1 引言
经历了多年发展, 直到本世纪初, 以影视CG为典型代表的离线渲染 (非实时渲染) 技术终于能达到真假难辨的程度, 而一脉相承的实时渲染在应用上距离这一目标无疑还有所欠缺。实时光线追踪, 可能就是这欠缺中的关键一环。将当前的实时渲染技术与离线渲染技术相比较, 二者在模型细节、纹理效果、材质表现和基本光影等方面所呈现出的视觉效果的差异已经不再明显。得益于硬件性能的不断提高, 越来越多的曾经只能用于离线渲染的技术和方法也已经应用于实时渲染以获得更加逼真的显示效果。
涡轮分子泵
2 定义与简介
    在自然界中,光源发出的光线会不断地向前传播,直到遇到一个妨碍它继续传播的物体表面——把“光线”看作在一串在同样路径中传输的光子流的话,在完全的真空中,这条光线将是一条标准的直线。但是实际上,由于大气折射,引力效应、材质反射等多种因素——在现实中,光子流实际上是会被吸收、反射与折射的——物体表面可能在一个或者多个方向反射全部或者部分的光线,并有可能吸收部分光线,使得最终光线以种种形式,不同的强度,反射或者折射进人的眼睛。
不过,这一点在计算机图形学中却有所不同——作为三维计算机图形学中的特殊渲染算法,光线追踪的原理颇有把物理中“光线追踪”方法反过来用的意味——它通过将光的路径跟踪为图像平面中的像素并模拟其与虚拟对象的相遇来生成图像,从而产生高度拟真的光影效果,还可以轻松模拟各种光学效果(例如反射和折射,散射和散现象(例如差))——唯一的缺点,就是它相对较高的计算成本了。
光线追踪主要思想是从视点向成像平面上的像素发射光线,到阻挡光线传播的最近物体,如果交点表面为散射面,则计算光源直接照射该点产生的颜;如果该交点表面为镜
面或折射面,则继续向反射或折射方向跟踪另一条光线,如此往复循环,直到光线射出场景或者达到规定计算次数(还是为了节省资源)。这个方法被称之为经典光线跟踪方法或者递归式光线追踪方法。利用Compute Shader,屏幕的每个像素点向外释放一条射线来采样颜,利用光线可逆的原则,每条光线根据碰撞到的物体进行反射,如此反复直到采样到天空盒(无限远)或者达到最大的反射次数。
运用光线追踪技术,有以下渲染特性:
更精确的反射、折射和透射。
贝雷梁更准确的阴影。包括自阴影、软阴影、区域阴影、多光源阴影等。
更精准的全局光照。
更真实的环境光遮蔽(AO)真空磁悬浮列车
光线追踪技术可以精确地反映复杂的反射、折射、透射、阴影、全局光等物理特性。当然,光线追踪也不是万全的渲染技术,它有苛刻的硬件要求、有限度的渲染特性支持以及噪点干扰等负面特点。
2 种类与发展历程
要想了解光线追踪,就必须先从“光栅化渲染技术”讲起。
到实际渲染中理解光栅化的过程:虚拟场景中的每一个模型都是由构成它的许多三角面组成的, 若要将模型中的一个三角面显示在屏幕上, 首先在先判定三角面的三个顶点在视场中的位置并将其坐标变换对应到屏幕坐标, 然后将三个顶点涵盖的区域 (像素) 进行填充。由此可见, 光栅化方法能够将复杂的场景内容拆分成为一个个由若干像素组成的相对独立的计算
单元。通过这种方式可以充分利用GPU的多线程渲染流水线, 即通过在GPU上并行完成大量的简单计算实现快速渲染的目的。连接轴
光栅化技术的这种拆分计算导致这以种方法处理一些全局效果时遇到很大的困难。影响场景的全局效果主要是场景中光影的交互效果, 比如全局光照、阴影、反射、折射等。因为这些效果都不是由单一对象构成的, 比如阴影就属于光源和遮挡物体作用在被遮挡物体上形成的, 被光栅化拆分到不同计算单元中的这些元素或物体部分就很难再去实现交互影响的计算。前人为了克服其短板用其他手段模拟阴影等效果, 取得了很多成果却也导致渲染复杂度的攀升。光栅化的渲染方法应用至今, 为了渲染出更真实的画面, 其复杂程度早已今非昔比, 相当多的渲染技术甚至需要脱离常人认知层次专业级的数学功底才能理解, 但其在实现以假乱真的视觉效果上还是差强人意。
光栅化渲染方式的最大弊端就是不能模拟现实中光线的传播规律, 导致在模拟光影效果方面的严重不足。正是为了克服光栅化渲染方式的这一缺憾, 以真实光线传播规律为基础的光线追踪渲染方法被越来越多的使用起来。
其实光线追踪并不是近几年才有的概念,它的历史甚至可以追溯到上世纪70年代。Arthur
Appel 于 1968 年提出将光线追踪算法应用于图片渲染的概念,那时还叫 ray casting,这也是后来光线追踪的基石。但一直等到 10 年后的 1979 年,Turner Whitted才继续在论文An Improved Illumination Model for Shaded Display中,具体解析如何捕捉反射、阴影和反射。在光线投射的基础上,加入光与物体表面的交互。
而在电影行业中,早就用上了我们提及的光线追踪,他们已经有相当成熟的解决方案,完全可以达到以假乱真的效果,你看看漫威的科幻大片,是不是给你一种异常真实的错觉?没错,这就是光线追踪的魅力。至于为什么电影行业能这样做,原因不外乎有两个:一是有时间,他们采用的离线光线追踪,是要慢慢一帧帧渲染出来;二是有钱,通常特效工作室会使用到NVIDIA所说的渲染农场,不是一台电脑在算,而是一个个渲染集服务器在工作。
早在上世纪60年代,美国科学家已经尝试将光线投射应用于军事领域的计算机图形生成。随着技术的成熟,很快应用于好莱坞电影及动漫制作。目前,绝大多数需要后期特效的好莱坞电影,除了风格化的类型之外,基本都使用了光线追踪技术。
计算器以足够快的速度生成一系列图像以实现交互的过程称为实时渲染。实时渲染的目标
是匹配显示器的刷新率,使视觉效果平顺——所以我们说的是 60 赫兹 = 60 帧每秒(帧/秒)的游戏和 VR。(24 或 30 帧每秒通常被称为“实时”,但技术上与电影和电视帧率有关。)
光线追踪通常有以下几种方式:真空回流炉
2.1 反向光线追踪
最典型的光线追踪渲染应用方式, 并不是采用沿着光线传播的方向从光源开始模拟, 而是根据光线直线传播的可回溯性特质, 从观察者角度“穿透”屏幕发射“光线”。当发射的“光线”触碰到场景中的第一个物体, 那么这个物体被“光线”碰触到的点就是未被遮挡的, 而后“光线”遵从光学传播原理经过一系列的反射、折射若能到达一处光源, 那么这条光线碰触的部分就是被此光源“照亮”的, 否则就属于阴影的一部分。而后渲染器就能以此为根据为这束“光线”在屏幕上的对应位置 (通常以像素点为单位) 着。这种反向追踪的方法避免了去计算那些在正向光线追踪 (从光源追踪光线) 时, 最终不会到达观察者 (即不需要显示在屏幕上) 的光线, 节省了大量不必要的计算内容。
2.2 蒙特卡洛光线追踪
典型的反向光线追踪方法, 虽然利用了物理原理构建了理论方案, 但相对于现实中的复杂情况, 这一模拟方案就显得有些简单粗暴了。它主要存在两个方面问题: (1) 仅能处理镜面反射、规则投射和遮挡阴影, 忽略了漫反射; (2) 由于模拟的光能传递属于理想表面之间的, 所有基于这个方法的物体表面属性其实是单一的。
为了改善上述问题, 在反向光线追踪的基础之上, 引入物体表面的漫反射属性, 从概率理论出发去决定到达物体表面的光线是要进行反射、折射还是漫反射。同时为了应对引入表面属性造成的光线采样增多问题, 进一步利用概率理论进行简化, 用少量相对重要的光线采样来模拟积分结果。这种改进方法的具体方案有很多种形式, 他们统称为蒙特卡洛光线追踪。相对于典型的反向光线追踪, 蒙特卡洛光线追踪引入了更复杂的漫反射材质, 这导致了需要跟踪的光线数量大幅增加, 于是通过采样算法去减少需要跟踪的光线数量。现在, 具有相对成熟的采样模型的蒙特卡洛光线追踪算法已经具备相当高的运行效率, 一度使得光线追踪走出专业图形工作站甚至可以在家用级别的硬件上使用。
2.3 双向光线追踪
监控利用反向光线追踪可以较好地表现出反射和折射的效果, 还能得到真实度很高的阴影。但是
经过大量的理论分析及实践, 人们知道采用这种方式还不能足以体现现实世界中绝大多数的光影效果。物体间的多重漫反射、颜渗透、焦和柔和阴影等现象都不能在仅使用反向光线追踪方式的渲染结果中得到。另外, 鉴于反向光线跟踪离散式的对待不同像素对应采样光线的跟踪计算, 导致必然会有一定量的重复计算。为了提升画面效果而增加采样光线数量时, 其中大幅增加的重复计算也让反向光线跟踪失去了原本简洁高效的优势。
真正符合现实实际的正向光线追踪又被重新纳入考虑范畴。光线由光源发出, 在场景中的每一次光能转化都被记录, 而后只要收集这些信息就可以知道任意点上面的亮度。只要进行足够次数的光能转化计算和相应的颜处理, 就能以极高的拟真性表现出焦散、颜渗透、柔和阴影等真实光影现象。若能在正向光线跟踪的基础上, 使用反向光线跟踪的采样思想, 就能一定程度的规避正向追踪庞大计算量造成的实际应用困境。这种综合运用正、反向光线追踪的技术方案, 统称双向光线追踪。
2.4 光子图
在每一次渲染中都同时进行一次细致的正、反向光线追踪理论上能获得最接近真实的光影效果, 但这是不切实际的, 至少以目前计算机的运算处理能力还远远不能满足设想。于是有
人提出, 在场景中物体和灯光不变的情况下, 可以用单次正向光线跟踪的计算结果根据观察视角的变化进行多次的、动态的反向光线跟踪渲染。这样, 不仅使渲染画面具备了正向光线跟踪光影表现更真实可信的有点, 还能剔除单纯反向跟踪难以避免的重复采样, 极大提升了渲染效率。存储下来的这次正向光线跟踪结果, 通常称之为光子图。
4 实现基础
光栅化是早期受限于硬件局限的妥协之策, 不论是从基础原理上脱离物理现实的缺憾, 还是后人为了在光栅化基础上模拟实现其他光影效果使光栅技术整体呈现臃肿的现状, 都导致光栅化并不适用于对虚拟场景逼真效果的要求进一步提升的未来。想要大幅缩减光线追踪的时间成本还应该主要从算法优化和硬件水平提升两个方面着手。
3.1 算法方面
光线追踪计算中判定空间中光线与物体碰撞的计算部分 (求交计算) 是耗时最多的计算部分。如果不采取加速措施, 求交计算将占整个光线追踪耗时的95%以上。因此, 大部分算法优化都是针对求交计算试图减少其总开销, 而具体实现思路又分以下三种方向。
(1) 通过快速排除与求交计算无关的物体, 可以大幅减少单次光线追踪涉及的求交测试数量, 有效提升单次求交运算的效率。典型方法有空间剖分技术、层次盒包围技术和方向技术。 (2) 通过减少单次光线的碰撞计算数量, 可以大幅减少求交计算总数, 有效控制计算总量。主要思路是光线经过物体反射后会丧失能量, 在与光线吸收能力强的表面或多次碰撞后, 光线能量降低对场景照明的贡献很少, 此时就不在继续对这条光线的求交计算。这个思路需要综合考虑物体材质和光线衰减, 所以若能有合适的材质设定配合效率的提升会更为直接。 (3) 通过概率算法基于更少的采样获取足够的渲染数据, 或者用光束、光锥这类模拟实体代替光线进行计算, 直接减少所需求交测试的数量。

本文发布于:2024-09-22 04:25:32,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/251542.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:光线   追踪   渲染   计算   物体   效果
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议