El futuro cambio de paradigma en cuanto a los gráficos

Veamos…

¿Que sucederá cuando los costes de desarrollo impidan a los estudios mejorar los gráficos? ¿Adiós a la industria? ¿Nintendo was right?

Los costes de producción son en realidad los costes relacionados con el capital humano en lo que a videojuegos se refiere, no estamos hablando de una actividad industrial donde se haya de pagar equipamientos la mar de caros y exista una estructura física, todo lo que se crea proviene del talento y la mente de los desarrolladores.

inside-Capcom-studio-office

Esto es importante porque no es lo mismo que hacer un coche que la estructura del coche empieza desde el minero que pica en la mina hasta el pintado final del coche, es mucho más sencilla ya que todo se resuene en una sola etapa de producción y pese a haber diversos departamentos estos trabajan en paralelo los unos con lo otros. ¿Cual es el elemento que hace subir los costes? Ni más ni menos que el hardware y sus especificaciones técnicas, cuando más potente es un hardware en el aspecto gráfico se necesita un equipo de desarrollo cada vez más grande que al mismo tiempo aumenta los canales de comunicación y acaba por aumentar con ello el tiempo de desarrollo de los juegos y con ello el coste ya que:

Coste de Producción= Salario combinado de todos los trabajadores*tiempo.

¿En que se traduce esto? En que el tamaño de los equipos si crece mucho entonces no puede recibir las ordenes pertinentes porque la comunicación se complica demasiado, es más, dados estos problemas de comunicación el rendimiento de la masa de trabajadores disminuye y por tanto se acaba cumpliendo la ley de rendimientos decrecientes. ¿Y que ocurre? Que entonces necesitamos una cantidad de personal cada vez más grande para conseguir un mismo resultado y se llega un punto en que los costes de producción aumentan cada vez más.

750px-Factor_5_dev_costs

cerny_aias

¿Y que tenemos en el otro lado? Pues que el precio de los juegos ha ido disminuyendo con el tiempo… ¿como si siempre han rondado un precio similar? Esto es porque el valor de una unidad monetaria va variando con el tiempo si tenemos en cuenta la inflación y dado que los videojuegos daban unos márgenes enormes lo que se ha hecho es mantener los precios en un rango pero se han ido disminuyendo los beneficios. Es decir, los videojuegos han estado años en una posición sin inflación, pensad que un juego cuando se vende no solo carga con los costes de producción sino también los de promoción del mismo… pensad lo mucho que han aumentado y lo mucho que ha disminuido el diferencial coste-beneficios y entenderéis la pura realidad… la mayoría de grandes editores están así…

Tío-Gilito

… montados en enormes cantidades de dinero que pueden convertir fácilmente en nuevos productos y que ademas les permite ocupar los primeros puestos de la cuota mental gracias a la propaganda, algo contra lo que los pequeños estudios no pueden competir porque no tienen ni los recursos económicos para la producción ni tampoco para la promoción. Obviamente esta es la explicación de porque pueden seguir este ritmo pero todos sabemos que su tasa de ganancia se va disminuyendo a medida que los valores de producción suben… ¿Van a continuar subiendo o se van a mantener estables en unos costes determinados?

Existen otros elementos aparte del trabajo humano que son lo que hacen que los gráficos de los juegos mejoren, la implantación de nuevas tecnologías y algoritmos gráficos que permiten una mejor calidad de imagen y cuyo coste humano es casi nulo. Hace unos pocos años vimos una presentación de Tim Sweeney donde hablo de la iluminación de más de dos rebotes… ¿En que consiste la idea? Digamos que el aspecto de las cosas depende de la iluminación y de como esta se comporte con cada material que estamos representando y hay materiales que en los videojuegos no se representan bien por el hecho que incluso hoy en día seguimos usando luz de dos rebotes.

Los primeros juegos en 3D por limitaciones técnicas utilizaban luz de un solo rebote, pensad en la cámara también como una linterna que envía el haz de luz directamente contra los objetos y luego vuelve, un mecanismo tan simple como este fue el utilizado por Doom:

doom2shoot2

¿Que vino después? La luz de dos rebotes con una sola fuente de luz, donde la luz puede rebotar con un objeto, luego con otro y más tarde volver de nuevo a la cámara. En la iluminación de dos rebotes la fuente de luz principal no tiene porque ser la cámara sino que puede estar colocada en cualquier parte del escenario solo que después de hacer el segundo rebote entonces este vuelve hacía la cámara. Una buena diferencia entre el uso de iluminación de un rebote y de dos rebotes se puede ver aquí:
cap1 9884671701380982

