使用 NVIDIA OPTIX DENOISER 降噪器进行 V-RAY NEXT 实验

噪点的问题

光线追踪与摄影一样,需要大量的光线样本才能获得清晰的图像,不管是 CG 渲染或是真实摄影,噪点都是个挑战。在摄影中,光线不足时,样本稀疏,整体图像呈颗粒状。 光线追踪和 CG 也是如此。如果光线追迹时间很短,则样本会受到限制,图像会变得很多噪点。在这两种情况下,解决的办法是增加更多的样本。 为了在摄影中获得更多的样本,您可以打开光圈或增加曝光时间以获取更多光子。 在光线追踪中,您可以等待更长的时间来计算更多的样本,或者添加更多的计算机计算能力来更快地解析图像。

另一个可以说明图像中的噪点的东西叫做去噪(denoising)。最简单的去噪办法是模糊所有附近的像素获得平均值。但结果将只会得到整体模糊的图像。如果去噪解决方案也能够检测边缘并确保边缘维持锐利,就会得到更好的结果。要让去噪能够据此再更进一步改善则是个更难以解决的问题。

在下面的例子中,我们从一个只有少数样本的具有很多噪点的渲染开始。第二张图片显示了在套用简单模糊滤镜后的效果,第三张图片显示了当您同时检测边缘和模糊后的效果。对于这些图像,我们使用了 Photoshop 的智能模糊滤镜(Smart Blur filter)。从技术上讲,Photoshop 的去噪 (denoiser)要比“智能模糊效果(Smart Blur)”好得多,但这有助于说明这一点。


原始噪点多的图像


套用 PHOTOSHOP 高斯模糊的图像


套用 PHOTOSHOP 的具有边缘侦测的 SMARTBLUR 的图像

在 V-Ray 3.x 中,Chaos Group 引入了我们自己的去噪解决方案。这个方案允许用户渲染图像到某个程度,然后让 V-Ray 根据具有的信息对其进行去噪。这个过程在 GPU 上运行得非常好。 我们在 GPU 指南中提到的一件事就是 GPU 在大规模平行任务中表现出色。 而去噪就是其中的一个任务。借助 GPU,我们可以获得 20 倍的速度提升,并且只需几秒钟即可完成此过程。

但去噪过程可能会更快。那么如果不是独立解决每个图像的去噪问题,倘若去噪器可以参考以前的去噪解决方案来更快地解决问题呢?

使用神经网络来帮助降噪

使用这个预先“学习”的数据是机器学习的基础。 在 V-Ray 中,V-Ray 可以使用光缓存过程中学到的数据,以更快的速度解决各种渲染问题。例如,自适应采样器(Adaptive Sampler)自适应灯光(Adaptive Lights)和新的自适应穹顶灯(Adaptive Dome Light)都使用这个概念。 但是,如果 V-Ray 能够从其他渲染的图片中学习,而不仅仅是 V-Ray 自己产生的数据呢?

目前围绕深度学习和深度神经网络的话题很多。(其实,这两个是一样的东西)。 神经网络有多深是指其网络所包含的层数。这个想法是建立一个计算网络,学习如何解决具体问题,无论是从提供的解决方案到解决问题,还是透过软件自己的测试中学习。一旦网络更理解如何解决问题,例如去噪,就可以更快地解决问题。

试想一下,如果你不知道 5 + 5 = 10,而且每次都要用手指算,那会算得很慢。 但是如果你已经知道了答案,所以你可以跳过你的手指,算的快得多了。

理论上,通过提供神经网络数以千计的不同噪点渲染以及干净的最终版本,可以学习如何使用该图像数据解决噪点问题,然后将解决方案应用于其他情况。

这正是 NVIDIA 推出的 OptiX AI 加速去噪器做的事。 他们使用 Iray 渲染的成千上万的图像构建了一个神经网络,现在这个学习的数据可以应用到其他光线跟踪图像。 我们决定来试验这个学习的数据怎样能让 V-Ray 受益。

重点在于速度

