Esta guía proporciona instrucciones para configurar SMPTE 2110 con NVIDIA Rivermax para que funcione con nDisplay, en concreto cuando se trabaja con efectos visuales en cámara (ICVFX) y una pared LED.
Transmisión de cámaras ICVFX nDisplay
La integración del uso compartido de medios y el renderizado fuera de pantalla permite aprovechar las fuentes y salidas SMPTE 2110 para optimizar el rendimiento de los clústeres. Puedes mover el renderizar de cada cámara ICVFX a su propio dispositivo y luego usar las capacidades de multidifusión de SMPTE 2110 para enviar esas transmisiones de cámara a otros nodos que dependan de ellas.
Esto significa que puedes dedicar nodos de renderizado al renderizado de cámaras, lo que generalmente escala mejor que renderizar todos los campos de visión internos en todos los nodos de renderizado. Con esta configuración, no cambiarás la forma en que UE envía píxeles a la pared. Los nodos de componedor siguen usando una tarjeta de sincronización para envío su salida de forma síncrona. Sin embargo, los nodos de renderizado dedicados a renderizar campos de visión internos no necesitan una tarjeta de sincronización. Además, en esta configuración no se usa la sincronización PTP para la transmisión de SMPTE 2110 compartida entre instancias de UE.
Aquí tienes un ejemplo de cómo puedes configurar un clúster de tres nodos y dos cámaras ICVFX. Este ejemplo parte de una configuración de escenario existente para mostrar el proceso de conversión y aprovechar estas nuevas incorporaciones.
Configuración de nodos
En el explorador de contenido, busca y abre tu configuración de nDisplay. Este ejemplo se llama NDC_MyStage:
Esta configuración tiene tres nodos que controlan la pared, y cada uno de ellos renderiza un conjunto de visores. Estos no se modificarán.
Nodo Ventanas gráficas Node_1
VP_W1
Node_2
VP_W2
Node_3
VP_C1 VP_C2
También cuenta con dos cámaras ICVFX. Para cada una de ellas, haz clic en +Añadir y selecciona Añadir nuevo nodo de clúster para crear el nodo que usarás para renderizar esa cámara.
Para cada nodo:
Dale un nombre que identifique la cámara para la que renderizar.
Desactiva Ajustar la posición de los nodos del clúster para evitar solapamientos.
Desactiva Añadir visor al nuevo nodo de clúster.
Establece la dirección IP del host que quieras.
Activa Renderizado sin cabeza.
Configura los adaptadores gráficos si tu sistema tiene más de uno.
Una vez configurados, el cuadro de diálogo Añadir nuevo nodo de clúster debería parecerse a la siguiente imagen.
Cuando hayas terminado de crear los nodos, tu clúster debería parecerse a la siguiente imagen:
Configuración de medios – Salida de cámara ICVFX A
Una vez que hayas configurado los nodos dedicados al renderizado de los campos de visión de la cámara, continúa y configura el uso compartido del contenido multimedia.
En el esquematizador del escenario, selecciona ICVFXCameraA.
En el panel Detalles, localiza la sección Medios:
Marca la casilla de verificación Activar.
Añade un grupo de salida de medios. Aquí estás configurando qué nodo renderizará este campo de visión interno y cómo se compartirá.
El nodo en el que quieres renderizar esta cámara es Node_CamA para ICVFXCameraA. Si quieres configurar ICVFXCameraB, selecciona Node_CamB en su lugar.
Configura el tipo MediaOutput para que sea Salida Nvidia Rivermax y compartirlo mediante ST 2110. Algunos ajustes aquí son importantes:
Establece el modo Alineación en Creación de fotogramas, lo que significa que tu salida empezará a transmitir el campo de visión renderizado tan pronto como esté disponible, siempre respetando el intervalo configurado entre los fotogramas de la transmisión.
Establece el modo Bloqueo de fotogramas en Bloquear al reservar para asegurarte de que compartes todos los fotogramas renderizados.
Activa DoFrameCounterTimestamp. Esto incrusta el número de fotograma de Unreal Engine en la transmisión de vídeo y lo usarán los nodos receptores para saber qué muestras corresponden a qué fotograma.
No es necesario exigir la resolución, ya que UE detectará automáticamente el de tamaño del campo de visión una vez que se haya capturado.
La tasa de fotogramas es importante. El estándar 2110, al igual que SDI, transfiere un fotograma de vídeo en todo el intervalo de fotogramas. Si configuras la transmisión de vídeo de la versión 2110 a 24 fps, cada fotograma tardará 41 ms en llegar a los oyentes. Para minimizar la latencia, y en función del ancho de banda disponible en tu tarjeta de red, configura la tasa de fotogramas para que sea más rápida que la clúster. Esto significa que, en el caso de un clúster que se ejecute a 24 fps, debería transmitir el campo de visión interno más rápido. Es preferible usar 48, 60 o incluso una tasa de fotogramas superior, pero ten en cuenta el uso del ancho de banda.
Para la dirección de la interfaz, usa comodines para que la configuración sea lo más flexible posible y funcione en distintos dispositivos con distintas direcciones IP.
En Dirección de transmisión, elige una dirección multidifusión única para evitar que haya dos campos de visión internos en la misma dirección. Si eso ocurre, los receptores no podrán distinguirlos. En el ejemplo que se muestra aquí, CameraA usará 225.1.1.10 y CameraB usará 225.1.1.11.
No se necesita la sincronización de captura, ya que la transmisión no se dirige a la pared.
Tu configuración de salida debería parecerse a la siguiente imagen:
Configuración de medios – Entrada de cámara ICVFX A
Ahora que la salida del renderizado de ICVFXCameraA está configurada, puedes trabajar en la recepción. Aquí configurarás qué nodos recibirán el renderizado compartido y cómo lo recibirán.
Primero, añade un grupo de entrada de medios.
Añade nodos de clúster para recibir esta salida. En este caso, quieres que todos los nodos controlen la pared (Node_1, Node_2, Node_3).
Para recibir el renderizado compartido con ST 2110, configura la fuente de medios como Fuente de medios Rivermax. Es necesario configurar algunos ajustes correctamente para que funcione el bloqueo de fotogramas de baja latencia.
En el modo de jugador, usa el bloqueo de fotogramas para que los receptores esperen a que llegue el fotograma esperado en cada renderizado. Con el número de fotograma incrustado, las instancias receptoras de UE pueden comparar muestras de vídeo con el número de fotograma actual. Si aún no ha llegado ningún fotograma, las instancias receptoras lo esperarán con la esperanza de que llegue.
Puedes usar la opción Usar latencia cero para que las instancias de UE receptoras esperen un número de fotograma que coincida con el actual sin latencia añadida. En función del contenido, esto puede no ser posible, por lo que tienes la opción de añadir un fotograma de latencia para obtener más margen de espera al interior.
No es necesario aplicar la resolución, ya que las instancias de UE receptoras la detectarán automáticamente cuando se reciba la transmisión.
Configura la tasa de fotogramas con la misma tasa que usaste para la salida.
Para la dirección de la interfaz, recurre nuevamente a los comodines, ya que la usarán varios nodos del clúster y no tendrán la misma dirección IP de interfaz.
Configura Dirección de transmisión y Puerto para que concidan la configuración de salida.
Puedes activar GPUDirect, pero asegúrate de que la GPU y la DPU (tarjeta Mellanox) se encuentren en el mismo complejo raíz. Si no lo están, los paquetes 2110 se pueden perder, especialmente si hay múltiples transmisiones de entrada.
Para activar GPUDirect en la entrada por completo, establece
Rivermax.GPUDirectInput=1al iniciar Unreal Engine o antes de iniciar la transmisión de Rivermax.
La configuración de entrada debería parecerse a la siguiente imagen:
Tu ICVFXCameraA ya está configurada para que un nodo de renderizado la comparta con el clúster. La configuración de medios debería verse así:
Configuración de medios – Cámara ICVFX B
Cuando hayas terminado de configurar ICVFXCameraA, puedes configurar ICVFXCameraB, que usará prácticamente los mismos ajustes, excepto por los siguientes detalles:
Grupos de salida de medios
El nodo de clúster que renderice ICVFXCameraB será Node_CamB.
La dirección de transmisión debe ser distinta. Usa 225.1.1.11, pero con el mismo número de puerto.
Grupos de entrada de medios
La dirección de transmisión es el único ajuste que debes cambiar para que coincida con la configuración de salida. En este ejemplo, 225.1.1.11.
Puedes usar una tasa de fotogramas más alta para tus transmisiones 2110 con el fin de reducir la latencia. Esto conlleva un mayor coste de ancho de banda, así que tenlo en cuenta en función de la configuración de tu red. Si hay otros dispositivos que usan ancho de banda en la misma red, también debes tenerlos en cuenta.
Ejemplo de uso del ancho de banda:
4k24 RGB10
~6,3 Gb/s
4k48 RGB10
~12,6 Gb/s
8k24 RGB10
~25 Gb/s
8k48 RGB10
~50 Gb/s
Transmisión de cámaras ICVFX nDisplay y salida síncrona (experimental)
Requisitos
La otra área de nDisplay que puedes actualizar es cómo envías los renderizados a la pared LED. En lugar de transmitir desde la GPU, ahora puedes enviar transmisiones ST 2110 directamente desde la tarjeta de red. Al proporcionar una referencia de tiempo PTP común a cada nodo, puedes bloquear los fotogramas y sincronizar cada transmisión que vaya a la pared en lugar de tener que depender de una tarjeta de sincronización.
Esto requiere:
Un reloj principal que genera PTP.
Un switch compatible con transmisiones ST 2110.
Una tarjeta de red compatible con Nvidia, como la tarjeta ConnectX-6 BlueField-2.
El procesador de LED también debe poder recibir transmisiones ST 2110.
Cuando se configura de esta manera, todos tus nodos se configuran como si no tuvieran interfaz gráfica de usuario o estuvieran fuera de la pantalla. Ya no es necesario tener configurada la tesela ni lidiar con los ajustes de EDID, ya que no estás transmitiendo mediante la GPU. Sin embargo, la referencia de tiempo PTP que va a cada nodo tiene que ser válida todo el tiempo.
Para que esta configuración funcione, la sección opcional sobre la configuración de PTP mencionada en la fase de implementación es obligatoria.
Aspectos básicos de la configuración
En cuanto a la configuración de nDisplay, esta función no cambia cómo se configura la transmisión de cámara ICVFX. En cambio, esta función aprovecha la configuración de salida de medios que puedes establecer a nivel de nodo para transmitir el búfer secundario final renderizado por un nodo dado. También debes configurar el bloqueo de fotogramas.
A la hora de configurar de tamaño de ventana de cada nodo, puede haber restricciones en función del procesador de LED que recibe las transmisiones. Si el mismo procesador recibe dos transmisiones, es posible que debas hacer que cada transmitir tenga el mismo de tamaño. Aquí te mostramos cómo aplicar esa restricción en el clúster de ejemplo descrito anteriormente.
En el ejemplo, tienes tres nodos para enviar: Node_1, Node_2 y Node_3. Como no tienes restricciones de resolución, puedes ajustar la ventana de los nodos al máximo para enviar la cantidad mínima de píxeles necesaria. En este caso, añadirás una restricción para establecer las ventanas de Node_1 y Node_2 al mismo tamaño. Considéralos como si usaran el mismo procesador de LED. La transmisión de Node_3 no tendrá esta restricción y no tendrá el mismo de tamaño de ventana.
Configuración de nodos – Node_1 y Node_2
Empieza por las configuraciones de Node_1 y Node_2. En la configuración original:
Node_1 usa un nodo de pantalla completa con un tamaño de ventana de 7680x2160 y un visor de 2640x1408.
Node_2 usaba un nodo de pantalla completa con un tamaño de ventana de 3840x2160 y un visor de 3344x1408.
Como el visor VP_W2 es el más grande, haz que los ajustes de Node_1 y Node_2 sean idénticos y usa de tamaño de 3344x1408 para VP_W2.
Activa el ajuste Renderizado sin cabeza para que ambos nodos queden fuera de la pantalla y desactiva el ajuste Pantalla completa.
Este cambio ha añadido algunos píxeles adicionales a la transmisión de Node_1 para que coincida con las dimensiones de la transmisión de Node_2. Cuando los visores no son todos iguales, es importante tener en cuenta cómo se organizan por nodo para minimizar el despilfarro de ancho de banda.
Ahora, configura la salida de medios de cada nodo. Los medios pueden configurarse a nivel de nodo (el búfer secundario final) y a nivel del visor. Es importante realizar esta configuración en el nodo para enviar el resultado final compuesto y distorsionado.
Selecciona Node_1 y busca su sección de medios:
Activa la configuración de Medios:
Añade una salida de medios:
Configura la salida de medios para que sea Salida NVIDIA Rivermax y configura los ajustes como corresponda:
Modo de alineación: AlignmentPoint. Necesitas alinear tu salida con Genlock usando la referencia de tiempo PTP, por lo que necesitas que tu salida se envíe a puntos de alineación conocidos.
Forzar salida continua: activado. Si un fotograma no se renderiza a tiempo, la salida debe continuar y repetir el fotograma anterior.
Modo de bloqueo de fotogramas: Bloquear al reservar. Quieres transmitir todos los fotogramas renderizados.
Tamaño de cola de presentación: 2. Doblar el búfer es ideal para minimizar la latencia.
Número de búferes de textura: 3. No hay requisitos estrictos para esto.
Resolución: sin marcar. No es necesario aplicar una resolución. Si no marcas esta opción, se creará una transmisión con el de tamaño del búfer secundario del nodo.
Tasa de fotogramas: depende de cada proyecto. El ejemplo usa 24 fps, pero es posible que tu proyecto use un valor diferente.
Formato de píxel: RGB10. Esto puede variar para tu proyecto y el receptor (procesador de LED) debe ser compatible con ese formato.
Dirección de interfaz: 10.69.70.. En este ejemplo, todos los nodos están en la subred 10.69.70. para facilitar el cambio del dispositivo que renderiza cada nodo. Si se usa un comodín en el último octeto, el nodo seleccionado podrá resolverse en su dirección de interfaz local.
Dirección de transmisión: dirección de transmisión única de Node_1. En este ejemplo, usa 225.1.2.1 aquí e incrementa el último octeto para cada nodo para tener una dirección multidifusión única para cada nodo. Asegúrate de que el grupo de multidifusión utilizado aquí no se esté usando ya en tu red para evitar colisiones.
Puerto: 50000. Este ejemplo usa 50000 para todos los nodos y solo cambia la dirección de multidifusión.
Usar GPUDirect: desactivado. Por el momento, esto no es compatible con las salidas ST 2110 con bloqueo de fotogramas.
Configura la sincronización de captura para usar Rivermax (PTP). Esto activa un mecanismo que aplica el bloqueo de fotogramas en todo el clúster mediante una barrera de sincronización de Ethernet que aprovecha una referencia de tiempo PTP común para todo el clúster.
Margen (ms): 5. Utiliza el valor predeterminado. Se trata de un margen de tiempo al que se hace referencia cuando el nodo está a punto de atravesar la barrera de sincronización de captura, justo antes de poner en cola un fotograma para su presentación. Si detecta que está demasiado cerca del siguiente punto de alineación (por el margen), introduce un retraso en su entrada en la barrera.
Tiempo de espera de la barrera (ms): 3000. Utiliza el valor predeterminado. Se trata de un tiempo de espera para salir de la barrera cuando no se hayan unido todos los nodos antes de que finalice el periodo de tiempo de espera.
La configuración de Node_1 ya está completa y sus ajustes deberían tener este aspecto:
Ahora que has completado la configuración de Node_1, procede a configurar Node_2. Su configuración debería ser idéntica a la de Node_1, excepto por la dirección de transmisión, que tiene que ser única.
Configura los ajustes de Node_2 para que sean idénticos a Node_1.
Establece la dirección de transmisión de Node_2 para que use 225.1.2.2.
Esta es la configuración final de Node_2:
Configuración de nodos – Node_3
Procede a configurar Node_3. En el ejemplo original descrito arriba, había un hueco entre los dos visores.
Para reducir el espacio desperdiciado, puedes configurar los visores para eliminar el hueco.
Después, tal y como hiciste con Node_1 y Node_2, configura este nodo para que no tenga interfaz gráfica y ajusta de tamaño de su ventana al mínimo necesario para que contenga ambos visores.
En lugar de usar 7680x2160, establece Tamaño de ventana en 6336x1408.
Activa Renderizado sin cabeza.
A continuación, establece la configuración de salida de medios Node_3. Nuevamente, los ajustes serán los mismos que para Node_1 y Node_2, excepto por la dirección de transmisión, que debe ser única en el clúster.
Configura los ajustes de Node_3 para que sean idénticos a Node_1 y Node_2.
Establece la dirección de transmisión de Node_3 para que use 225.1.2.3.
Con esta configuración completa, tu clúster ahora usará 5 grupos de multidifusión:
225.1.1.10:50000 : ICVFXCameraA
225.1.1.11:50000 : ICVFXCameraB
225.1.2.1:50000 : Node_1
225.1.2.2:50000 : Node_2
225.1.2.3:50000 : Node_3
Esta es la configuración final de Node_3: