Hanagami en su más que interesante blog, el mejor que he léido en aspectos técnicos de los que han ido apareciendo en los últimos años y el él hay una entrada muy pero que muy interesante y completamente informativa sobre la VR que la podéis encontrar aquí.  Os recomiendo enormemente que lo leaís y de paso le envió un saludo personal a Hanagomi contestando uno de sus comentarios en este blog.

Es muy infortunado que unos HMD y una háptica tan pobre se le pueda considerar VR. Se podría considera que Micro-soft puede replicar tal artilugio, pero seria como tirar muy bajo, no ver a futuro. Aun así es lamentable el soporte de Windows a la VR es y sera de pena, esta bien que no vendan HMD. Si, lamento y deploro el nulo soporte nativo de estos OS y las API a los que nos interesa esta ciencia.

Mi tesis y mi trabajo final de carrera fue sobre la VR curiosamente, pero lo hice en una época donde no había la tecnología que permitiese colocar una pantalla de móvil con una alta resolución por punto y con una latencia y un pixel switching tan bajos como hay ahora y si, la tecnología es pobre (aunque antes lo era en modo superlativo) y para mi personalmente la VR tiene un problema actual muy pero que muy grande y que nadie ha resuelto por el hecho que las actuales unidades VR tienen tecnología derivada de los smartphones, ¿Cual? Para la inmersión en los videojuegos que es la falta del Eye Tracking bien hecho y sin fisuras, es decir… que al pipeline de la VR se le tendría que añadir un tiempo del seguimiento ocular y poder leer los ojos lo suficientemente rápido con tal de poder eliminar una buena cantidad del mareo y del malestar que tiene mucha gente al jugar a la VR.

¿Y por qué para mi es importane el Eye Tracking? Pues por el hecho que el renderizado de la escena toma como punto de referencia de la cámara lo que supone que son los ojos de nuestro personaje y en la VR lo que el personaje que llevamos es lo que ven nuestros ojos, por tanto tiene que haber una concordancia para la inmersión. En cambio las VR actuales no hay ninguna concordancia y una desconexión tremenda entre lo que muestra la VR y ven nuestros nuestros ojos. Y alto, que empresas como Oculus, HTC y otras están trabajando en ir adoptando estas tecnologías y el aumento de potencia del PC hará que un día esten integradas pero… ¿En consolas? Tenemos una VR de broma y de juguete que los Sony Retards están aplaudiendo porque de momento es algo exclusivo solo para su consola y para colmo como es caro e inaccesible para el vulgo mortal (aunque repitan la matraca que Sony la ha hecho accesible a las masas es falso, el precio sigue estando por encima) pues no entra en la categoría de casual y no digamos la chapuza que sería una VR de mala calidad para Switch teniendo en cuenta el hardware que tiene la actual portátil de Nintendo, todo ello hace que la VR en consola actualmente no sea más que un enorme…

367ifz

Pero claro, lo del Eye Tracking es algo que no veremos en consolas y no es plan de obligarles a la gente que se compren unas gafas nuevas en consolas, en PC es otro tema porque la gente se ha acostumbrado a ciclos cortos de vida de los productos y de ahí que ya se hable de una VR con «Eye Tracking» de cara al futuro. ¿Pero como la implementamos de manera eficiente? Aquí tenemos que tener en cuenta cual es el pipeline de la VR.

optimising-opengl-es-for-mobile-vr-motion-to-photon-latency

Uno puede pensar que por ejemplo el pipeline puede ser así:

syncvrrendering

Cuando realmente sería así:
inputrenderoutpot

Como se puede ver hay un espacio de tiempo que se puede dejar libre dando más tiempo a la GPU para realizar su trabajo o en su defecto colocando un input más complejo, dado que las GPUs aumentan siempre de potencia el tiempo pasa a ser mucho más necesario en el input y es aquí donde entra el eye tracking de marras porque la GPU necesita saber en que grado se ha girado la cámara en cada momento y dicha cámara son nuestros ojos. Obviamente cualquier elemento de captura de información adicional añade tiempo de más, aquí en este video sobre un sistema de seguimiento ocular vemos como dicho seguimiento funciona a 250hz se hace con cámaras con una frecuencia de 250hz, hay que tener en cuenta que el sistema puede tener un sistema de captura IR que funcione paralelamente al input y ya hay muchos dispositivos en el mercado que tienen este tipo de cámaras.

