分布式渲染技术是一种网络渲染方法,通过多个计算机或计算节点协同工作来渲染单帧图像,从而实现影视级别的真实感效果,以及更逼真的光照和粒子特效。这种技术将渲染任务分配给不同的节点,以提高渲染速度和效率,同时减轻单个节点的负担。分布式渲染服务通常提供管理工具和API,方便用户管理和监控工作负载。在某些渲染场景中,需要结合声音技术来准确还原空间声场,并与场景深度融合,因此需要更强大的计算资源支持,传统单节点计算机难以在效果和性能上取得平衡,此时需要引入分布式实时渲染协同解决方案。
分布式渲染主要采用并行图形架构,主要渲染方式如下:
渲染类型 | 渲染方式 | 优点 | 缺点 |
Sort-first | 对屏幕进行网格式划 分, 使其对应区域的待渲染物体由该区域的渲染节点进行完整渲染 ( 包括几何处理和光栅化等),渲染节点完成子图像渲染结果后发送到 Merge 节点进行图像拼接,形成最终图像。 | 可水平扩展渲染节点,实现更大场景与更高清的图像渲染需求。 | 区块划分较为单一, 容易导致 负 载 不 均衡, 实现较复杂, 同时可能出现时延不一致导致的等待现象。 |
Sort-middle | 几何元素重新分配发生在几何变换与光栅化间进行。每个几何处理单元会被分配接近相同数量的几何数据处理,处理完后的几何则是被几何坐标变换后的几何数据。这些几何数据会被排序进 Tiles,Tiles 是一个个组成整个屏幕且互不重叠的方块。 | Tile 内的数据会被传递给光栅单元和像素处理单元的共用,在其缓冲中,光栅单元和像素处理单元可以对这些数据进行极快的读写从而提升了效率。 | 几何数据在网络间传输开销较大, 不太适合分布式集群架 构 共 享 处理。同时对于图形分布在多个 Tile 情况,需 要 多 次 绘制, 增加了总渲染时间。 |
Sort-last | 将场景中的不同对象发送到不同的渲染节点,每个节点渲染一个或多个具备深度的图像,最后将所有渲染结果汇总到中心节点,根据 z- buffer 进行并。 | 可对图像进行负载均衡分配,避免单个节点渲染任务过重。 | 网络通信较为复杂, 需要传输大量图像与深度数据做后续处理;透明度难以处理。 |
实时分布式云渲染相比普通实时云渲染,具有以下优势:首先,分布式云渲染突破了计算能力的限制,能够满足超大规模场景、超拟真模拟和超逼真实时渲染效果的计算需求。其次,能够对超大场景进行实时细分算法处理,无需提前处理网格细节,可将细节提升数千倍,实现影视级的视觉效果。最后,能够进行实时物理解算与流体仿真,通过物理碰撞实现刚体与流体的实时交互,仿真与渲染可在不同的GPU上执行,最高可实现百万级粒子的实时解算。
分布式渲染将呈现云原生部署、渲算分离、端云协同的发展趋势。首先,弹性伸缩,将传统单体渲染架构升级为基于微服务的云原生渲染架构,充分考虑网络延迟、故障容错和资源冗余等特点,实现快速伸缩、快速部署和水平分解的解决方案。其次,渲染计算分离,将场景渲染中的图形渲染部分和引擎计算部分的工作负荷分离,利用算网异构资源的优势,将不同类型的任务交由不同节点完成,最后统一汇总处理。最后,端云协同,对渲染任务进行解耦设计,使渲染任务可以在云端和边缘端灵活切换和调度,有效利用终端闲置的硬件资源,复用运算结果,减少重复计算,突破传统云渲染终端仅用于视频播放和交互的限制。