El futuro de la Realidad Virtual y la posible adopción de esta por parte de Nintendo

Antes que nada un poco de trasfondo y teoría.

Tanto Oculus, Sony y Valve están trabajando para que sus soluciones de Realidad Virtual operen en tiempos en las que todas las etapas en conjunto estén por debajo de los 20ms.

presence-latency

En el caso del HTC Vive no es que los juegos tengan que ir a una velocidad de 90 fotogramas por segundo, sino que el tiempo completo de todo el proceso son 11.1 ms.

ViveSpecs

Esto se traduce en que se necesita renderizar la escena en muy poco tiempo. ¿Que propone Valve? Hacer uso de varias GPUs:

ValveVRSTereo

Obviamente esto es sumamente caro pero… ¿por qué dos GPUs y no una muy potente? Pues por el hecho que eso reduce la latencia, con una sola GPU renderizamos la imagen de cada ojo de forma intercalada, con dos GPUs renderizamos cada uno de los ojos de forma simultanea por lo que reducimos la latencia, lo que supone una solución de fuerza bruta. ¿Cual es el problema de utilizar una sola GPU para renderizar de forma intercalada? Pues que duplicamos el tiempo en que renderizamos la escena completa es el doble.

VRIntercalado

¿Cual es la solución en este caso utilizando el método intercalado?

VRIntercalado2

La diferencia entre el rendering de la escena de un ojo y del otro es que los objetos están relativos a una posición de la cámara distinta pero son los mismos objetos por lo que haciendo un traslado de valores de la geometría de escena a través del Geometry Shader, que permite manipular los triangulos creados por el Vertex Shader antes de ser rasterizados, podemos generar la geometría de escena del segundo ojo sin tener que pasar por la fase de generación de la geometría.

VRIntercalado3

Todas las GPUs actuales y desde la salida de DX11 en PC tienen la particularidad de que están preparadas para llevar a cabo dos renderizados simultaneos al mismo tiempo. Anteriormente el Triangle Setup solo enviaba un triangulo por ciclo de reloj como mucho a la fase de texturización y posterior dibujado y actualmente los sistemas pueden enviar dos triangulos y operar con ellos simultáneamente. El problema de esto es que se requiere la generación de un nuevo búfer de profundidad y con ello todas las operaciones que requieran el nuevo búfer tienen que ser realizadas de nuevo, por lo que lo que nos ahorramos en la fase de geometría no nos lo ahorramos en posteriores fases donde la necesidad de potencia de computación es mucho mayor por la mayor cantidad de datos a procesar:

Por lo que esta solución es peor que el hecho de tener una doble GPU aunque mejor que el sistema intercalado sin ningún tipo de optimización. Por otro lado la idea de la doble GPU en sistemas futuros no es algo que suena excesivamente malo, hay que tener en cuenta que a nivel de costes es mucho mejor dos GPUs de por ejemplo 100mm2 que una GPU de 200mm2, ¿el motivo? A medida que aumentamos el tamaño el rendimiento de las obleas, es decir, la cantidad de chips que salen buenos disminuye de forma exponencial y con ello aumenta el coste considerablemente.

Por otro lado esto en un SoC para sobremesa resulta mortal por el hecho que no solo se ha de duplicar la GPU sino también la interfaz de comunicación CPU-GPU y con ello la interfaz de memoria y es que no se ha de olvidar que coste de un chip depende de su tamaño y duplicar la interfaz de memoria supone duplicar el numero de pines y con ello el área del chip se duplica, por lo que la solución de cara al futuro será la de tener no una sola GPU sino tener dos. Es más, con la llegada de APIs como D3D12/DX12 y Vulkan al mundo del PC será posible realizar multiples listas de comandos desde la CPU y por tanto enviar dichas listas de comandos no a una sola GPU sino a dos GPUs de forma simultánea, esto debería acelerar aún más el tiempo de renderizado en el caso de la Realidad Virtual.