El seguimiento via IR de la retina no es lo mismo que un seguimiento tipo Kinect sino que es mucho más simple y se puede realizar directamente desde un chip en las VR o en su defecto utilizar parte de la potencia de la GPU del sistema para adivinar la posición, en todo caso aquí se comenta como el procesamiento del eye tracking del video de arriba es de unos 2 ms.

Toda esta información esta procesada por el hardware y el software en menos de 2ms, permitiendo un fluido y lo que es más importante, un proceso seguimiento de los ojos.

El hecho de que el sistema capture a 240hz la posición de los ojos significa que para una buena fluidez el tiempo de renderizado debería ser de 240 fotogramas por segundo, es decir… El hecho de poder renderizar a esa velocidad pero al mismo tiempo necesitariamos pantallas de móvil con esa frecuencia que por el momento no existen por lo que la captura ocular en las carácteristicas actuales se debería hacer a unos 120hz. ¿Pero como se traduce todo esto en números? Voy a tomar el PS VR que tiene un tiempo de fotón de 18ms y una tasa de refresco de 8 ms.

psvr-e1446817124933

Lo de la tasa de refresco es importante, porque esto significa que de los 18ms que tenemos existen unos 9ms para el input y el rendering, el input de las VR actuales esta pensado para funcionar 1 ms dejando los otros 8 ms para el renderizado que son los 120fps. En el caso de PS4 Pro se utiliza la potencia adicional de la GPU para llegar facilmente a esos 120fps… ¿Pero que ocurre si a un HMD comercial como este le añades el eye tracking sin cambiar el resto? Hemos dicho que 240hz=2ms por lo que podemos deducir que 120hz=1ms, entonces nos deja la cosa con que tenemos que renderizar a 7ms y por tanto aumentar el renderizado a 145 fotogramas por segundo.

¿Es posible un HMD comercial con Eye Tracking? A nivel de costes es posible, es más, pienso que si Microsoft saca unas gafas propias para Xbox Scorpio esa será la Killer App, más que nada porque es una tecnología que ya han probado en las Hololens.

fortalezaeyecamera

Esto es de una patente de lo que es «Fortaleza» antes de convertirse en las Hololens, pero de momento las Hololens no tienen eye tracking en su versión actual, pero hace tiempo que se sabe que Microsoft estaría trabajando en la segunda versión de sus gafas de realidad aumentada en aplicar dicha tecnologia. Obviamente las VR no serían las Hololens pero podrían aprovechar enormemente la tecnología de «eye tracking».

¿Y que ventajas tendría esto aparte de evitar mareos? Bueno, la segunda ventaja tiene que ver con si la GPU de Xbox Scorpio es un AMD Vega y es el Tile Rendering del que os comente.

tilevega

En una unidad HMD el espacio de la lente no ocupa toda la pantalla.

48o7yqh

Esto significa que podemos descartar parte del búfer de imagen que no sería renderizado y ganar un ligero aumento de rendimiento con todo esto. Obviamente esto es pura especulación pero si Microsoft lanza una VR como Dios manda, es decir, con eye tracking. Dara un enorme golpe sobre la mesa en el tema dejando en pañales a la VR de Sony que pasaría de accesible a ser de mala calidad en comparación con lo que ofrecería la competencia. ¿Y con que juego se estrenaría la VR de Xbox Scorpio?

image_stream-28795-3013_0002

Un Forza Motorsports 7 renderizado a unos 150 fps reproducido en un HMD 1080p120 con Eye Tracking tiene que ser una pasada y si Microsoft consigue hacer desaparecer el mareo con el Eye Tracking integrado se van a llevar con el tiempo el mercado de las VR de calle.