Cycles X
Cycles 从发布到今天已经整整 10 年了。在过去的十年里,Cycles 已经发展成为一个成熟的渲染引擎,被许多艺术家和工作室都在使用。在这 10 年里,作为开发者真的学到了很多,在某些方面表现优异,同样在某些方面表现的也不尽如意。随着渲染算法和硬件的发展 Cycles 的内核能方面也已经显得有点过时,开发者表示将热衷于对 Cycles 渲染引擎的核心进行更大的改进。在过去所开发的核心已经严重阻碍了渲染的性能,而且老旧的代码也变得难以维护。为了解决这个问题,Sergey 和 Brecht Van Lommel 启动了一个名为 Cycles X 的研究项目,目的是更新架构并为 Cycles 未来 10 年的发展做好准备。此次项目不是修修补补,而是大刀阔斧的从底层重构!
广义而言,该项目的目标是:
改进架构为未来的发展奠定基础
提高视窗预览性能和批渲染的可用性
支持近期发布的 CPU 和 GPU 的以提高渲染的性能
引入更高级的渲染算法
我们的第一个目标是验证新的架构。为此,我们实现了一个新的 GPU 内核原型,以及用于视窗预览和批渲染的新调度算法。现在已具备足够的功能来测试 Blender 的基准文件。
近期开发者分享了一些初步的性能测试结果,并且已经发布源代码以便与 Cycles 开发贡献者协作。代码可以在 git.blender.org 上的 cycles-x 分支中找到。此版本还处于初级阶段,还有很多重要的事情要做。预计开发将需要至少 6 个月,直到合并到 Blender 的主干,最终和新版 Blender 一并发布。从 Blender 官方的基准测试文件,在 GPU 渲染的基准场景已被修改,因为目前尚未支持体积渲染等。请注意!随着对新体系结构的不断研究,以下的数据可能会发生改变。OptiX 支持是由 Patrick Mours 在几天前刚刚添加。
最显著的改进:在具有巨量光线反弹和着色器的场景中,新内核可以实现硬件更高的占用率和一致性。CPU 渲染性能在这一点上与以前大致相同,但新的体系结构也为这一点提供了新的可能性,性能提升非常明显。其次,我们一直致力于改进视窗预览渲染。更快的渲染内核将帮助实现这点,但是我们还发现,改进调度、计时和显示机制可以使视口感觉更具交互性。对自适应采样和批处理采样的新视口支持使其能够在完成前几个采样后更快的对渲染结果进行降噪。
在接下来的几个月里,开发者将尝试更多的优化想法,并恢复丢失的功能。当功能缺失时,通常是因为开发者希望在新的体系结构中采用不同的方法。一些例子:
体积渲染 Volume rendering:计划用更先进的算法实现光线追踪和光线采样
阴影捕捉 Shadow catchers:将尝试一种可以考虑间接光的不同算法
多设备渲染 Multi-device rendering:将尝试更细粒度的负载平衡而不使用分片(多硬件 + 全渐进渲染)
除此之外,新的架构应该可以让我们更容易地适应像路径引导这样的渲染算法,我们将对这些算法进行实验,并研究如何使它们对GPU友好。
作为新体系结构的一部分,我们正在删除一些功能。最值得注意的是:
OpenCL 呈现内核 OpenCL rendering kernels:有限的 Cycles 分割内核实现、驱动程序错误及停止维护的 OpenCL 标准,这使得 Cycles OpenCL 核心维护变得异常困难。只有从底层彻底重构开始,才能匹配现在正在进行的重大改变。开发者正在与 AMD 和 Intel 合作,让新内核在他们的 GPU 上正常工作,在此基础上可能使用会使用不同的 API(比如:CYCL、HIP、Metal - macOS 等等)。多 API 支持不是首个版本就能提供。从长远来看,支持所有主要的 GPU 硬件供应商仍然是一个重要的目标,我们认为有了这种新的架构,将能够获得更好的性能和一些稳定性。在 Cycles X 中再次支持更多 GPU 只是时间问题。作为一个 macOS 用户,非常期待官方能正式兼容 Metal 支持,届时苹果用户将可以使用 Cycles 的 GPU 渲染加速了。
分支路径跟踪 Branched path tracing:正在努力改进采样算法,因此分支路径追踪会被移除,并以更好的自动地分配采样取代。改进的自适应采样和光重要性采样是关键。
NLM 去噪器 NLM denoiser:基于 AI 的去噪算法 - 尤其是 OpenImageDenoise 通常会产生更好的结果,我们将为它们优化架构和工作流程。NLM Denoise 将会被移除。
这些特性在 2.83 和 2.93 LTS 版本中仍然可用并受支持!