¿Qué es y cómo funcionan las tecnologías LiquidVR para las GPU de AMD?

La realidad virtual es en sí misma un medio que funciona bajo sus propias normas por su naturaleza particular. Esto hace que los fabricantes de GPU desarrollen tecnologías y estándares para aumentar el rendimiento de su tarjetas gráficas bajo  larealidad virtual, como la tecnología LiquidVR de AMD.

LiquidVR lleva varios años entre nosotros, pero no hemos hablado en que consiste en todo este tiempo y como las GPU de AMD ven acelerada el renderizado de las escenas basadas en realidad virtual haciendo uso de todo lo que rodea a LiquidVR, os explicamos de manera rápida en que consiste y como funciona.

¿Qué es AMD LiquidVR?

AMD LiquidVR

Las tecnologías que componen LiquidVR lleva siendo utilizada por AMD desde 2015, por lo que no es una tecnología recién salida al mercado, ya que lleva algunos años con nosotros. Es más, en su planteamiento inicial no se pensó siquiera para DirectX 12, sino para DirectX 11, ya que la duodécima versión de la API de Microsoft fue lanzada ese mismo año. No obstante LiquidVR se ha mantenido sin cambios desde entonces.

LiquidVR como bien dice su nombre son una serie de tecnologías pensadas para acelerar el renderizado de las escenas de realidad virtual a través de las GPUs de AMD, la cual consiste en cinco puntos fundamentales:

  • Computación asíncrona.
  • Afinidad Multi-GPU
  • La capacidad de reducir la latencia del input de movimiento con la unidad de realidad virtual.
  • Capacidad de copias avanzadas de datos entre CPU y GPU.
  • Reducir la latencia en la salida de vídeo

Estos cuatro principios han ido evolucionando en las diferentes GPU de AMD desde entonces y son base para futuros diseños, pero en su día se idearon de cara a acelerar la Realidad Virtual.

Latencia movimiento a fotón

Motion to Photon

En la realidad virtual existe la norma en que el tiempo desde que hacemos un movimiento hasta que lo vemos en la pantalla de nuestro visor ha de ser de menos de 20 ms. Una cifra más alta genera incredulidad a nuestro cerebro sobre el hecho de «estar» en el lugar. En cambio cuando se consigue llegar a la cifra de menos de 20 ms se genera lo que se le llama presencia.

Con ello no hablamos de un tiempo de fotograma de menos de 20 ms, sino que en menos de ese tipo se ha de realizar todo el proceso, desde que pulsamos el botón o hacemos un movimiento hasta que vemos el resultado del mismo en la pantalla. Lo fue fuerza a que sea necesario optimizar no solo la velocidad de renderizado de la GPU, sino también de todo aquello que implica el proceso de la creación de la imagen que ve el usuario.

Computación asíncrona

DX11 vs DX12

La computación asincrona ya se encuentra integrada en DirectX 12 y Vulkan, por lo que ha dejado de ser una función aparte. ¿En qué consiste? Pues en el hecho que antes de estas dos API en PC todas las listas de pantalla y de computación eran tratadas como una lista común en DirectX 11.

Algunas GPU tienen varios procesadores de comandos aparte del principal que se encargan de las tareas de computación, las cuales muchas de ellas funcionan de manera asíncrona al dibujado de la escena. Es decir, no dependen del renderizado de la escena en ningún momento y se pueden ejecutar en cualquier momento.

Afinidad Multi-GPU en LiquidVR

LiquidVR

La idea a la hora de renderizar una escena en 3D a tiempo real se hace con una sola cámara, esto equivale a ver el mundo desde el punto de vista de un cíclope. Pero de cara a renderizar la escena para la realidad virtual se hace haciendo uso de dos puntos de vista, es decir, dos cámaras donde cada una corresponde a un ojo distinto.

La afinidad Multi-GPU en LiquidVR no es más que el hecho de renderizar una escena utilizando una GPU para la visión de cada uno de los ojos, cada uno desde su punto de vista y en paralelo. Para ello es necesario que la CPU cree dos listas de pantalla, una para cada ojo y que la CPU trata en paralelo.

Debido a que el caso de Realidad Virtual esta conectado a la primera pantalla, lo que hace la segunda GPU es copiar su búfer de imagen final a la primera GPU. No hay que olvidar que los paneles LCD de las unidades HMD o cascos de realidad virtual suelen venir en un solo panel LCD, en el que se reproduce la imagen del ojo izquierdo en la mitad izquierda de la pantalla y la del ojo derecho en la mitad derecha.

Estimación del movimiento del LiquidVR

El retraso entre el movimiento de la cabeza del jugador y el tiempo en el que se genera la imagen puede provocar un desfase que puede provocar mareos en el jugador, ya que el movimiento que se ve en el visor no corresponde con el movimiento realizado por el jugador al mover su cabeza, todo ello provocado por el retraso en que la CPU tarda en generar la lista de pantalla y enviarlo a la GPU.

La estimación de movimiento en LiquidVR es por tanto predecir hacía que dirección y a que velocidad va a mover el usuario la cabeza. El objetivo no es otro que reducir la latencia en el cálculo de la posición de la cabeza y otros elementos de los que se hace seguimiento para así reducir el desfase y si se puede anularlo. El motivo por el cual necesitamos esto es porque todos los objetos del fotograma necesitan un punto de referencia respecto al que se mueven todos ellos, dicho punto de referencia siempre es la cámara que en realidad virtual depende siempre de la posición de la cabeza y en algunos casos incluso hasta de los ojos.

En la realidad virtual es sumamente necesario que el movimiento del usuario vaya sincronizado con el movimiento del mundo virtual, cada movimiento que él o ella haga tiene que ir coordinado con el resto del mundo virtual. Ya que si todo el mundo no es creíble para quien lo experimente se rompe también el proceso de presencia, el cual es clave en la realidad virtual.