El problema es que el sistema de renderizado utilizado por los videojuegos, la rasterización, tiene que actualizar la información de color de todos los pixeles por cada fuente de luz en la escena. ¿A que viene todo esto? Pues que con cada fuente de luz la tasa de relleno se recorta por completo. ¿Hemos mejorado desde entonces en el aspecto de la iluminación? La respuesta es un rotundo NO porque seguimos en los dos rebotes, es decir: la iluminación sigue siendo algo estancado en el tiempo. Se requiere una cantidad de computación enorme ya que al añadir un tercer rebote entonces el número de operaciones por pixel aumenta no solo aumenta de forma directa sino también de forma indirecta siendo la iluminación indirecta la que en ciertas situaciones es generada tras el primer rebote al tocar ciertas superficies/materiales concretos.

¿Y cual es el problema? Con dos rebotes ciertos materiales o mejor dicho el comportamiento de cierto materiales en un entorno no se pueden simular de forma fidedigna. Es completamente igual que tu tengas un equipo de talentosos grafistas y desarrolladores que si la escena se renderiza solo con dos rebotes entonces te verás visualmente limitado. ¿y de donde saco todo esto? De una presentación que realizo Tim Sweeney en el DICE de 2012 donde explico muy bien explicado el tema de la evolución gráfica, Sweeney es el arquitecto del Unreal Engine por lo que tiene algo que decir aquí:

samaritan_2011_technox4fh5

04

La iluminación de primer orden utiliza iluminación de un rebote y con ello se encuentra en el primer orden de aproximación, la de Unreal de dos rebotes y se encuentra en el segundo orden de aproximación y la demo de Samaritan utiliza tres rebotes y se encuentra en el tercer orden de aproximación. ¿Y que es una aproximación? es una representación inexacta que, sin embargo, es suficientemente fiel como para ser útil. Si tenemos en cuenta la información que se tiene que calcular en cada pixel a medida que aumentamos el número de rebotes aumentamos la potencia necesaria por el hardware para la representación, es decir… la cantidad de operaciones por pixel aumenta considerablemente.

Por lo que tenemos tres caminos de cara al futuro en estos momentos en cuanto a la tecnología gráfica en los juegos:

  1. El clásico aumento de resolución con la aparición de los televisores 4K y su estandarización con el tiempo, 4K son 3840 x 2160, es decir… una resolución unas cuatro veces superior a los 1080P y un salto aún más grande que los 480P a 720P y aún más que los 720P a los 1080P.
  2. La aparición de la Realidad Virtual, no solo con el aumento de la resolución sino también con el hecho de tener una tasa de refresco muy grande.
  3. Quedarnos en los 1080P para aumentar la calidad de imagen al aumentar la cantidad de operaciones por pixel.

¿A donde quiero llegar con esto? Existe margen para la mejora gráfica fuera de los valores de producción y aquí voy a aprovechar para responder a una de las preguntas que tanto me habéis hecho de paso…

Captura de pantalla 2015-11-14 a las 10.55.32

No es que sean poco potentes sino que un servidor esperaba poder ver juegos que visualmente resultasen un salto más espectacular al utilizar iluminación de tres rebotes, desgraciadamente no ha sido así y sigue existiendo un margen para la mejora visual bastante importante que veremos cuando se estanquen los costes de producción y la potencia del hardware haya subido lo suficiente como para realizar una aproximación visual más fidedigna. Obviamente dado que los valores de producción no podrán seguir aumentando más allá de un límite económico será el hecho de utilizar algoritmos más precisos y con una mayor aproximación lo que nos dará el salto visual… ¿pero como será ese salto visual? Sería muy decepcionante una huida de cara a la resolución y la tasa de refresco (esto por la Realidad Virtual) en vez de mejorar la calidad visual de la escena, precisamente no es que yo sea una putilla gráfica pero en general el impacto de la nueva generación respecto a anteriores ha sido para mi…

meh

Se que hay gente que me dirá que estoy ciego, pero por favor… comparad el salto de PSone a PS2, el de PS2 a PS3 y luego el de PS3 a PS4… El último ha sido bastante discreto y realmente no ha traido nada revolucionario a nivel gráfico fuera de una mayor resolución y un aumento “leve” de las operaciones por pixel. La gente olvida que esto…

Samaritan2

… pertenece a una demostración no-interactiva pero generada en tiempo real que requiere unos 2.5 TFLOPs de potencia gráfica… algo que ni tan siquiera PS4 puede llegar a alcanzar en lo que a potencia se refiere y eso que hablamos de un entorno donde pese a que todo se renderiza a tiempo real esta todo “guionizado” y esto reduce enormemente las necesidades de computación.

No en vano los señores de Epic para el desarrollo del Unreal Engine 4 decidieron tirar de una técnica llamada SVOGI (Sparse Voxel Octree Global Ilumination) e hicieron la primera demostración del motor con la siguiente demostración:

