Meta助Blender加速Cycles实时渲染写实数字人的开发
去年Meta(原Facebook)加入Blender开发基金的消息大家还记得吧?Facebook不只是给了钱,还从技术开发上不断的在支持Blender的发展,这里他们看中的是Cycles渲染器。
其实一直以来Meta公司的AR/VR研究部门都是用Cycles作为某些重要项目的首选渲染器,Meta想要改进它主要是支持Cycles的开发。根据Blender Foundatlon的说法,Meta对改进Cycles的实时渲染能力和高质量数字人类渲染的特性十分感兴趣。所以在加入的第一年,就发布了Blender中关于Cycles渲染器上的一些改动。
由Reality Labs Research创建的数字Trudy,Blender集群渲染
这次的改动主要是改进了数字角色实时渲染的能力,包括一个新的Alembic程序,可以将动画缓存的加载速度直接“提高了一个数量级”。
整体拆分来看,主要的改进可以分为以下几个方面:
场景更新优化
以前为了支持尽可能多的平台,Cycles将整个场景的数据都存储在统一的特定缓存区中。例如,所有物体UV都存储在内存中的单个连续缓存区中,比如着色器图表。这种方法的一个主要问题是,如果有任何修改,缓存区会在重新创建之前被破坏,这涉及将所有数据复制,首先要复制到缓存区,然后再复制到设备,就导致这些副本和数据传输非常耗时。
开发团队提出的解决方案是保留缓存区,只要物体数量或其拓扑保持不变,只将修改物体的数据复制到缓存区中即可。比如只移动了下网格的位置,则只将其位置复制到全局缓存区,而不复制其他数据。以前,必须复制所有数据(UV、属性等)。同样,如果场景中只有一个网格发生更改,则仅复制其数据:不会复制其他物体的任何其他数据。
另一个优化是为OptiX添加了BVH改装:物体的BVH保存在内存中,只有在物体的拓扑发生变化时才会重建。否则,只需修改BVH以考虑新的顶点位置。
这几个变化减少了Cycles的内存消耗,并且可以将同步时间平均除以2倍。
新的Alemblc程序加快了Cycles内动画缓存的视口渲染
最具有代表的就是新Alembic程序的开发。
在渲染时可直接从Alembic文件将数据流式传输到Cycles,而不是像以前那样得先将文件导入并转换到Blender,这样整体的加载时间缩短了“一个数量级”。
这个新程序目前已经可用,但是作为视口渲染的实验性功能并没有用于最终的渲染。
为此,他们专门在Blender3.0中使用一个34万面的角色做了个测试。
上面这个是Reality Labs的数字角色Trudy的案例研究。数字角色Trudy由54个网格和34万面组成,其中的纹理贴图大小占到770M。在Blender 3.0中使用Cycles的Alembic程序渲染,帧速率会提高12倍,从每秒2帧增加到24帧。下面这个表显示了每个计算阶段的加速度明细。
用于更好的渲染人类皮肤的BSDF模型
改变了Cycles处理场景更新的方式,减少内存消耗,以及对BSDF着色器物理正确性的改进。
为了能够更好的模拟光与人体皮肤相互作用的方式,会通过改进次表面散射效果的渲染来进行制作。
未来的工作可能包括原生USD程序
开发人员现在更侧重于物理正确性和路径跟踪速度。未来还有一些优化来提高Cycles的数据传输和内存使用(尤其是VRAM)的性能。
团队可能还会探索原生USD程序的开发,以加快Cycles中Pixar通用场景描述格式的数据渲染速度。
随着硬件技术的升级,各家渲染器和平台都加速了在GPU上的开发。同一时间,大名鼎鼎的室外环境渲染大拿Clarisse在新版本5.5中也发布了个新的混合渲染器Angie,还有Vray姊妹实时渲染引擎Vantage最近也发布了新版。虽然都没掀起什么波澜,但你会从中发现一些微妙的变化······
文章来源于网络,如有侵权请及时联系删除!