Apple sustituirá OpenGL por Metal para uso de gráficos. ¿Cuáles son sus ventajas?

En la pasada WWDC en la que Apple fue el centro de atención mostrando su nuevos sistemas operativos iOS 8 para iPhone, iPad y iPod Touch y OS X 10.10 Yosemite para Mac, también se nos mostraron cosas interesantes para desarrolladores. Una de ellas es Metal. Una librería gráfica de bajo nivel que sustituirá a OpenGL. ¿Por qué Apple toma esta decisión?


Metal es una API gráfica, es decir, un conjunto de funciones que un programador puede utilizar para no tener que programar modos gráficos en sus juegos desde cero. En la industria actual, existen dos APIs de este tipo que lideran el sector, siendo una de ellas DirectX, que incluye gráficos, sonido, y otras cosas más; desarrollada para Windows, y es la que la mayoría de juegos utilizan. La otra es OpenGL, que sólo incluye elementos gráficos, dejando sonido, controles y demás para su implementación con otras APIs especializadas para ello, pero siendo multiplataforma. Es la API que se utiliza para los juegos en dispositivos móviles y bajo entornos no Windows (Como Linux).

Apple utilizaba hasta iOS 7 OpenGL en sus dispositivos. Sin embargo, en esta WWDC, ha presentado Metal, una API gráfica propia de Apple que asegura facilitar a los desarrolladores la programación de juegos, pero de bajo nivel. Para el que no lo sepa, en programación se habla de alto nivel cuando el lenguaje de programación está más cerca de la comunicación humana que de la comunicación a nivel de máquina. DirectX y OpenGL son de alto nivel, compatibles con cualquier plataforma para la que se desarrolle, mientras que Metal es de bajo nivel, y está desarrollada sobre el chip A7. Es decir, Metal no será compatible con dispositivos anteriores al iPhone 5S y al último iPad.

Esquema de diseño. Apple prescinde de OpenGL
Por esto probablemente iOS 8 siga soportando OpenGL, ya que el sistema funcionará en dispositivos del iPhone 4 en adelante.

Metal está, en características, al nivel de DirectX 11.2 (última versión de DirectX) y al de OpenGL 4.3 (siendo sin embargo la última versión de éste último la 4.4). Un desarrollador de Firaxis Games, concretamente el Ingeniero Jefe de la parte gráfica, nos da los motivos de por qué no usar OpenGL en su blog. Podemos destacar las 3 razones principales para ello:
Pese a que esta disponible casi en todos los sitios, en la plataforma donde se nos da a elegir, OpenGL es raramente escogida: Existen tres razones principales:
Razón #1:
OpenGL esta altamente fragmentado a ravés de las plataformas, “Escribe una vez y ejecutalo en cualquier sitio” es un mito.
Mobile GL, Linux GL, Windows GL y Mac GL, todos ellos son diferentes el unido del otro, y ofrecen diferentes niveles de soporte en cuanto a las características. Mientras que la especificación actual de GL en características está a la par con DX11 (incluso un poco por delante), la implementación con el común denominador no lo está, y esta es la cosa que como desarrollador me importa. Mientras esribo esto, el mínimo común denominador está restringido a un subset de GL4. En dispositivos móviles (ES3), está aún más atras, y se encuentra donde estaba DirectX hace unos 6 años.
Razón #2:
La calidad de los controladores del OpenGL es altamente variable, y tiene un retraso abismal respecto a DirectX.
Esto no es dificil de entender. Los juegos DX son el conductor principal para las ventas de tarjetas gráficas, así que es natural que los vendedores direccionen su atención ahí. Esto es, también, ciertamente, un problema solventable, pero dado el dominio de Windows como plataforma principal de juegos, los vendedores del hardware tienen muy poco incentivo a solucionarlo en el presente.
Estas dos primeras razones son ambas no-técnicas, y por lo tanto, definitivamente irrelevantes. Pueden ser solventadas lanzando más recursos al problema. Esos probleas son meramente el resultado de la falta de interés en OpenGL por parte de los vendedores de software, vendedores de hardware y en consecuencia de los que consumen juegos. Esa falta de interés son el motivo por el cual los problemas 1 y 2 no han sido solventados aún. Sin embargo, esto no es el problema real, sino meramente un síntoma.
Razón #3:
El problema real de OpenGL, es que tal y como esta diseñado, es inferior a sus competidores en partes muy importantes.
Además, tenemos otras también relevantes pero son más técnicas así que no entraré en detalle, por ejemplo, hasta ahora las APIs gráficas sólo utilizaban un núcleo del microprocesador para enviar comandos de trabajo a la gráfica, que se encarga de procesarlo. Apple en Metal habla del 'multihilo eficiente', y creemos que solventará este problema permitiendo distribuir los envíos de comandos entre varios núcleos de CPU. Esto se está intentando solventar también por Microsoft para DirectX 12, que saldrá en 2015. ¿Adivináis cuándo lo solventará OpenGL? Ni siquiera se han molestado en ponerse a ello.

