想象一下:在炎热的夏日,你徒步到湖边,坐在树荫下,凝视着阳光照射下波光粼粼的湖面。
在这个场景中,光影两种不同的效果分别对应直接照明和间接照明。
阳光照射在湖面和树木上,水面波光粼粼,树叶显得更加翠绿。这是直接照明的效果;虽然树木投下了阴影,但阳光仍然可以从地面和其他树木反射回来,使树木显得更绿。光线投射到周围的阴影区域,这就是间接照明的过程。
为了让观看者沉浸在真实的环境中,需要在计算机图形处理过程中精确模拟光的传播行为,以实现直接和间接照明的正确平衡。
什么是直接照明和间接照明?
光直接照射在物体上称为直接照明。
直接照明可以确定从光源到达物体表面的光的颜色和数量,但忽略了可以通过其他方式到达物体表面的光,例如经过反射或折射的光。直接照明还决定了物体表面吸收和反射的光量。
来自太阳和天空的直接照明。
光从物体表面反射然后照亮其他物体的过程称为间接照明。间接照明是从光源以外的地方到达物体表面的光。换句话说,间接照明决定了到达物体表面的所有其他光的颜色和数量。间接光通常从一个表面反射到其他表面。
由于光源和观察者之间存在大量路径,间接照明通常比直接照明更难以计算且更昂贵。
同一环境中的直接照明和间接照明。
什么是全局照明?
全局照明是计算场景中可见表面上所有光(直接和间接)的颜色和数量的过程。
实现对所有类型的间接光的精确模拟是非常困难的,特别是当场景包含玻璃、水、闪亮金属等复杂材质时,或者当场景中有云、烟、雾或其他所谓的体积介质时现场。散射。
因此,一般来说,全局照明的实时图形解决方案仅限于计算间接光的子集,通常用于具有漫反射(又名哑光)材料的表面。
如何计算直接照明和间接照明?
目前有许多算法可用于计算直接照明,每种算法都有各自的优点和缺点。例如,如果场景中只有一盏灯并且没有阴影,那么计算直接照明很简单,但这样的场景不太真实。但是,当场景中有多个光源时,处理每个表面上的所有灯光可能会非常昂贵。
为了解决这些问题,技术提供商开发了优化算法和着色技术,例如延迟着色或集群着色。这些算法有助于减少需要计算的表面和光相互作用的数量。
可以通过阴影贴图、模板阴影体积和光线追踪等技术添加阴影。
阴影贴图是一个两步过程。首先,从照明的角度来看,场景被渲染成一种称为“阴影贴图”的特殊纹理。然后使用该阴影贴图来测试屏幕上的可见表面从光源的角度是否可见。阴影贴图有许多限制和伪影,并且随着场景中灯光数量的增加,其成本也会迅速增加。
模板阴影体积是渲染为从灯光提取的场景几何体的模板缓冲区。该模板缓冲区的内容可用于检查屏幕上的特定表面是否处于阴影中。模板阴影的边缘总是尖锐且不自然,但不会遇到常见的阴影贴图问题。
在引入NVIDIA RTX 技术之前,使用光线追踪来计算阴影的成本极其昂贵。光线追踪是一种模拟光的物理行为的图形渲染方法。阴影可以通过追踪屏幕表面反射的光线来计算,但如果光线来自单个点,这可能会很困难。此外,如果场景中有很多光源,使用光线追踪阴影的成本会迅速增加。
因此,制造商开发了一种更有效的采样方法,可以减少计算多个光源生成的软阴影所需的光线数量。其中有一种名为ReSTIR 的算法,它以交互式帧速率执行光线追踪,并计算由数百万条光线和阴影组成的直接照明。
使用ReSTIR 创建的直接照明和光线追踪阴影与之前的算法的比较。
什么是路径追踪?
对于间接照明和全局照明,可以使用更多的计算方法。最直接的方法是路径追踪,它模拟每个可见表面上的随机光路。有些路径到达光线并有助于完成场景构建,而其他路径则不然。
路径跟踪产生最准确的结果,完全代表场景照明并准确匹配用于材质和照明的数学模型。尽管路径追踪的计算成本很高,但它仍然是实时图形的最佳方法。
将路径追踪与不完整的光线追踪和光栅化进行比较。
直接照明和间接照明对图形领域有什么影响?
直接照明可用于构建逼真的基本外观,而间接照明可以使场景看起来更丰富、更自然。
间接照明还用于大量视频游戏制作中,以创造无处不在的环境光。这种类型的光可以是恒定的;它还可以根据排列在网格中的光探测器进行空间变化;它还可以渲染为纹理格式以包裹场景中的静态对象。这种方法被称为“光照贴图”。
在大多数情况下,环境光被表面周围称为“环境光遮挡”的几何函数遮挡,这有助于提高图像的真实感。
森林场景中的直接照明与全局照明。
直接照明、间接照明和全局照明示例
自20 世纪90 年代以来,几乎所有3D 游戏都以某种形式使用了直接和间接照明。以下是热门游戏在实现光照方面取得的一些里程碑:
《毁灭战士》的地图区域具有不同的光照强度。
1993年:《毁灭战士》是最早实现动态光照的游戏之一。在这个游戏中,每个区域的光强度是可变的,允许纹理贴图变化为明亮或黑暗,并模拟昏暗和明亮区域以及闪烁灯光等场景效果。
1995:Quake 引入光照贴图并预先计算游戏中每个关卡所需的光照贴图。光照贴图可用于调整环境光的强度。
1997 年:Quake II 为光照贴图添加了颜色以及射弹和爆炸的动态光照。
2001 年:《寂静岭2》使用逐像素光照和模板阴影。 《怪物史莱克》使用了延迟光照和模板阴影。
2007年:《孤岛危机》采用动态屏幕空间环境光遮挡技术,通过像素深度的变化来实现光感的变化。
2008 年:《Quake Wars: Ray Traced》是第一个使用光线追踪反射的游戏技术演示。
2011:Crysis 2 是第一款使用屏幕空间反射(SSR) 的游戏,这是一种重用屏幕空间数据来计算反射的流行技术。
2016 年:《古墓丽影:崛起》是第一款使用基于体素的环境光遮挡的游戏。
2018:战地V 是第一款使用光线追踪反射的商业游戏。
2019 年:《Q2VKPT》是第一款实现路径追踪的游戏,该技术后来在《Quake II RTX》中得到完善。
2020年:基于RTX的游戏《我的世界》使用RTX实现路径跟踪。
支持RTX 的《我的世界》。
实时图形的未来发展方向是什么?
实时图形未来的发展方向是在日益复杂的场景中实现更完整的光模拟。
ReSTIR 拓宽了艺术家在游戏中使用多种灯光的可能性。其新版本ReSTIR GI 将相同的原理应用于全局照明,实现更多反射和更准确的路径跟踪,同时渲染图像更快、噪音更少。目前,技术提供商正在开发更多新算法,以使路径追踪更快、更方便。
虽然使用光线追踪可以完全模拟光照效果,但这也意味着渲染的图像可能包含一些噪声。目前,降噪(noisereduction)也是一个热门的研究领域。
技术提供商正在开发更丰富的技术,帮助游戏开发者针对包含大量运动行为的复杂详细场景,在实时帧速率下有效降低噪声。目前,技术人员主要从两个方面着手解决这一问题:噪声较小的先进采样算法和能够处理日益困难情况的先进降噪器。
《赛博朋克 2077》 使用NRD 去噪。
要了解有关NVIDIA 直接照明和间接照明解决方案的更多信息,请访问:
https://developer.nvidia.cn/zh-cn/rtx/ray-tracing/rtxdi
https://developer.nvidia.cn/zh-cn/rtx/ray-tracing/rtxgi
标签:
用户评论
直接照明和间接照明,听起来好专业啊!能详细解释一下区别吗?我家装修的时候正好要用到这些知识。
有16位网友表示赞同!
直接照明太刺眼了,感觉像是在对着太阳看,间接照明应该会柔和一些吧?
有17位网友表示赞同!
直接照明和间接照明,这两个词我以前还真没听过,谢谢你分享这个知识。
有9位网友表示赞同!
直接照明和间接照明,这个标题真是让我涨知识了,之前一直以为只是灯光而已。
有19位网友表示赞同!
直接照明和间接照明,这两个词让我想起了家里的吊灯和壁灯,原来它们还有这么大的学问。
有8位网友表示赞同!
直接照明和间接照明,听起来好高级的样子,不知道怎么选择呢。
有9位网友表示赞同!
直接照明和间接照明,这两种照明方式各有优势啊,但是具体怎么用还是不太懂。
有15位网友表示赞同!
直接照明和间接照明,这两个词让我想到了办公室的照明设计,原来照明也有这么多讲究。
有17位网友表示赞同!
直接照明和间接照明,这个话题真是有趣,没想到灯光还能分这么多类型。
有16位网友表示赞同!
直接照明和间接照明,这个标题让我想起了装修时候的烦恼,希望能找到合适的照明方案。
有15位网友表示赞同!
直接照明和间接照明,这个区别真是微妙,感觉对生活品质有很大影响。
有13位网友表示赞同!
直接照明和间接照明,这两个词让我想到了节能环保,不知道哪种照明方式更节能。
有19位网友表示赞同!
直接照明和间接照明,这个标题让我对家庭装修有了新的认识,感谢分享。
有5位网友表示赞同!
直接照明和间接照明,这个话题让我对灯光设计有了更深的理解,期待看到更多相关内容。
有10位网友表示赞同!
直接照明和间接照明,两种照明方式各有千秋,但我更喜欢间接照明那种柔和的感觉。
有14位网友表示赞同!
直接照明和间接照明,这个标题真是实用,让我在装修的时候有了更多的选择。
有15位网友表示赞同!
直接照明和间接照明,这个话题让我想到了餐厅和客厅的照明设计,希望能找到合适的搭配。
有14位网友表示赞同!
直接照明和间接照明,这个区别真是让我对灯光有了全新的认识,太感谢了!
有6位网友表示赞同!