시작하기
처음부터 설정하든, 기존 환경설정을 변환하든, 멀티 프로세스 nDisplay 환경설정 구성요소는 다음과 같습니다.
- 온스크린 노드(Onscreen Nodes): 일반 '온스크린' nDisplay 노드마다 프라이머리 GPU로 설정된 GPU 어댑터가 있습니다.
- 오프스크린 노드(Offscreen Nodes): GPU 어댑터가 세컨더리 GPU로 설정된 '오프스크린' nDisplay 노드가 각 호스트에 추가됩니다.
- ICVFX 카메라: 각 ICVFX 카메라 컴포넌트에 대해 오프스크린 노드에서 온스크린 노드로 렌더링을 전송할 공유 미디어 입력(Shared Media Input) 및 출력(Output) 을 구성합니다. 세컨더리 GPU에서의 ICVFX 카메라 렌더링 덕분에 퍼포먼스 이점을 누릴 수 있습니다.
이 가이드에서는 이러한 각 구성의 측면을 좀 더 자세히 살펴봅니다.
처음부터 새 환경설정을 생성하는 방법에 대해 알고 싶다면, 아래에 링크된 인카메라 VFX 퀵스타트 문서를 확인하세요.
일반 온스크린 nDisplay 노드 구성하기
일반 '온스크린' nDisplay 노드는 오프스크린 노드와 다른 GPU에서 렌더링하도록 설정해야 합니다. 일반 nDisplay 노드의 그래픽 어댑터를 0으로 설정하면 컴퓨터의 프라이머리 GPU에 할당됩니다. 참고: 이 번호가 일반적으로 적용되지만, 일부 머신에서는 다른 번호가 필요할 수도 있습니다. 스위치보드 모니터에서 예기치 않은 GPU 사용률이 발생하는 경우 GPU 인덱스 번호를 변경하는 것이 좋습니다.
그래픽 어댑터 세팅은 노드의 디테일 패널에 있습니다.
일반 nDisplay 노드는 클러스터(Cluster) 탭에서 찾을 수 있습니다.
그래픽 어댑터 세팅은 노드의 디테일 패널에 있습니다.
오프스크린 nDisplay 노드 구성하기
호스트 머신 각각에 대해 '오프스크린' 렌더 노드를 추가합니다.
클러스터(Cluster) 탭에서 '새 클러스터 노드 추가(Add New Cluster Node)'를 찾을 수 있습니다.
새 클러스터 노드 추가(Add New Cluster Node) 창의 다음 세부 세팅에 유의하세요.
- 이름(Name) 에는 고유 식별자가 필요합니다. 아래 예시에서는 오프스크린 노드임을 나타내기 위해 '_OS'가 추가되었습니다. 나머지 이름('Node_0')은 일관되게 유지됩니다. 이는 스위치보드의 각 호스트 머신에 어떤 노드가 속하는지를 명확히 하기 위해 중요합니다.
- 새 클러스터 노드에 뷰포트 추가(Add Viewport to New Cluster Node) 는 뷰포트 추가를 방지하기 위해 선택 해제합니다. 이 옵션이 활성화되어 있으면 헤드리스 렌더링을 위해 뷰포트를 제거해야 합니다.
- 헤드리스 렌더링(Headless Rendering) 을 활성화 합니다. 그래야 오프스크린으로 렌더링되므로 데스크톱 공간에 부정적인 영향을 미치거나 NVIDIA 동기화를 방해하지 않습니다.
- 그래픽 어댑터(Graphics Adapter) 는 세컨더리 GPU를 나타내는 1 로 설정합니다. 참고: 이 번호가 일반적으로 적용되지만, 일부 머신에서는 다른 번호가 필요할 수도 있습니다.
새 클러스터 노드 추가(Add New Cluster Node) 창에서 업데이트해야 하는 섹션이 하이라이트된 이미지
ICVFX 카메라 구성
공유 미디어 입력 및 출력
ICVFX 컴포넌트의 디테일(Details) 패널에 미디어(Media) 섹션이 있습니다. 이 컨텍스트에서 '미디어'는 오프스크린 노드에서 일반 노드로 전송된 다음 외부 프러스텀 위에 표시되는 내부 프러스텀 렌더로 생각하면 도움이 됩니다. 미디어 세팅은 nDisplay 뷰포트에서 다양한 타입의 미디어가 전송 및 수신 방식을 제어합니다. 미디어는 '활성화'되어 있어야 하며 다음 두 영역을 환경설정해야 합니다.
- 미디어 출력 그룹(Media Output Groups) 은 렌더링된 미디어가 전송되는 위치를 제어합니다.
- 미디어 입력 그룹(Media Input Groups) 은 렌더링된 미디어가 수신되는 위치를 제어합니다.
미디어 출력 그룹
모든 오프스크린 노드는 클러스터 노드 인덱스(Cluster Nodes Index) 아래에 추가되어야 합니다. 또한 미디어 출력(Media Output)에 고유 이름('CameraA')이 할당되었습니다. 이 이름은 입력 그룹에서 텍스처를 수신하는 데 사용되므로 대소문자를 구분하며 각 ICVFX 카메라 컴포넌트마다 고유해야 합니다.
미디어 입력 그룹
미디어 입력 그룹(Media Input Group)의 구성도 유사합니다.
- 일반 노드가 클러스터 노드 인덱스(Cluster Nodes Index) 에 추가되었습니다. 일반 노드는 모두 여기에 나열됩니다.
- 고유 이름(Unique Name)('CameraA')은 ICVFX 카메라 컴포넌트별로 미디어 출력 섹션에 설정된 이름과 동일 해야 합니다.
- 모드는 Framelocked 로 설정합니다. 그래야 오프스크린 노드에서 렌더링되는 프레임이 현재 온스크린 노드에서 렌더링되고 있는 프레임과 올바르게 쌍을 이룹니다. 오프스크린 노드에서는 기본적으로 자유 실행인 동기화 정책 없음이 실행되기 때문에 이 설정이 중요합니다. Framelocked가 활성화되어 있지 않으면 필요한 시점보다 앞서 수신된 프레임이 표시될 수 있습니다.
- 제로 지연시간(Zero Latency) 을 활성화 합니다. 이렇게 하면 일반적으로 FPS 드롭을 방지하기 위해 버퍼로 사용되는 지연시간이 제거됩니다. 항상 타깃 FPS를 달성해야 하므로 이는 ICVFX에서 중복됩니다.
이러한 세팅을 업데이트한 후, 컴파일(Compile) 합니다.
레퍼런스 프로젝트
멀티 프로세스 활성화 nDisplay 환경설정은 InCameraVFX 템플릿 프로젝트에서 참조할 수 있습니다. 새 프로젝트 창을 통해 영화/비디오 및 라이브 이벤트(Film/Video & Live Events) > InCameraVFX 에서 확인할 수 있습니다.
해당 환경설정은 콘텐츠 브라우저의 콘텐츠(Content) > InCamVFXBP > nDisplay_InCamVFX_MultiProcess_Config 아래에 있습니다.
스위치보드로 멀티 프로세스 실행하기
멀티 프로세스 nDisplay 환경설정을 추가하고 나면 오프스크린과 온스크린 노드 모두 스위치보드에서 별도의 디바이스로 표시됩니다. 여기에서 언리얼 엔진의 스위치보드에 대해 알아보세요.
노드마다 연결이 필요하지만 머신당 하나의 스위치보드 리스너 인스턴스만 있으면 됩니다. 온스크린과 오프스크린 노드 모두 동시에 시작해서 실행해야 합니다. 이 작업은 연결된 모든 nDisplay 디바이스 시작(Start All Connected nDisplay Devices) 버튼을 통해 수행하는 것이 가장 좋습니다.
