5.2 光线追踪、路径追踪、光线投射、光线步进介绍

画板

光线追踪

Lecture13 光线追踪1 (yuque.com)

光栅化渲染

光栅化渲染:将场景中的渲染任务按照以下方式拆解:物体->三角面->像素。这种拆解会导致全局信息的丢失,无法精确实现一些全局效果。但是可以利用阴影贴图、反射贴图等等来实现这些效果,但只是近似实现,并不精确。(常用各种纹理贴图简析(AO, Normal等) - 知乎 (zhihu.com)

为了解决光栅化渲染的缺点,出现了光线追踪技术。

光线追踪

光线追踪是一种渲染框架,与光栅化渲染并列。采用路径追踪的光线追踪方法步骤为:从相机出发,对每个像素点,向场景投射光线,直到光线与场景中第一个物体相交,在交点处根据物体性质、光源属性和光照模型等计算这个交点的颜色。然后,在交点处,该光线发生反射或折射,继续遍历追踪反射光线和折射光线,直到光线与下一个表面相交,计算该交点的颜色。直到光线到达光源或逸出场景。

光线追踪将一个场景的渲染任务按照光线拆解。这些光线之间是并行的。光线追踪可以获得一个场景的全局信息

为什么说它能获得全局信息呢?我们先来看光线投射

光线投射

例如下图中,我们从人眼发出一条射线,穿过屏幕与场景中的物体相交,将该交点与光源连线,这时候我们就知道了该点的视线、光线和法线方向。这样的话我们就可以通过例如Bulin-phong模型计算该点的颜色等信息。

光线投射模型提出的初衷是判断物体是否处于阴影之中的,如果光源连线中没有其他物体遮挡,那么就不处于阴影中。

光线投射是光线追踪的前身,但不是真正的光线追踪方法。

递归光线追踪

第一种光线追踪,也成为经典光线追踪技术。

如图,假设与视线相交的第一个物体是半透明物体,那么会产生折射与反射,产生二次交点。将所有交点和光源连线后,将这些光线分类:初始光线、二次光线、阴影光线。

这些光线的用处,对应到公式里面:

:视线的第一个交点的漫反射(可以有多光源)

:反射再反射的交点,计算该点的漫反射(兰伯特)

:反射再折射

:环境光

加起来就是该点在屏幕上的颜色

我们发现上述方法都需要计算交点,如何计算交点呢?

递归光线追踪有一定的缺点,首先在物理上不过严谨,这是因为这里的折射和反射都是理想情况下的,其次它没有考虑来自其他物体的漫反射光线,例如该点没有考虑长方体的漫反射。

为了解决这个问题,提出了路径追踪的方法。

路径追踪

说到路径追踪,就不得不提到Kajiya渲染方程,这个方程解决了两个问题:

  • 什么是渲染
  • 怎么渲染

出射光 = 自发光 + 半球上贡献的积分

详见BRDF

问题

例如三条光线,只反射一次。最后混合,计算像素的颜色。

假如有一条光线反射迭代了很多次都没有达到光源,那么会很耗性能。

路径追踪的一个显著缺点是噪点。但是,随着更多路径的积累,噪点会消失,并最终收敛为清晰的图像。

噪点

:::color5
在了解以上后,我们重新总结一下光线追踪的定义

:::

体积光线投射

例如要获得Start点的颜色,就需要对Start和End之间的点进行三维纹理采样之后混合,得到Start的颜色。

光线步进

总结

作业

分别分析光线追踪,路径追踪,光线投射,光线步进在游戏上有哪些技术的应用。

光线追踪、路径追踪、光线投射和光线步进在游戏开发中有着广泛的应用,它们各自的技术特点和适用场景如下‌:

  1. 光线追踪‌:
    • ‌应用场景‌:主要用于实现全局光照(GI)、预计算和预烘焙(如UE4里的预烘焙Ao软阴影)、反射的计算等。
    • ‌技术特点‌:从相机出发,对每个像素点向场景投射光线,直到光线与场景中第一个物体相交,在交点处根据物体性质、光源属性和光照模型等计算该点的颜色。光线追踪能够精确实现一些效果,如软阴影和间接光照,从而提高画面的真实度。
  2. 路径追踪‌:
    • ‌应用场景‌:配合降噪实现RayTracing的一些技术,用于当光源面积较小时的全局光照计算。
    • ‌技术特点‌:路径追踪的理论基础是渲染方程,通过不断递归的过程计算光照,直到光线到达光源或逸出场景。它通过蒙特卡洛积分运算对每条路径的贡献值进行平均求和,实现较为真实的渲染效果。
  3. 光线投射‌:
    • ‌应用场景‌:主要用于体绘制技术,如医学影像处理。
    • ‌技术特点‌:从视线出发,穿过三维物体,物体的每一个体素都储存着所需要的信息,通过插值计算出采样点的信息,之后按照固定信息对光线上的采样点进行信息的合成,计算出光线对于屏幕上像素的颜色值。
  4. 光线步进‌:
    • ‌应用场景‌:与距离场相关的算法,如体积云、海浪、简易光线追踪等。
    • ‌技术特点‌:是一种迭代算法,通过逐步调整光线的位置和方向,直到达到预期的效果或满足特定的终止条件。它适用于处理复杂的几何结构和需要精细控制光线路径的场景。

光线追踪

多年来,在游戏中进行路径追踪的想法是无法想象的。虽然许多游戏开发人员都同意,如果他们拥有实时图形所需的性能,他们会希望使用路径追踪,但性能远未实时实现,路径追踪似乎无法实现。

然而,随着 GPU 的不断发展和增加,以及 RTX 硬件的广泛使用,实时路径追踪变得触目了然。正如电影在切换到路径追踪之前开始采用一些光线追踪技术一样,游戏开始以有限的方式使用光线追踪。

目前,越来越多的游戏部分应用了光线追踪。它们将传统的基于光栅化的渲染技术与一些光线追踪效果相结合。

光线追踪的技术要求是什么?

  • 到目前为止,只有少数硬件和软件系统支持光线追踪技术。要使用流体光线追踪显示游戏和动画,快速、强大的计算机和 RTX 显卡是必不可少的。通常需要昂贵的 PC 升级才能拥有必要的计算能力。提供光线追踪支持的显卡包括第一代和第二代 Nvidia RTX 显卡(例如 GeForce RTX 2070 和 GeForce RTX 3070)。Radeon-RX-6000 一代的某些 AMD 显卡(例如 RX 6800 和 RX 6900 XT)也已经支持光线追踪。

以下游戏使用光线追踪:一系列不同的 PC 和计算机游戏已经提供了光线追踪支持。

具有光线追踪的 PC 游戏:我的世界 RTX 版、古墓丽影之影、巫师 3:完整版、使命召唤:黑色行动冷战、控制、F1 2021

具有光线追踪的主机游戏:跑车浪漫旅 7、光环无限、看门狗:军团、齿轮 5
《赛博朋克 2077》截图

黑神话:悟空

路径追踪

那么,在这种情况下,路径追踪意味着什么呢?这可能意味着技术的组合。游戏开发人员可以栅格化远光灯,然后跟踪场景的照明。栅格化相当于从单个点发射一组光线,该点在它接触的第一个对象处停止。光线追踪更进一步,从任何方向的许多点发射光线。路径追踪模拟光线的真实物理特性,它使用光线追踪作为更大的光线模拟系统的组件。这意味着场景中的所有灯光都使用 Monte Carlo 或其他技术进行随机采样,既可用于直接照明、灯光对象或角色,也可用于光照室内或具有间接照明的环境中的全局照明。为此,正如 Kajiya 所指出的那样,光束将多次反射跟踪,而不是通过反射向后跟踪光束,大概是回到它们的光源。

一些游戏已经在这样做了,结果令人印象深刻。Microsoft 发布了一个附加组件,它利用了 Minecraft 中的路径跟踪。Quake II 是一款经典射击游戏,通常是高级图形技术的沙盒,借助新插件,也可以完全跟踪。

路径追踪和光线追踪

光线投射

光线步进

参考:

什么是路径追踪?|Blog de NVIDIA

“黑神话:悟空 (Black Myth: Wukong)”现已发布,并支持全景光线追踪和 DLSS 3——借助 GeForce RTX 40 系列 GPU 获得卓越体验 | GeForce 新闻 | NVIDIA

路径追踪 (Path tracing) | High Definition RP | 10.4.0 (unity3d.com)

路径追踪:您需要了解的有关将彻底改变视频游戏图形的技术的所有信息 - GEARRICE

【百人计划】图形 5.2 光线追踪、路径追踪、光线投射、光线步进_预烘焙ao-CSDN博客

在Unity里使用光线步进(Raymarching)_unity raymarching-CSDN博客

RayMarching实时体积云渲染入门(上) - 知乎 (zhihu.com)

URP光线步进体积云实战(一) - 知乎 (zhihu.com)

【路径追踪】PathTracing 算法-CSDN博客

posted @   殊岌  阅读(276)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示