V-Ray Next: Experiments with the NVIDIA Optix Denoiser



噪点的问题

光线追踪与摄影一样,需要大量的光线样本才能获得清晰的图像,不管是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提供
在第11431pass 后的图像(最终渲染) - 场景由BBB3viz提供

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

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

目前的使用限制

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

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

结论

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