降噪

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

路径追踪

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

../../../_images/render_cycles_render-settings_light-paths_rays.svg

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

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

检测到的高光。

The light is a known light source, so its location is already known, but the glossy highlight(s) that it causes are a different matter. The best we can do with path tracing is to distribute light rays randomly over the hemisphere, hoping to find all the important bright spots. If for some pixels we miss some bright spot, but we do find it for another, that results in noise. The more samples we take, the higher the probability that we cover all the important sources of light.

通过一些技巧,我们可以减少这种噪波。如果我们模糊亮点,它们会变得更大,强度更低,使它们更容易找到,噪波更小。这不会给出相同的确切结果,但是当通过漫反射或柔和的光泽反射观察时,它通常足够接近。下面是使用 光泽滤镜光线衰减 的示例。

../../../_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或更小,并使灯光更亮。实际上,表面很少能完全反射所有的光,但当然也有例外;通常玻璃会让大部分光通过,这就是为什么我们需要更多的反射。颜色分量的高值往往会引起噪点,因为光强度不会随着它从每个表面反弹而降低。

焦散和滤除光泽

焦散是众所周知的噪声源,导致 光斑。发生这种情况是因为渲染器很难找到通过柔和的光泽或漫反射看到的镜面高光。有一个 无焦散 选项,可以完全禁用漫反射后面的光泽。默认情况下,许多渲染器通常会禁用焦散。

../../../_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。

光线衰减

In reality light in a vacuum will always fall off at a rate of 1/(distance^2). However, as distance goes to zero, this value goes to infinity and we can get very bright spots in the image. These are mostly a problem for indirect lighting, where the probability of hitting such a small but extremely bright spot is low and so happens only rarely. This is a typical recipe for Fireflies.

../../../_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

降噪

即使使用上述所有设置,无论您使用多少样本,最终总会出现一些渲染噪点。为了解决这个问题,有一种后处理技术来清除最后一点噪点。要使用此功能,请在属性的 渲染 选项卡中启用 降噪

下面是 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。