Nintendo se suma al consorció Khronos (causas y consecuencias)

Por lo visto Nintendo se ha unido al consorcio Khronos.

OahU0f7-1

El consorcio Khronos es una unión de empresas encargadas de consensuar en comité las novedades que van a llevar las siguientes versiones oficiales de OpenGL y que en estos momentos se encuentran trabajando para la especificación final de Vulkan que es el nombre en clave del sustituto de OpenGL, siendo OpenGL una API gráfica no propietaria y de código abierto que se define de la siguiente manera:

  • La librería estándar de cada función contiene todas las funciones que por consenso han sido integradas en dicha librería. Para que una GPU sea compatible al 100% con una versión de OpenGL ha de tener soporte a todas esas funciones.
  • Las extensiones, son librerías de funciones gráficas que no se encuentran en todas las GPUs y si en modelos concretos, son utilizadas para poder utilizar todas las funciones de las GPUs en sistemas dedicados como consolas de videojuegos por ejemplo.

La API principal es OpenGL de la que se derivan dos APIs distintas:

  • OpenGL ES: Se trata de una subcolección de funciones de OpenGL para dispositivos de bolsillo, eliminando ciertas funciones que corresponden a partes de la GPU no disponibles en las GPUs par dispositivos de bolsillo.
  • WebGL: Pensado para aplicaciones web, es a su vez una subcolección de OpenGL ES, por lo que se trata de una API aún más reducida.

Aunque lo que nos importa es la API principal, cuyas equivalencias directas con Direct3D, la API propietaria de Microsoft dentro de DirectX, y otras APIs es la siguiente:

OpenGL Microsoft Nintendo Sony
OpenGL 1.2 Direct3D 7 GX PS2/PSP*
OpenGL 1.5 Direct3D 8 OpenGL ES 1.1+Extensiones
OpenGL 2.x Direct3D 9 GX2** GCM/GXM
OpenGL 3.x Direct3D 10 GX2**
OpenGL 4.X Direct3D 11 ¿OpenGL 4.x?*** GNMX
Vulkan Direct3D 11 Mono (Xbox One)/Direct3D 12 ¿Vulkan?*** GNM
*Las APIs de PS2, PSP y 3DS son propietarias y aunque están documentadas no tienen un nombre comercial asociado.
**La API GX2 es en realidad una API al nivel Direct3D 10, OpenGL 3.x. Pero tiene un subconjunto de la misma que es equivante a D3D9 y OGL2 para facilitar los ports desde PS3 y Xbox 360.
***Desconocemos por el momento el nombre la API utilizada en la siguiente plataforma de Nintendo.

Ahora bien… ¿Que significa la entrada de Nintendo al grupo Khronos? Significa el abandono de sus APIs propietarias para dar paso al uso de OpenGL y posiblemente Vulkan de cara al desarrollo de motores de juegos y de herramientas de producción de juegos, lo cual es mucho más importante de lo que la gente cree de cara a conseguir el apoyo de terceros, en especial en una época donde los juegos se realizan sobre motores gráficos concretos y sin el hardware adecuado no se tiene la API correcta, si no se tiene la API correcta no se puede desarrollar el motor gráfico y si no se tiene el motor gráfico entonces los juegos no pueden ser ejecutados en la consola.

Pero el problema de tener una API propietaria es que fuerza a los desarrolladores externos a desarrollar el motor gráfico de nuevo para dicha API, aunque luego los juegos compartan una base común y las mismas llamadas a la API entre versiones, lo que es la comunicación del motor con la API cambia según la API utilizada y si la plataforma no tiene ventas suficientes entonces el uso de su API gráfica se ve en entredicho y con ello el hecho de portar el motor gráfico, lo que permite que todos los juegos desarrollados para dicha API puedan ser fácilmente portados.

 

No obstante la libreria de APIs que tiene el consorcio Khronos es sumamente amplia y no sabemos en concreto cual es la que va a adoptar Nintendo, bueno, en realidad sabemos a partir de la cual. No se si os acordaréis de que a Square-Enix no hace mucho con el anuncio de Dragon Quest XI se les escapo sin querer una posible versión para NX. Dicho juego funciona bajo Unreal Engine 4 y sabemos que hay una versión OpenGL del motor, no obstante la cosa tiene trampa porque mirando la wiki oficial nos encontramos con lo siguiente:

Captura de pantalla 2015-09-23 a las 10.47.45

