简介
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 自适应灯光更详细的跑分对比。