vulkan logo

Vulkan ya disponible para Mac

Hace unas horas se ha publicado el código fuente de la API abierta multiplataforma que da soporte de Vulkan para MacOS.

De Vulkan hemos hablado ya en alguna que otra ocasión. Si quieres conocer más detalles de esta API gráfica competidora de DirectX y sustituta de OpenGL, date una vuelta por aquí.

vulkan opengl
OpenGL vs Vulkan

Desde que Linux ha pasado de ser un paria en el mundo de los juegos a convertirse en una plataforma con el potencial de hacer frente a Windows, han pasado unas cuantas cosas. El hecho de que el sistema de GNU no haya sido relevante como centro de entretenimiento, ha tenido graves repercusiones en el ecosistema de software, lo viene siendo la infraestructura necesaria para sacar todo el potencial al hardware que ha estado en condiciones de abandono desde el principio de los tiempos. Y esto implica a controladores, bibliotecas y sí, también APIs 3D.

Hasta hace un par de años, la única API 3D decente en Linux era OpenGL que hasta finales de los 90 competía de tú a tú con DirectX en Windows. De hecho hasta principios de este siglo, no era raro ver que los principales motores gráficos dieran la opción de renderizar tanto en Direct3D como en OpenGL.

Counter Strike en una Raspberry Pi

Entonces en este estado de abandono, apareció Valve cual elefante en una cacharrería e hizo algo que revolucionó el ámbito de los juegos en el sistema libre: sacó Steam para Linux y portó Source a Linux. Con esto aparecieron títulos como Half Life 2 junto a Counter Strike e infinidad de mods. Desde entonces empresas como Feral Interactive han seguido sus pasos haciendo el trabajo de portar juegos AAA como Grid Autosport. Hasta la fecha han salido cientos de juegos para Linux a través de Steam (eso sí, la mayoría provenientes de estudios independientes).

De todo esto no nos podemos olvidar de un conejillo de indias que (siendo finos en las expresiones) se tragó una gran cantidad de problemas debido a los portes. Se trata de OS X, un sistema Unix-Like cuya principal API 3D es OpenGL, dos particularidades que lo hacen muy similar en su funcionamiento interno a Linux. Así pues, Linux no fue la primera plataforma alternativa que eligió Valve para portar Steam y Source. El resultado de dichos portes no pudieron ir peor: programas inestables y un rendimiento paupérrimo (y esto cuando ya estaban en producción). Pero el desarrollo continuó y se acabaron consiguiendo resultados equiparables a Windows. Con este trabajo hecho, el porte a Linux fue «coser y cantar» y la cuestión es que gracias a los experimentos con OS X, cuando aparecieron los primeros juegos de Valve en Linux, los resultados fueron realmente buenos incluso desde las primeras versiones.

Desde el estado inicial (infraestructura de software defenestrada) al estado actual (una plataforma técnicamente competente frente a Windows) hubo varios estados intermedios. Como parece que hace tiempo que no sale el tema, hagamos un breve resumen.

En 2014, cuando Steam y Source llevaban ya una temporada disponibles para Linux, un desarrollador de Valve expresó su frustración ante la dificultad de desarrollar juegos para Linux. En esta queja dejaba claro que tanto OpenGL como API en general, como los controladores gráficos de todos los fabricantes para Linux en particular, no estaban a la altura. Con este mensaje daba voz a una industria que intentaba independizarse de la opción predominante y cerrada de Microsoft diciendo alto y claro que de no haber  un cambio radical, DirectX seguiría siendo la única opción viable para juegos. Sólo unos días después se corroboraban estas quejas en un estudio que reflejaba la incompetencia de la mayoría de controladores gráficos para Linux para ofrecer funciones de OpenGL recientes.

gtruc opengl
Hasta hace un par de años, la calidad de los controladores gráficos para Linux dejaban mucho que desar

Durante los siguiente meses, otros desarrolladores siguieron a Valve en sus quejas hasta que en junio de ese mismo 2014, un antiguo desarrollador de AMD dio su opinión sobre las dificultades de desarrollar para OpenGL. De este mensaje resulta especialmente interesante la afirmación de que OpenGL, aunque se anuncie como una API portable, en la práctica no lo es ya que portar un juego entre plataformas necesita un esfuerzo considerable.

En este momento nos encontramos ante una situación interesante: hay desarrolladores de juegos de alta calidad técnica y artística que quieren desarrollar sus títulos para un sistema de uso minoritario cuyo ecosistema no ofrece lo que ellos necesitan. Esta es la transición de Windows como único sistema válido para juegos para PC a Windows como un sistema más de otros tantos. Una transición, por cierto, que comenzó con Mac.

Durante este tiempo The Khronos Group (desarrollador de OpenGL) parece que no se queda de brazos cruzados y empieza a trabajar en algo nuevo. OpenGL se ha quedado definitivamente obsoleto y hace falta empezar desde cero. En marzo de 2015 (justo un año después de la queja del amigo de Valve), el grupo anuncia que ha estado trabajando en un sustituto de OpenGL. Al día siguiente se presenta en sociedad Vulkan, una API abierta multiplaforma con ańimo de sustituir a la criticada OpenGL y a hacer frente a DirectX. Pero ¡un momento! Vulkan sale sin soporte para el sistema operativo de Apple con el que en realidad comenzó todo esto.

Apple no ha mostrado nunca interés en dar soporte a Vulkan así que fue otra empresa la que desarrolló una implementación para el sistema de la manzana con algo llamado MoltenVK. Lamentablemente era software de código cerrado por lo que Khronos Group no podía meter mano. Pero hace unos días Valve llegó a un acuerdo con el desarrollador de MoltenVK y desde entonces el software está publicado bajo licencia Apache 2 por lo que desde ahora hay soporte de Vulkan para OS X e iOS. La misma Valve ha dado un paso y ha probado esta implementación con Dota 2 sobre MacOS. El resultado ha sido un incremento de la tasa de fotogramas del 50%.

Con esta noticia se cierra el círculo y Vulkan se convierte en una API verdaderamente portable que ofrece soporte para Windows, Linux, Android, OS X e iOS.

Ver comentarios