Understanding Adaptive Lights


 

 

简介

 

Dabarti Studio 的 Tomasz Wyszołmirski 是 V-Ray for 3ds Max 测试者,最近测试了一项叫做 自适应灯光 的新技术,会在 V-Ray 3.5 版更新,他在他的网站对此撰写了 一篇博客 展示了新的自适应灯光技术有多快。

 

但是什么是自适应灯光?光线追踪确实能为我们提供最真实的灯光渲染,但这个算法本身也带来了挑战性。最常见的问题就是场景中有非常多的灯光时。当 V-Ray 3.0 问世的时候我们引入了新的技术解决这个问题,叫做概率灯光。在最新到来的升级包 V-Ray 3.5 中,我们会向大家带来改进的算法叫做自适应灯光。

为了更好地理解这个技术,我们详解一下在一个着色点评估灯光的不同算法。

 

完整灯光计算

 

这是我们在版本 3 以前处理灯光的方法。在这个方法中,每一条光线,我们都会评估每一个光源。再有5到10个灯光的场景,这一般都不是问题。但是在有 100 到 1000 个灯光的场景,这会大大拖慢你的渲染速度。

 

概率灯光

 

在这个算法中。每一支射线会随机选择固定数量的灯光光源。默认是16个光源,在示意图中我们假设这个数字是5。这会大大减少着色点的灯光计算数量。因为下一只射线又会选择其他五盏灯光,而我们总共会射出上百万射线,所以总体下来每个灯光都还会被采样的。一般来说,这个算法比起老的每次灯光都计算的算法会快一些。但是这个算法的一个缺点是有可能带来噪点,需要更多的采样才能抹平。而且有些着色点有可能会计算那些根本就不会照射过来,不会产生贡献的灯光。

 

自适应灯光

 

这个算法是基于概率灯光的,但是在选择评估灯光方面更聪明。它基于灯光缓存通道。灯光缓存通常是用于全局照明计算的,但是它同时也能让 V-Ray 对场景有一个准确的了解。最终的结果是,不再随机选择5个灯光,而是会选择5个对这个着色点影响最大的灯光。这就能帮助 V-Ray 更快地计算出干净的结果。

 

要说明的是,概率灯光仍然还是在计算大量灯光的时候的好选择。在大部分灯光多的场景中,它仍然很好用。但是基于灯光缓存结果更聪明地选择灯光,自适应灯光,一般来说结果更好。

在如下的案例中,我们测试一个有很多分隔的空间。我们在场景中放置168盏灯。我们会比较全灯光计算,概率灯光,和自适应灯光在三种情况下的表现。

 

低灯光

 

在第一个测试中,我们把灯光放置得相当低。因为场景中的墙,大部分灯光只影响附近区域。

 

 

中高灯光

 

我们把灯光提高到中等高度,灯光对周围影响更多。
 

 

高灯光

 

最后,我们把灯光提高到足够的高度,让灯光影响更多的场景。
 

 

所有图片都使用相同的噪点阈值,它们有相同的噪点水平,以下是测试结果:
 

场景 全灯光 概率灯光 自适应 概率/全 自适应/全 自适应/概率
低灯光 110s 166s 45s 150.91% 40.91% 27.11%
中灯光 56s 72s 25s 128.57% 44.64% 34.72%
高灯光 84s 43s 30s 51.19% 35.71% 69.77%

 


尽管这个试验的设计目的是展示自适应灯光的优势,它同时也展示了,在某些情况下,概率灯光有可能会带来噪点的增加。在相同时间,自适应算法有稳定的优秀表现。甚至在概率灯光表现优异的场景,自适应灯光仍然有更快的表现。

强烈推荐您访问 Tomasz Wyszołmirski 博客 查看全灯光 vs 概率灯光 vs 自适应灯光更详细的跑分对比。

About the author

Christopher Nichols

Chris is a CG industry veteran and Director of Chaos Group Labs. He can also be heard regularly as the host of the CG Garage podcast which attracts 20,000 weekly listeners. With a background in both VFX and Design, Chris has worked for Gensler, Digital Domain, Imageworks and Method Studios. His credits include Maleficent, Oblivion and Tron: Legacy.