Una API centrada en un hardware concreto hace que no sea necesario un intérprete (componente software que traduce el código a una secuencia que el procesador sobre el que trabajamos entienda, de forma que un mismo código que funciona en muchos procesadores, en cada uno de ellos será traducido de forma diferente), porque el procesador siempre será el mismo. Esto ocasiona una eliminación de las sobrecargas de intérprete que se encuentran en Direct3D (DirectX) y en OpenGL, lo que llevará a ganar tiempo de renderizado de los gráficos. Gran punto para Apple.

Funciones de Metal
Los Shaders Precompilados ofrecen el aprovechamiento del diseño de bajo nivel para el Apple A7, basta con integrar en el código el shader ya en lenguaje traducido a máquina para el A7, de forma que nos volvemos a ahorrar tiempo y procesamiento.

Es por todo esto que WiiU está en desventaja técnica con respecto a Xbox 360 y PS3 que son de la antigua generación de videoconsolas. El único núcleo usado en WiiU para enviar comandos (por el hecho de no tener el multihilo es inferior en potencia al núcleo de las consolas de Sony y Microsoft). Y es lo que va a pasar con Steam OS si Valve sigue pensando que debe tirar de OpenGL para este sistema, usando apenas un conversor de Direct3D a OpenGL bajo un sistema Linux. Microsoft desarrolló una versión de DirectX para Xbox 360 en lugar de usar OpenGL, Sony hizo una API propia para PS3 en lugar de usar OpenGL, y ahora Apple lo hace para su A7, sin embargo Nintendo con WiiU utiliza una arquitectura derivada de OpenGL, con todo lo que ello conlleva.

Empresas que apoyan a Metal
En el panorama actual de videojuegos, tu tecnología debe recibir apoyo de los motores gráficos o plataformas para los que se desarrollan los videojuegos, y Apple se lo ha buscado bien. Unity, Crytek, Epic Games y EA ya están apoyando a Metal, lo que deriva en una enorme cantidad de juegos. Es más, EA está últimamente colaborando muy estrechamente con Apple además de dar apoyo a la API Metal, dejando a Nintendo de lado (Frostibite 3 no fue adaptado a WiiU, debido a entre otros motivos a que tenía imposibilidad técnica).

Obviamente no es nada claro que Apple pueda desarrollar una consola de videojuegos ya que no se ha pronunciado, pero si lo pensamos, no es descabellado debido a todo este apoyo, además de que estarían mejor que Valve (Usando OpenGL) y que Nintendo (Que deriva de OpenGL en WiiU). Sería posible adaptar un derivado del A7 con mayor números de núcleos de CPU y de GPU, pero la resolución a esto ya la dejamos para la Keynote de hardware que tendremos en los próximos meses.

Más información | Guía de uso de Metal (en inglés)


Publicado por: Pedro Adame Vergara

Coordinador del Blog iSenaCode. Soy un gamer por naturaleza y experto en Windows. Soy el experto de iSenaCode en todo lo relacionado con el mundo del PC.


Publicar un comentario

Destacado

¿Que dice nuestra comunidad?

Siguenos en las redes sociales



item