如何提高渲染效率?Blender Cycles渲染器设置解析
如何提高渲染效率?Blender Cycles渲染器设置解析
Blender是一款功能强大的3D设计软件,其Cycles渲染器的设置对渲染效率有着重要影响。本文将从硬件加速、采样次数、噪波阈值、光程、快速GI近似等多个维度,详细介绍如何优化Cycles渲染器的设置,以提高渲染效率。
硬件加速只选GPU,不同时勾选CPU
我们知道Blender Cycles渲染器是可以选择CPU或GPU加速的,大多数情况下我们都会选择GPU,因为它的工作效率会明显高于CPU,但在偏好设置里,我们其实是可以调整Cycles渲染加速选项的,如图1所示,在“编辑”、“偏好设置”、“系统”选项里,我们可以调整Cycles渲染设备,调整项目分别是顶层的加速算法和下方的加速硬件,对于NVIDIA独立显卡来说,选择OptiX加速算法的效率最高,而AMD显卡则可以选择HIP加速算法。
但切记一点:不要贪心同时勾选CPU和GPU硬件加速。如图2所示,左图为同时勾选后的渲染结果,耗时1分48秒36,而右图只勾选GPU,也就是只用RTX 2060渲染,时间反而缩短到了1分36秒35,所以对于Cycles渲染器硬件加速而言,只选择GPU就足够了,如此以来不仅提高了渲染效率,同时还可以将CPU解放出来,渲染图像的同时电脑还可以做点别的事情,比如一边渲染一边看看电影之类的,不至于整个系统都非常卡顿。
图1
图2
调整采样次数、噪波阈值,光程、快速GI近似
对于一个1024×1024分辨率的静态图片而言,1分半钟的渲染时长不算太夸张,但如果你的图片分辨率更高,或者你想要渲染一段动画,那至少就是数百帧的渲染量,单帧效率在这时候就非常重要了,这时候有好几种方法可以减少渲染时间,首先第一个就是降低渲染的采样值,如图3所示,我们可以修改采样数值,比如从默认的1024下调到768甚至512,就能非常明显地减少渲染时间,但代价就是渲染效果下降,质量和速度之间需要你自行取舍。
图3
第二个可以影响渲染时间的设置是“噪波阈值”,图3没有勾选此选项就意味着会采用默认值0,也就是最大程度的采样降噪,如果你想要调低采样降噪的频率来减少渲染时间,可以勾选“噪波阈值”并手动设置数值,数值越大,所需要的渲染时间就越短,但建议不要高于0.1,事实上0.1都已经有相当多的噪点了,大多数情况下可以设置为0.01,如果图片分辨率很高则可以相应地提高此数值,以本文工程项目为例,开启0.01的“噪波阈值”就可以把渲染时间缩短到1分19秒31,“噪波阈值”设置为0.02则进一步将渲染时间降低到了48.66秒,效率提升很明显,而且因为数值设置相对自由,所以在渲染效果和时长上权衡起来也比较容易。
图4
第三个影响渲染效果的设置是“光程”,也就是光线在场景中的反弹次数,对于游戏玩家而言可以理解为光线追踪的精度,尤其是你的工程场景中存在大量光源的情况下,减少光程计算量显然就会减少渲染时长。
如图4所示,右图为“完全全局照明”,也就是所有光线类型都设置为32次反弹,渲染时间会稍稍增加到1分37秒17。而左图则选择“直接光”,也就是漫反射和体积雾都不反弹光线,且整体总反弹次数不超过8次,渲染时间会大幅降低到1分20秒53,这还是在设置最高级别采样降噪的情况下,效率是肉眼可见的提升。但光程不能任意设置,“直接光”在一些特定情况下会导致渲染效果跑偏,因此如何调整光程需要具体问题具体分析。
图5
第四个方法就是如图5那样勾选“快速GI近似”来替代传统“光程”的功能,这种新算法速度很快,但质量细节不如传统全局照明方式,通过我的测试来看,在其他设置保持不变的情况下,可以将渲染时间从1分36秒35大幅减少到1分12秒21,作为动画输出来说画面的变化几乎是无感知的,所以如果你希望在尽量短的时间内完成渲染的话,勾选“快速GI近似”是很好的解决方案。
高分辨率图像渲染可关闭“平铺”功能
如果你需要渲染高分辨率图像,比如一张4K分辨率图,可能会发现Blender会将图像切分成数块来进行渲染,这是因为Blender默认开启了“使用平铺”功能,在“属性”页面找到“渲染”标签页,再找到“性能”选项下的“内存”,如图6所示,就能开关“使用平铺”功能,通过切割画面,每次只渲染一部分的方法来降低内存使用量。
图6
在前一个工程案例里我们可以看到,内存的峰值使用量为937MB左右,这个数值会随着渲染分辨率、采样精度的提升而提升,当提升到4K分辨率输出时,内存占用量会超过2.7GB。
不过考虑到现在大多数电脑的内存容量都已经是16GB起步,学习3D设计的读者朋友可能电脑内存容量中位数还会更高,所以在大多数情况下我们其实并不需要开启此功能,因为平铺切割的次数越多就意味着所需要的时间越多,在内存不是瓶颈的情况下可以关闭此选项以提高工作效率
提高Cycles渲染效率的方法还有不少
本期内容主要是通过渲染器设置来提高渲染效率,但实际上提高渲染效率的方法还有不少,比如降低工程的整体网格文件顶点数量,或使用分层式渲染+合成面板拼接的方式来机动调整渲染工作量,玩法其实挺多的。从整个Blender生态来说还有其他基于Cycles渲染器魔改而来的渲染器插件,比如K-Cycles等等,可以实现不少现阶段Cycles渲染器无法实现的功能且提高工作效率,总体来说可以研究的东西还不少呢。