unreal-engine-4 ff_unreal4_first

¿El problema? Se ejecutaba en una GeForce 680 con unos 3 TFLOPS de potencia, mucho más de lo que la consola más potente PS4 que tiene una potencia de 1.8 TFLOPS. El propio Sweeney dejaba ir lo siguiente en su twitter sobre las necesidades del UE4 en cuanto a iluminación.

captura-de-pantalla-2013-04-01-a-las-12-26-59

Dadas las necesidades para el SVOGI en cuanto a computación para la ejecución de escenas con iluminación global (iluminación de 3 rebotes) la calidad visual del UE4 en consolas ha tenido que recortarse y se ha tenido que optar por una aproximación menos precisa. No en vano un Octree es un árbol de unas 8 ramas que en este caso se utilizaba para almacenar la trayectoria de la iluminación de la escena, la cual es almacenada en forma de pixeles volumétricos (voxels) que en una representación más o menos así:

SVO8

Octree Voxels_octree

Un Octree para almacenarse requiere un espacio de memoria grande que es [(8^n)* información por pixel], a medida que n es más grande tenemos más precisión en la iluminación de la escena más grande pero el aumento en lo que a la computación se refiere aumenta con cada nuevo nivel de forma espectacular. El caso es que la mayoría de las demostraciones con el SVOGI se han hecho con una n=3.

SVOCost2

Esto son un montón de accesos a memoria continuados y el tamaño de un Octree a esos niveles no es pequeño ya que para si solo se come ni más ni menos que…

SVOCost1

… hasta 1GB de memoria, pero lo que realmente es complejo es el tiempo de construcción del Octree en lo que a la escena se refiere (escena, no fotograma) que en ese caso es de 70ms y la actualización en cada fotograma de 5ms en una Kepler/GeForce 680/GK 104… imaginaos el impacto en una GPU menos potente como son las consolas. Es por ello que en sistemas como en PS4 se han buscado otras alternativas sin tanta complejidad.

Axxtgrx

El hecho de utilizar las texturas parcialmente residentes es porque estas se sitúan en las caches de la GPU y reducen con ello el tiempo de acceso (latencia).

PRT 2

Dado que la arquitectura de la GPU de Xbox One y PS4 es la misma esto es aplicable en ambas pero la realidad es que Xbox One al ser menos potente tiene un mayor handicap en esto. ¿Cual es el problema? Las GPUs están pensadas para funcionar con su memoria a mucho ancho de banda pero a mucha latencia, es decir, para recorrer una estructura de datos compleja son bastante…

gladiator-thumbsdown

¿Como es que es importante un Octree? Por el hecho que se encuentra entre G-Buffer del renderizado por diferido y el K-Tree del trazado de rayos. Es decir, nos permite almacenar los valores de color de la iluminación en cada parte de la escena. ¿A que ha venido hablar del G-Buffer? En el renderizado por diferido durante el primer paso las posiciones y normales de los elementos de la escena son guardados en un búfer de imagen (2D) que se almacena como textura y es utilizado posteriormente para componer la escena de forma más precisa, el uso de un Octree es lo que permite almacenar en un modelo más preciso dicha información y con ello dar una aproximación más realista y permite iluminación de más de dos rebotes a tiempo real… ¿El motivo? El octree almacena el recorrido de la luz en el espacio tridimensional y permite los tres rebotes.

Mirad este video por favor donde se ve la aplicación del VCTGI que aparece descrito en la diapositiva de Sony:

En la descripción del video podemos leer:

Captura de pantalla 2015-11-14 a las 12.05.21

¡Dos rebotes! La demostración va muy suave pero la representación visual de los materiales no es mejor que la que vemos en los videojuegos, obviamente una iluminación de tres rebotes ralentizaría enormemente la velocidad de la escena en una HD 7870 (la cual tiene una potencia muy cercana a la GPU de PS4). ¿En que se traduce esto? Fácil, en que existe un margen de mejora visual que no depende del trabajo humano pero que no veremos hasta que la potencia del hardware sea lo suficientemente grande y permita el salto visual que no se ha dado en esta generación. Un salto visual que en este caso no depende de los valores de producción sino de la tecnología disponible del momento y que no se puede ejecutar por la falta de potencia de los sistemas actuales y por tanto se necesita un cambio generacional.

Es decir, creo que el tamaño de los estudios se estancará y llegara un punto en que no crecerá más porque no será rentable ampliarlos pero al mismo tiempo creo que veremos una mejora en la representación visual de cara a la siguiente generación tan pronto como la iluminación de tres rebotes se estandarice pero para ello se requiere un hardware mucho más potente que el que tenemos actualmente.

Anuncios