降噪

在执行最终渲染时,尽可能降低噪点非常重要。在这里,我们将讨论一些技巧,虽然打破了物理定律,但是在合理时间内渲染动画时尤为重要的。单击以放大示例图像,查看噪声差异。

路径追踪

Cycles 在下一个事件估计时使用路径跟踪,这不擅长渲染所有类型的光效果(如焦散效果),但与其他渲染算法相比,它的优势是能够渲染更详细、更大的场景。这是因为我们不需要在内存中存储光子贴图,并且与双向路径跟踪相比,我们可以保持光线相对一致,以使用按需图像缓存。

../../../_images/render_cycles_introduction_rays.svg

我们做与现实相反的事情,将相机的光线跟踪到场景中和灯光上,而不是从光源到场景中,然后进入摄像机。这样做的好处是,我们不会浪费不会出现在相机中的光线,但也意味着很难找到一些可能贡献很大的光路。光线将根据表面 BRDF 或已知光源的方向发送。

See also

有关详细信息,请参阅 光程 以及 采样 文档。

噪点的来源

要了解噪点可能来自何处,请以下面的场景为例。当我们将光线追踪到红点上由白色圆圈标记的位置时,下面的第二个图像给人一种漫反射色光 "看到" 的印象。

要查找从曲面反射的光,我们需要从所有这些像素中查找平均颜色。注意球体上的光泽高光,以及光线投射在附近墙壁上的亮点。这些亮点比图像的其他部分亮 得多,并将显著影响此像素的照明。

../../../_images/render_cycles_optimizations_reducing-noise_fisheye-reference.jpg

这个场景。

../../../_images/render_cycles_optimizations_reducing-noise_fisheye.jpg

阴影点的亮照度。

../../../_images/render_cycles_optimizations_reducing-noise_fisheye-hotspot.jpg

检测到的高光。

光源是已知来源,所以其位置已知,但它导致的光泽高光又是另一回事。对于路径跟踪,我们所能做的最好的事情就是在半球上随机分布光线,希望找到所有重要的亮点。如果对于一些像素我们错过了一些亮点,但是我们确实为另一个像素找到了它,这会导致噪点。我们采集的样本越多,我们覆盖所有重要光源的概率就越高。

通过一些技巧,我们可以降低这种噪点。如果我们模糊亮点,它们就会变得更大,越来越不强烈,它们就更容易找到,噪点也更少。这不会给出相同的精确结果,但通常通过漫反射或柔和的光泽反射查看时,效果往往足够接近。下面是使用 光泽过滤器灯光衰减 的文档。

../../../_images/render_cycles_optimizations_reducing-noise_fisheye-blur-reference.jpg

使用光泽过滤&灯光衰减。

../../../_images/render_cycles_optimizations_reducing-noise_fisheye-blur.jpg

阴影点的亮照度。

../../../_images/render_cycles_optimizations_reducing-noise_fisheye-blur-hotspot.jpg

检测到的高光。

最多反弹次数