NVIDIA 的 OptiX 降噪器比 V-Ray 的降噪器有什么优势?虽然 V-Ray 降噪器速度非常快,可以在 GPU 上以秒为单位对图像进行降噪,但 OptiX 解决方案可以达到实时降低渲染效果。但请记住,降噪的图像从来不会是准确的。根据定义,降噪器给你最好的猜测结果,提供您最终的影像应该的样子。而准确性可能不是最重要的。如果您可以实时获得可用的无噪点图像,则可能会大幅改变工作流程,尤其是在照明和视觉开发阶段(look development)。

NVIDIA OptiX 降噪器如何在 V-Ray 中工作

即便除噪点的资料是以使用 Iray 渲染来收集的,还是可以将学习数据用在 V-Ray。 我们甚至可以使用 V-Ray 渲染重新训练神经网络。

去噪器对图像的了解越“真实”,而不只是用猜的,就越能做好去噪的工作。例如,让我们来看看边缘检测。由于通常基于相邻像素之间的高对比度度来检测边缘,因此噪点图像可能没有足够的信息来良好地检测边缘。 当您在 V-Ray 中渲染 diffuse pass 和 normals pass 时,去噪器会收集有关场景的足够信息以确认边缘的位置。

通过学习数据和渲染元素的结合,即使只有少量样本,OptiX 降噪器也能够很好地预测最终图像。 虽然这种类型的去噪可以在 GPU 或 CPU 上运行,但对于用户来说最大的好处是交互式地工作。

一些测试结果

在这个例子中,我们看到了一个相当复杂的场景,有很多全局照明。我们使用 diffuse 和 normal pass 给予降噪器使用。我们在渲染过程中拍摄了快照,以显示原始渲染和去噪后的渲染。

在第 1 次 pass 后的图像 – 场景由 BBB3viz 提供

在第 18 次 pass 后的图像- 场景由 BBB3viz提供

在第 11431 pass 后的图像(最终渲染) – 场景由 BBB3viz 提供

你会注意到,在第一 pass,我们得到一个几乎没有什么信息可用的图像。然而,图像并不是很接近最终图像的实际照明。但是,当我们接近最后的图像时(译者注: 计算越多次 pass 后),图像更接近实际照明。然而,您会注意到最终图像与除噪点的最终图像之间仍存在差异。

在以下视频中,我们可以看到 NVIDIA OptiX 可以实现的实时去噪的真正威力。 测试几个不同场景,随着渲染的进行,使用这个技术得到无噪点的图像。

目前的使用限制

有一些限制将来可得到解决。

  • OptiX 降噪图像只是一个近似值。对最终结果可能是一个非常接近的猜测,但是实际的渲染会更加准确。
  • OptiX 降噪图像的颜色被箝制(clamped)。目前,被降噪的图像被固定为1,不会得到与HDRI相同的颜色范围。
  • 每次 V-Ray 通过后 OptiX 去噪都会刷新。 V-Ray 的渐进渲染经过好几次的 pass 后完成。 在简单的场景中,pass 可能要耗费几毫秒,在更复杂的场景中,pass 可能需要几分钟计算。使用 OptiX 降噪器,您将只在每次的 pass 之后看到降噪的结果。
  • 在渲染的早期阶段,当噪点较多时,OptiX 的去噪效果非常好。在噪音较小的后期阶段,OptiX 降噪可能就没有这么大的优势。
  • OptiX 可能不适合动画。对于动画,我们建议使用 V-Ray 的降噪器进行跨帧降噪(cross-frame denoising)。
  • OptiX 仅对 beauty render 进行去噪,而即将到来的 V-Ray Next 可以对个别渲染元素进行去噪。
  • 使用 V-Ray 的 CPU 渲染器时,需要关闭反锯齿滤镜(anti-aliasing filter)才能让 OptiX Denoiser 正常运作。
  • 虽然 V-Ray 渲染可以在任何硬件上进行,但 OptiX Denoiser 必须使用 NVIDIA GPU。

结论

许多人长期以来以交互模式使用V-Ray渲染。这对更新着色器和灯光并以交互方式查看结果是个好方法。而问题一直以来都是,根据渐进式路径追踪的性质,图像可能具有很多噪点。借助V-Ray里面的NVIDIA新型OptiX降噪器,可以实时进行智能降噪,让用户更能感受调灯光材质时的的变化,过程中得到具有更平滑的无噪点的渲染。