Todo esto convierte a la Realidad Virtual en un producto de lujo por el momento. Aunque curiosamente aparte de los PCs de gama alta hay otro sistemas que actualmente utilizan varias GPUs y con ello no me refiero a multiples stream processors sino múltiples GPUs completas y esto no es nuevo, esto lo llevamos viendo desde hace ya años… ¿Pero cuales son estos dispositivos?

The_iOS_family_pile_(2012)

Es más, en el mercado de consolas actualmente hay una consola que tiene ni más ni menos que cuatro GPUs en su interior:

ps_vita_beauty

Pero Urian, los dispositivos de Apple y Vita utilizan arquitectura PowerVR. Mirad arquitecturas como Mali y Adreno, veréis que estas también utilizan múltiples GPUs para su funcionamiento. ¿Y como es que hablo de chips para dispositivos de este tipo si hablamos del HTC Vive y la Realidad Virtual en general? No, no me he ido por los cerros, no os preocupéis.

Teniendo en cuenta lo que he dicho en la entrada anterior, uno de los puntos de la realidad virtual es el control por movimientos, pues bien, habiendo un cable por el medio para transmitir la imagen esto hace que el control por movimientos no se haga posible.

¿Que soluciones hay? La primera de ellas es realizar streaming desde la consola pero esto añade una latencia adicional que tiene que ser compensada con una potencia de renderizado enorme y por tanto con sistemas que serían muy caros, la otra solución es integrar el dispositivo encargado del renderizado dentro del HMD haciendo que el HMD sea un sistema integrado completo, esto además reduce aún más la latencia ya que la distancia entre la pantalla y el dispositivo es mucho más corta.

Claro esta que todo lo que hemos visto se basa en tener un PC o una consola de sobremesa, nadie esta apostando lo suficientemente en serio por un sistema integrado completo. ¿Cual es la empresa que creo que podría llevar a cabo un HMD completamente integrado y lanzarlo al mercado?

NINTENDO_LOGO

 

Antes de que la gente diga que estoy loco pensad que en los últimos años hemos visto una evolución brutal de la potencia de las GPUs para dispositivos post-pc. Lo que quiero decir es que en el caso de Nintendo no estoy diciendo de escalar desde la potencia de Wii U en adelante sino desde lo que es 3DS y con ello no me refiero a colocar el patético hardware de 3DS en un HMD, sino de aprovechar el enorme avance de las GPUs de móvil para realizar un HMD que lleve una consola integrada en su interior. Otra cosa distinta es que lo hagan, pero como he dicho anteriormente en este blog hay indicios de que este PODRÍA ser el camino que tomase Nintendo en un futuro y lo pongo en mayúsculas por el hecho que es una especulación por mi parte y podría equivocarme al 100%.

Recientemente Miyamoto dijo en una entrevista:

“Vemos a un montón de desarrolladores intentar crear juegos de carreras centrándose en elementos tradicionales. Nosotros queremos acercarnos más al concepto de juego, y si encontrásemos un nuevo tipo de interfaz de control que quedase particularmente bien con F-Zero, entonces, podríamos ver algo con ello en el futuro”.

¿Sabéis el tipo de interfaz que creo que le iría muy bien? Un HMD, imaginad lo que es vértigo de F-Zero renderizado en un HMD con “presencia”, es decir, con la sensación de que estas ahí y por tanto notas la sensación de velocidad. Quizás me falta imaginación pero no veo ningún entorno más en el que la experiencia de lo que es un F-Zero pueda mejorar más aparte de la Realidad Virtual.

Pero un momento Urian, ¿no dijo Miyamoto que el Oculus Rift va en contra de los valores de Wii U?

Más bien Wii U va en contra de los valores de todo, el hecho que Nintendo enviará a la mierda los valores de Wii U para su próximo sistema sería lo mejor que podrían hacer ya que la Wii U va en contra de los valores del mercado mismo. Es más, el hecho de lanzar un HMD con consola integrada no dejaría de ser un producto de océano azul en el fondo… ¿como? Pues pues el hecho que un HMD con consola integrada en su interior tendría su propia curva de valor y para mi una curva de valor bastante atractiva de cara al público de lo que ha sido Wii U.

 

 

Anuncios