在现实中,由于光速非常高,光会反弹大量。实际上,更多的反弹会引起更多的噪点,并且最好在 光线追踪` 部分中使用 更少 反弹,用于不同的色泽器类型,使用 有限全局照明 预设。漫反射表面通常可以减少反弹,而光泽表面需要更多,而传输制光器(如玻璃)通常最需要。

../../../_images/render_cycles_optimizations_reducing-noise_0bounce.jpg

没有反弹。

../../../_images/render_cycles_optimizations_reducing-noise_2bounce.jpg

最多两次反弹。

../../../_images/render_cycles_optimizations_reducing-noise_4bounce.jpg

最多四次反弹。

同样重要的是,使用 没有 值1.0的组件或接近该值的颜色着色器;尝试将最大值保持在0.8或更小,并使灯光更亮。实际上,表面很少能完全反射所有的光,但当然也有例外;通常玻璃会让大部分光通过,这就是为什么我们需要更多的反射。颜色分量的高值往往会引起噪点,因为光强度不会随着它从每个表面反弹而降低。

焦散和滤除光泽

Caustics are a well-known source of noise, causing Fireflies. They happen because the renderer has difficulty finding specular highlights viewed through a soft glossy or diffuse reflection. There is a No Caustics option to disable glossy behind a diffuse reflection entirely. Many renderers will typically disable caustics by default.

../../../_images/render_cycles_optimizations_reducing-noise_reference.jpg

默认设置。

../../../_images/render_cycles_optimizations_reducing-noise_no-caustics.jpg

焦散禁用。

../../../_images/render_cycles_optimizations_reducing-noise_filter-glossy.jpg

过滤光泽大于零。

然而,不使用焦散会导致光线丢失,并且它仍然不包括通过柔和的光泽反射来查看锐利光泽反射的情况。有一个 滤除光泽 选项可以降低来自这种情况的噪点,但代价是准确性会产生偏差。这将通过增加着色器的粗糙度来模糊锐利的光泽反射,以使其更易于查找。

上图显示了默认设置,没有焦散,滤除器光泽设置为1.0。

光线衰减

在现实中,真空中的光总是以1/(距离^2)的速率衰减。然而,随着距离变为零,这个值就变成了无穷大,我们可以在图像中得到非常亮的点。这些大多是间接照明的问题,在间接照明中,击中这样一个小但极亮的点的概率很低,因此很少发生。这是典型的 闪点

../../../_images/render_cycles_optimizations_reducing-noise_falloff-hard.jpg

硬衰减。

../../../_images/render_cycles_optimizations_reducing-noise_falloff-soft.jpg

软衰减。

为了减少此问题,光线衰减 节点具有 平滑因子 ,可用于降低光线对附近曲面可能影响的最大强度。上面的图像显示默认衰落和平滑值 1.0。

多重重要性采样

可将具有自发光着色器的配置为使用多重重要性采样 (材质设置) 。这意味着,他们将得到射线直接发送到他们,而不是结束在那里根据光线随机反弹周围。对于非常明亮的网状光源,这可以显著降低噪声。然而,当发射不是特别明亮时,这将从其他较亮的光源中抽取样品,而以这种方式找到它们很重要。

这里的最佳设置很难猜测;它可能是一个试验和错误的问题,但通常很明显,一个有点发光的物体可能只在本地提供光,而用作光的网光需要启用此选项。下面是一个示例,其中发射球体对照明的贡献很小,并且图像通过禁用多重重要性来渲染其噪点略小。

../../../_images/render_cycles_optimizations_reducing-noise_sample-lamp.jpg

多重重要性关闭。

../../../_images/render_cycles_optimizations_reducing-noise_no-sample-lamp.jpg

多重重要性开启。

世界背景还有一个 多重重要性 (设置) 选项。这对于具有小亮点的环境地图非常有用,并不单纯是平滑处理。然后在预处理中,此选项将确定亮点,并直接向它们发送光线。同样,如果不需要此选项,则启用此选项可能会从更重要的光源中获取样本。

玻璃和透明阴影

禁用焦散后,玻璃会错过阴影,并且具有滤镜光泽,它们可能会更柔和。我们可以制作一个玻璃扫描器,当 直接 观看时,将使用玻璃BSDF,在 间接 查看时使用透明 BSDF。透明 BSDF 可用于透明阴影,以直接通过曲面查找光源,并给出颜色适当的阴影,但没有焦散。光程节点将用于确定何时使用两个着色器中的哪个。

../../../_images/render_cycles_optimizations_reducing-noise_glass-group.png

优化的玻璃着色器。

上面我们可以看到用于玻璃透明度技巧的节点设置;在左侧由于缺少焦散,渲染有太多的阴影,右侧则带有该技巧的渲染。

../../../_images/render_cycles_optimizations_reducing-noise_glass-too-much-shadow.jpg

默认的玻璃 BSDF。

../../../_images/render_cycles_optimizations_reducing-noise_glass-trick.jpg

优化的玻璃着色器。

日光入口

当渲染一个日光室内场景时,大部分光线都是通过窗户或门的开口进入,集成器很难找到通向它们的路。要解决此问题,请使用 灯光入口 。然后,你将需要修改它的形状,以匹配你想要填充的洞口的形状。

../../../_images/render_cycles_light-settings_portals2.jpg
../../../_images/render_cycles_light-settings_portals.jpg

降噪

Even with all the settings described above there will always end up being some render noise no matter how many samples you use. To fix this there is a post-processing technique to cleanup the final bit of noise. To use this enable Denoising in the Render Layers tab of the Properties.

Below is an example render by The Pixelary.

../../../_images/render_layers_denoising_example1.jpg

降噪前的渲染示例。

../../../_images/render_layers_denoising_example2.jpg

降噪后的渲染示例。

钳制光斑

最理想的情况是,使用之前的所有技巧,将 闪点 消灭,但它们仍然可能发生。为此,使用积分器 钳制设置 可以使任意单独的光线样本对像素的贡献 强度 可以 钳制 到一个最大值。

如果设置得太低,这可能会导致图像中缺少高光,这或许有助于保留相机效果,如光晕或眩光。为了减轻这个难题,通常只对间接反弹进行钳制是有用的,这样可以使相机直接看到的高光不会受到影响。

../../../_images/render_cycles_optimizations_reducing-noise_no-clamp.jpg

没有钳制(0)。

../../../_images/render_cycles_optimizations_reducing-noise_clamp4.jpg

钳制设置为 4。