Version: 2017.1
反射探针性能和优化
部署 Unity 集群

集群渲染

集群渲染通过单独的许可证购买获得。请联系我们,与 Unity 客户代表交流,了解如何购买集群渲染许可证。

概述

Unity 的集群渲染技术允许多台机器相互同步来模拟同一场景,并在一组显示器上显示结果。此功能可用于将 Unity 环境部署到复杂的多屏幕环境,如电视墙CAVEDome 或任何自定义的多显示器布局。

与仅使用一台机器生成多个显示输出的其他解决方案相比,Unity 的集群渲染能够扩展到非常大量的显示器(如果网络带宽非常高,最多可达 50 台或更多)。使用单台机器为多台显示器提供输出时,每台显示器都会给该机器增加计算成本。即便使用性能非常强大的机器,也会为了确保良好的帧率,将该机器对应的输出显示器数量限制到较小值。相比之下,使用 Unity 的集群渲染时,渲染负载在许多机器上共享,每台机器负责渲染一台显示器。

为实现此目的,必须在锁步同步模式下运行的所有机器上安装相同的项目。每台机器都运行相同的模拟,而仅在渲染输出方面有所不同,各自仅渲染整个多显示器设置的一部分。

此锁步同步在局域网中发生。

硬件设置

集群中的节点由工作站和显示输出端组成。每个工作站都运行一个已启用集群渲染的 Unity 应用程序副本。集群有一个主节点和多个客户端节点。客户端节点通过局域网连接到主节点。强烈建议使用有线网络。WiFi 网络通常不够快,并会在同步过程中导致不一致。

Unity 集群底层原理

要启动集群渲染组,应该同时启动主节点机器和所有客户端机器。然后,在每台计算机上启动应用程序,并使用特定的命令行参数定义主节点和客户端节点的关系。

然后,主节点将同步所有客户端节点。同步方法称为锁帧或“锁步”同步。这意味着,一旦所有客户端节点“签入”到主节点,主节点将在自己的 Update() 调用中向所有客户端节点传播“更新”信号。一旦主节点发出更新信号,它将等待所有客户端的下一次完全签入并重复该循环。

主节点还发送诸如时序、随机数种子和输入值之类的数据。这将确保应用程序在主节点和所有客户端节点之间进行相同的模拟。无论场景中对象的数量或复杂程度如何,每帧在主节点和客户端节点之间同步的数据有效负载是恒定的。这意味着场景的复杂性不会对网络性能产生影响,只会影响每个节点的单独渲染性能。

在多台计算机上拆分显示

将所有客户端节点同步到集群中的主节点后,必须组织这些节点,使每个节点渲染其应该渲染的视图部分。同步数据不包含有关摄像机的信息,因此您可以在每个节点中单独操作摄像机。由于所有节点都在模拟相同的场景,因此诀窍是操作摄像机属性,使每个节点渲染整个显示视图的正确部分。

如何实现此目的取决于如何设置多个物理屏幕,但基本方法是为每个节点的摄像机分配不同的投影矩阵。有关如何执行此操作的更多信息,请参阅 Camera.projectionMatrix

反射探针性能和优化
部署 Unity 集群