En realidad Unreal Engine 4 es una API pensada para D3D11/OGL4 pero se puede hacer juegos utlilizando D3D10/OGL3 si no se usan las llamadas a la API por parte del motor gráfico que solo se encuentran en D3D11/OGL4, es decir, el Unreal Engine 4 bajo D3D10 es una versión reducida del mismo y con eso se solventa uno de los expedientes X que se habían desarrollado con la conversión a Wii U de un juego en concreto:

Bloodstained

No olvidemos que tenemos información del nivel de API que soporta la API GX2 a través del SDK oficial y su documentación y de la presentación que hizo Unity junto a Nintendo en una GDC de hace unos años:

03

¿La diferencia? Oficialmente la API utilizada en Wii U es la GX2, por lo que la versión reducida de Unreal Engine 4 ha tenido que ser adaptada a la API GX2, de dicha conversión se esta encargando la gente de Armature, gente que había pertenecido a Retro Studios y por tanto conoce las APIs propietarias de Nintendo y esto les ha permitido realizar la adaptación para dicho juego, pero dicha adaptación es extra-oficial.

En el caso de este otro juego…

1360352939367614534

… la cosa es distinta porque no estamos hablando de una adaptación extra-oficial del motor gráfico a una API propietaria ahora que Nintendo ha entrado al grupo Khronos y puede utilizar OpenGL en sus consolas gracias a ello. Es decir, Unreal Engine 4 funciona en OpenGL, OpenGL estará soportado en NX y por tanto todos los juegos programados en Unreal Engine 4 o cualquier otro motor que utilice OpenGL pueden ser directamente portados y sin complicaciones a la nueva consola de Nintendo.

La otra ventaja para Nintendo es que gracias al soporte de extensiones en OpenGL Nintendo puede crear librerías para la versión de NX que utilicen funciones únicas del hardware de la consola.

Pero aquí ya entramos en un punto concreto, el hecho de que Nintendo ya había utilizado OpenGL anteriormente pero no en sobremesa sino en 3DS.

New-Nintendo-3DS-26

La API utilizada en los juegos de 3DS no es GX, ni GX2, en realidad es una versión extendida de OpenGL ES 1.1, entre sus extensiones se encuentran las siguientes:

  • El set de instrucciones del Vertex Shader ha sido ampliado hasta al nivel del Shader Model 3.0, es decir, es como el VS de D3D9/OGL2.
  • Puedes utilizar uno de los cuatro Vertex Shader como Geómetry Shader, su set de instrucciones es el mismo que el del Shader Model 3.0, el cual tampoco soporta Geómetry Shaders. ¿Como se explica? Simplemente utiliza las mismas instrucciones que el VS.
  • Dispone de la capacidad de iluminar a nivel de fragmento/quad (grupos de cuatro pixeles) que es una capacidad de OpenGL 2.0 en adelante, en OpenGL ES 1.1 se ilumina a nivel de polígono.

¿A que viene hablar de 3DS? En la re-organización que ha realizado Nintendo han unificado el departamento de hardware con el de software. Pues bien, Nintendo tenía anteriormente dos departamentos de software, uno en Nintendo Technology Development situado en los EEUU y otro en Japón, el primero se encargaba de las librerías y herramientas para sobremesa y el segundo de las de las portátiles. Por lo visto Nintendo ha descartado la división occidental y ha decidido optar por integrar la división de software portátil, esto lo sabemos porque el segundo al mando de la nueva división es Takeshi Shimada, quien fue el máximo encargado de la división de desarrollo de herramientas para DS y 3DS.

Dado que 3DS utiliza una versión de OpenGL con muchas extensiones esto explicaría el motivo por el cual Nintendo se habría sumado al grupo Khronos y el abandono de la serie de APIs GX. Por motivos de logística empresarial el hecho de que la división de hardware y la de software estén en un mismo departamento exige una comunicación directa y por tanto han de estar en el mismo sitio. Esto se traduce además en que el software del sistema no evolucionaría desde el de Wii U sino desde el de 3DS y esto sería una pista adicional de que Nintendo habría optado por un SoC con una CPU que utiliza una CPU con conjunto de instrucciones y registros ARM. Es decir, la “opción A” que hace uso de un SoC x86 de AMD va perdiendo enteros con el tiempo.

En fin, esto es todo, perdón por la escueta entrada de ayer… tenía una migraña de caballo.

Anuncios