클러스터 렌더링을 사용하려면 따로 라이선스를 구매해야 합니다. 클러스터 렌더링 라이선스 구매에 대해서는 Unity 계정 대리인에게 문의해야 합니다.
Unity의 클러스터 렌더링 기술을 통해 다수의 시스템이 서로 동기화된 동일한 씬을 시뮬레이션할 수 있고, 디스플레이 클러스터에 결과를 나타낼 수 있습니다. 이 기능을 통해 비디오 월, CAVE, 풀돔, 또는 다중 디스플레이의 커스텀 레이아웃 등 복합 멀티 스크린 환경에 Unity 환경을 적용할 수 있습니다.
다중 디스플레이 출력 생성을 위해 단 하나의 시스템만 사용하는 다른 솔루션에 비해, Unity의 클러스터 렌더링을 사용하면 여러 대의 디스플레이에 스케일하여 보여줄 수 있습니다. 네트워크 성능이 높을 경우 최대 50대 이상까지도 가능합니다. 하나의 시스템으로 여러 대의 디스플레이를 다룰 경우, 각 디스플레이는 이 시스템에 연산 코스트를 가중시킵니다. 아무리 고성능 시스템일지라도 적정 프레임 속도를 제공하려면 연결할 수 있는 디스플레이 수에 제한이 발생합니다. 반면, Unity의 클러스터 렌더링을 사용하면 렌더링 로드가 여러 시스템으로 분산되며, 각 시스템이 디스플레이 하나의 렌더링을 담당합니다.
이것은 모든 시스템에 동일한 프로젝트를 설치하고 잠금 단계 동기화를 실행하여 작동합니다. 각 시스템은 동일한 시뮬레이션을 실행하지만 렌더링 출력에서만 다르고 전체 멀티 디스플레이 설정의 일부만 렌더링합니다.
이 잠금 단계 동기화는 로컬 영역 네트워크에서 이루어집니다.
클러스터의 노드는 워크스테이션과 디스플레이 출력으로 구성됩니다. 각 워크 스테이션은 클러스터 렌더링이 활성화된 Unity 애플리케이션 복사본을 실행합니다. 하나의 마스터 노드와 여러 클라이언트 노드가 있으며, 클라이언트 노드는 LAN(Local Area Network)을 통해 마스터 노드에 연결됩니다. 이를 위해 유선 네트워크를 적극 권장합니다. WiFi 네트워크는 일반적으로 충분히 빠르지 않아 동기화 불일치가 발생합니다.
클러스터 렌더링 그룹을 시작하려면 마스터 및 모든 클라이언트 시스템을 동시에 시작해야 합니다. 그런 다음, 특정 커맨드 라인 인자로 각 시스템에서 애플리케이션을 실행하여 마스터 및 클라이언트 관계를 정의해야 합니다.
그런 다음, 마스터 노드는 모든 클라이언트 노드를 자신과 동기화합니다. 동기화 방법은 프레임 잠금 또는 “잠금 단계” 동기화라고 합니다. 즉, 모든 클라이언트가 마스터에 “체크인”하면 마스터 노드가 자체 Update() 호출에서 “업데이트” 신호를 모든 클라이언트 노드로 전파합니다. 마스터 노드가 업데이트 신호를 보내면 모든 클라이언트가 다음 번 전체 체크인을 기다리고 해당주기를 반복합니다.
마스터 노드는 타이밍, 난수 생성 시드, 입력값 등의 데이터 역시 전송합니다. 이를 통해 애플리케이션이 마스터와 모든 클라이언트를 통틀어 동일하게 시뮬레이션될 수 있습니다. 각 프레임마다 마스터 노드와 클라이언트 노드 간에 동기화되는 데이터 페이로드는 씬 안의 오브젝트 복잡도나 수와 무관하게 항상 일정합니다. 즉 씬의 복잡도는 네트워크 성능에 영향을 주지 않으며, 각 노드의 개별 렌더링 성능만이 영향을 줍니다.
모든 클라이언트 노드가 클러스터 내의 마스터 노드에 동기화되면, 렌더링되어야 하는 뷰의 해당 부분을 각 노드가 렌더링하도록 이 노드를 조직해야 합니다. 동기화 데이터에는 카메라에 대한 정보는 포함되어 있지 않으므로, 각 노드에서 카메라를 개별적으로 조종할 수 있습니다. 모든 노드가 동일한 씬을 시뮬레이션하기 때문에, 카메라 프로퍼티를 조정하는 방식으로 각 노드가 전체 디스플레이 중 적합한 부분을 렌더링하도록 할 수 있습니다.
이 방법은 여러 개의 물리 스크린이 설정되어 있는 방식에 따라 달라지지만, 기본적으로는 다른 프로젝션 매트릭스를 각 노드의 카메라에 할당하는 접근법을 사용합니다. 이 방법에 대한 자세한 내용은 Camera.projectionMatrix를 참조하십시오.