A muchos de vosotros el título de esta entrada probablemente no os diga nada, y eso es más que normal. Poca gente se preocupa de como funciona la magia de los ordenadores y consolas a suficiente bajo nivel como para ello; pero para el mundillo de los desarrolladores de aplicaciones 3D y basadas en computación por tarjetas gráficas, entre ellos de videojuegos, esto es una gran noticia.

Remontandonos tiempo atrás, a Enero de 2014, surgió en las noticias tecnológicas un nombre que puede que os suene: Mantle. Mantle era la propuesta de código abierto de AMD que tenia como objetivo el reducir el «overhead» que tenian los programas al comunicarse con el hardware de la tarjeta gráfica.  El «overhead» es el retraso que se produce por el hecho de que el código de un programa que funcionase con API’s como OpenGL o DirectX debe adaptarse a la multitud de hardwares en los que se puede implementar. Esto llevaba a la necesidad de efectuar una «traduccion» del lenguaje del programa al lenguaje del hardware objetivo.

AMD_Mantle_Logo

La consecuencia de esto era algo que sencillamente no le gusta a nadie, la pérdida de eficiencia, pero que era un mal menor en comparación con la posibilidad de tener que escribir código para cada dispositivo al cual se desease llevar un software concreto.

Así pues AMD sacó al mercado Mantle, que fue adoptado por algunos desarrolladores grandes en juegos como Battlefield 4 y fué incluido en engines de videojuegos relevantes como Frostbite de EA y el Cryengine de Crytek. Sin embargo, el impacto causado por esta mejora en la industria, a primera vista considerable, no fue tan grande como cabría esperar.

Mientras, en la guerra entre las API’s gráficas DirectX y OpenGL, la libreria abierta mantenida por el grupo Khronos estaba perdiendo la delantera respecto a DirectX en el desarrollo para PC (aunque siendo sinceros, sigue siendo muy poderoso gracias a Android). Hay que admitir una cosa, OpenGL es un monstruo mastodontico. Con más de 20 años de historia a sus espaldas y encadenado por la necesidad de ofrecer una retrocompatibilidad mayor que DirectX (que no tiene practicamente ninguna obligación, pues es privativa de Microsoft y por tanto la compañia puede cambiarla a placer), estaba atrasandose con respecto a su competidor en caracteristicas y en eficiencia percibida (aunque para muchos esto fuese una maniobra de Microsoft para desbancar a su competidor). Sobre todo, si en algo fallaba OpenGL era en su adaptación a las arquitecturas modernas de los dispositivos, inherentemente multinúcleo y multihilo.

A esto hay que añadir, además, el auge del GPU computing, o cálculo basado en tarjetas gráficas, como un factor cada vez más determinante en el mercado de estos dispositivos, cambiando las necesidades de los programadores y ante las cuales se ofrecian soluciones como las librerias CUDA de NVidia.

El grupo Khronos, formado por un comité de varias empresas lideres del sector de Hardware y Software, siempre ha sido lento en su reacción ante los avances de DirectX (probablemente por la necesidad de consensos para los cambios). Sin embargo esta vez, ante la salida de DirectX12, su contraataque ha sido poderoso.

Los miembros de Khronos ya percibian la necesidad de una nueva API de GPU’s multiplataforma, con lo cual se generó un grupo de trabajo con ingenieros provenientes de empresas fuertes en el sector del hardware como NVidia, AMD o Intel y empresas fuertes en el sector del software gráfico como EA, Valve y Lucasfilm Ltd. En 18 meses, de este grupo surgió Vulkan, del cual han lanzado su API, sus drivers y su SDK el dia 16 de Febrero de 2016 .

Vulkan se desmarca totalmente de OpenGL y, en base a los principios y a mucho del código de la especificación Mantle de AMD, se perfila como una nueva API que se adapta a las exigencias de un nuevo mercado. Es un API explícito, por lo que permite un control de la GPU a un nivel muy bajo, y portable, ya que es practicamente compatible con todas las principales plataformas, a diferencia de Metal, el API Apple, o de DirectX 12, que es unicamente compatible con Windows 10.

Al abolir una capa de abstracción grande y una detección de errores exhaustiva en runtime como la que tenía OpenGL y traspasar mucha de la responsabilidad de manejo del API al desarrollador, se obtiene un incremento en la eficiencia considerable del API, a coste de una mayor dificultad de manejo.

Además, para comunicarse con este API, surge SPIR-V, un lenguaje intermedio que ofrece una representacion nativa para los lenguajes de shaders de Vulkan y el kernel de OpenCL, lo cual reforzaria la aplicación del API en GPU computing.

¿Como afecta todo esto al «gamer» de a pie? Se puede esperar que los videojuegos, como siempre, avancen gracias a aumentos en la eficiencia en el uso de recursos, lo cual llevará a escenas mas impresionantes, batallas más espectaculares y efectos más depurados. Tambien ayudará a aliviar la carga que supone el renderizado de imagenes para dispositivos de realidad virtual como las gafas Oculus Rift o Vive, permitiendo escenas mas espectaculares para realidad virtual.

Los desarrolladores que se basen en los principales engines de videojuegos se verán beneficiados enormemente, pues verán como sus juegos mejoran en eficiencia sin tener que invertir un trabajo significativo (del que, por supuesto, se encargaran los developers de esos engines).

Por último, como siempre, la competencia es el impulsor último del ingenio, con lo cual esperemos que la llegada de  Vulkan le sirva de revulsivo al sector y que, como siempre, los ultimos beneficiados seamos los consumidores.

Se puede especular, de hecho, que la creación de Vulkan surge como parte de otra maniobra competitiva por parte de Valve, la compañia de Gabe Newell. Hay que reconocerle una buena parte del merito del surgimiento del API a Valve, empresa creadora de la plataforma Steam, a las veces tienda online y red social de gamers, pues ha influido y fomentado fuertemente el desarrollo de Vulkan. La creacion de un API multiplataforma competitivo sin duda beneficiaría el que se portasen juegos a sistemas operativos Linux, en concreto a SteamOS, la fuerte apuesta de Valve que acompaña a las Steam Machines que pretenden llevar el PC Gaming al terreno de las consolas. Si la jugada de Gaben sale bien, podriamos ver la biblioteca de juegos, principal debilidad de Linux actualmente, aumentar rapidamente.

steam-machine-alienware

Si este fuese el caso, las Steam Machine se volverian unos competidores a tener en cuenta en el mercado de consolas y casi con total seguridad llevarán a la nueva generación a responder en consecuencia.

En cualquier caso, maniobra competitiva o no, a los gamers nos toca regocijarnos, pues los ultimos beneficiarios de esto seremos nosotros.

En cuanto a OpenGL, no es ni mucho menos un cadaver tecnológico. La libreria es demasiado importante como para ser sustituida inmediatamente por Vulkan, y desde Khronos se han comprometido a seguir dandole soporte en el futuro previsible. Sin embargo es probable que desaparezca lentamente con el paso del tiempo, sustituida por Vulkan, que surge del entendmiento de las nuevas necesidades del mercado.

Y ahora, ¿te emociona la llegada de Vulkan?