Facebook(现为Meta)在2020年加入Blender Foundation,双方合作开发Cycles 新技术,由两位研究科学家Feng Xie 和Christophe Hery领导的Facebook Reality Labs团队,选择以Cycles作为部分专案的渲染引擎,试图降低场景资料更新时所耗费的成本,提升Cycles 即时渲染技术,主要包含:场景更新优化、新增原生 API与Alembic等程序性功能,以及渲染出更高品质的皮肤与眼睛的BSDFs 材质计算模型。以下内容翻译自Blender官网,原文链接已放置文末的“阅读原文”。
场景更新优化,减少记忆体消耗与同步时间
为了支援更多不同的平台,Cycles将整个场景的资料统一储存在特定的存储器暂存区里。例如,所有模型与其UV会一并储存在存储器里的单一连续的暂存区里。但此方法会有个问题,如果场景一有任何变化,原本的暂存区会在重新创建之前被破坏,这涉及到繁琐的流程,首先得复制到暂存区,再复制到装置,光是这样的复制与资料传输就会非常耗时。
不同模型的资料在复制到装置前,就会被打包到一个单一特定的暂存区中
当模型被修改时,所有资料都会失效、然后再被重新打包、复制到装置中
据此情形,Feng Xie提出一个解决方案,那就是保留暂存区,只要物件的数量或其UV 保持不变,就只需要将改变的物件资料复制到暂存区中。如果只有模型位置发生了变化,以往必须复制出所有资料,例如:UV 与参数等,但现在则仅需要将其位置复制到暂存区。
只有经修改后的物件其特定资料会无效并可被复制,但整个暂存区还是得复制到装置中
变化侦测(Change detection)是透过新API 完成的,其可用于组成Cycles 场景节点。虽然以往客端的应用程式可以直接进入节点的socket,但现在它们被封装,且具有特定标志来标示其值是否有被修改,因此使用者可在Blender 或其他应用程式同步数据时,自动检测发生了什么变化,避免做不必要的工作。另一个优化是为OptiX添加了BVH(包围体阶层,几何物体集合的树状结构),将物件的BVH 保存在记忆体中,只有在物件的拓扑发生变化时才会重建。总而言之,不仅能降低Cycles 的记忆体消耗,并可减少一半的同步时间。
添加程序性工具,快速加载数据
另一个新功能是添加了程序性系统,它是一种节点,能在渲染前在场景中产生其他节点,这在其他渲染引擎中很常见。团队选择Alembic 作为Blender 第一个程序性系统的基石,其经常被其它3D系统广泛用于交换烘焙几何动画(包括皮肤和毛发变形)。Alembic可直接连接到Blender,且并不会从Alembic档案中加载数据,从而节省了宝贵的时间,甚至还具有内建缓存,可以预先加载数据,以限制读入写出的操作。以Reality Labs建立的虚拟人物Trudy为例,其由54个模型物件总计34万面三角面组成。在Blender 3.0中使用Cycles 的Alembic程序性渲染,将帧速提高了12倍,从每秒2帧增加到24帧。
优化BSDF,模拟出更好的表面散射效果
Facebook 团队的Christophe Hery也透过增加anisotropic phase功能,改善其表面散射效果,模拟出更好的光与皮肤效果。虽然这种合作以往都专注于同步速度,但现在则较注重于正确性与路径追踪的速度。此外,团队也提出改善焦散渲染的修补程式,并表示目前仍有一些功能是可优化的,像是提高Cycles 的数据传输和内建记忆体使用的性能(尤其是VRAM)。
版权声明 | 文章配图仅供学习参考,引用图片版权归属原作所有
如有问题,请及时与我们联系,我们将第一时间做出处理