Home » Análisis » Vulkan, la API abierta de bajo nivel, futuro de los gráficos de juegos

Vulkan, la API abierta de bajo nivel, futuro de los gráficos de juegos

Hoy no vamos a analizar algo que sea de Apple, pero sí es algo que afecta a toda la industria tecnológica y, por lo tanto, afecta de manera indirecta a la propia compañía de Cupertino, que tendrá que tomar una decisión tarde o temprano sobre este asunto (y que entenderemos cuál será).

El consorcio The Khronos Group, del que forma parte Apple además de otras grandes como Adobe, Google, AMD, nVidia, Epic Games, Nintendo, Electronic Arts y casi todas las grandes marcas que tienen que ver con la tecnología, ocio o entretenimiento (menos Microsoft) es la responsable de multitud de estándares asumidos por la industria para crear especificaciones y librerías comunes a todos, todas de código abierto, y que permitan beneficiarse de un ecosistema común tecnológico.

De este consorcio han salido OpenCL, OpenGL, OpenGL ES, WebGL, Collada, OpenVX y otros estándares que han ayudado a la industria a desarrollarse con más eficacia al ser usados por todos ellos, en vez de intentar crear cada uno su propia solución y perjudicar al final a desarrolladores y usuarios.

Presentación de Vulkan API y su capacidad multiplataforma

En el GDC del año pasado, 2015, el Khronos Group Inc. presentó el proyecto de la librería Vulkan, una API que pretende sustituir a OpenGL y OpenGL ES como estándares gráficos abiertos para desarrollo gráfico de escritorio y móvil.

OpenGL, buena API pero no de bajo nivel

OpenGL es un problema actualmente para la industria, que ha dado una posición de ventaja a Microsoft que estos han sabido aprovechar. Y que incluso forzó a Apple a crear su propia solución cerrada gráfica para llevar el rendimiento gráfico de sus dispositivos más allá, Metal. El problema es simple: OpenGL es el estándar de gráficos 3D sobre el que está basada la gran mayoría de sistemas y compatible con todos. Pero OpenGL no está diseñado como una API de bajo nivel si no que se sitúa a una distancia bastante importante del hardware pues nunca se pensó que necesitara ser otra cosa.

OpenGL es Apple

El problema ahora es que con los años (más de 20) DirectX, que sí es una API gráfica de bajo nivel y que todos los fabricantes soportan a nivel de hardware, ha conseguido una posición de privilegio que ha hecho que Microsoft tome una drástica decisión para conseguir usuarios para su última versión de sistema operativo, Windows 10. Dicha decisión no es otra que DirectX 12, un cambio y mejora importante con respecto a versiones anteriores, solo es soportado en dicho sistema.

Mientras, el resto de la industria, como Apple o Valve, intentan que sus sistemas de escritorio como OS X o steamOS (basado en Linux) sean una competencia a Windows en calidad gráfica para juegos, pero no tienen las herramientas necesarias porque dependen de una librería que no puede competir en ningún nivel con DirectX y su rendimiento. Ni siquiera la introducción de Metal en OS X por parte de Apple el pasado año ha arreglado nada, pues los desarrolladores tampoco han visto claro apostar por otro estándar cerrado a una marca y tener dos problemas en lugar de uno, como con DirectX.

La solución es Vulkan: una nueva API, de bajo nivel, que demuestre tener un potencial por encima de DirectX (o que se coloque a su nivel, al menos) y que sea compatible con todos los sistemas operativos, móviles o de escritorio por igual, cerrando el terreno a Microsoft y obligando a que el mercado se abra y los usuarios no estén obligados a usar Windows 10 en sus PCs con el único propósito de conseguir un buen rendimiento en sus juegos triple A o aplicaciones de gran carga gráfica.

Vulkan, API de bajo nivel abierta

La gran diferencia de Vulkan con respecto a OpenGL es que es una API de bajo nivel. Esto significa que está pegada al hardware. Vulkan tiene una especificación que realiza directamente instrucciones sobre la GPU y no sobre capas de interpretación intermedia (como OpenGL) que le restan rendimiento. Además, permite trabajar de una forma diferente y nueva, pues cambia el paradigma del flujo de datos. Hasta ahora, lo normal es que los procesos estén en la RAM y el flujo de datos desde la GPU a la RAM sea constante, lo que resta rendimiento por tener que ir y venir con la información de un sitio a otro. Ahora, con Vulkan todo puede hacerse en la GPU y aprovechar la potencia multihilo de los nuevos procesadores gráficos.

Pero para hacer esto son los fabricantes los que tienen que colaborar (cosa que hacen ya que todos forman parte del consorcio Khronos). Vulkan soporta de forma nativa todos los últimos tipos de efectos gráficos que diferencian a DirectX 12, tiene un peso mucho menor para el hardware y los grandes fabricantes de GPUs de escritorio como nVidia, AMD o Intel apuestan por él, así como otros fabricantes para tecnología móvil como ARM, Samsung o Qualcomm.

Otra de sus grandes ventajas es que unifica las plataformas móvil y escritorio. Hasta ahora OpenGL ES tenía su propia especificación y versionado y OpenGL otra diferente, la primera para móvil y la segunda para desktop. Esto dejará de ser así ya que Vulkan es una única librería unificada, de forma que con un único desarrollo funcionará (por ahora) en Windows (desde su versión 7), SteamOS, Android, Tizen (el SO móvil de Samsung) y algunas distribuciones Linux.

Gráfico de rendimiento en Vulkan, DX11 y OpenGL de Talos Principle

Vulkan proporciona un punto de encuentro entre fabricantes y desarrolladores, donde se implementan cosas tan interesantes como la posibilidad de crear un solo material y que este pueda ser usado en cualquier plataforma sin distinción (móvil o escritorio) o que el procesamiento no tenga que salir a la RAM a buscar datos si no que estos sean procesados en gran número directamente en el procesador gráfico, aumentando exponencialmente las capacidades de rendering de las GPUs, sus capacidades y las posibilidades que hasta ahora plataformas menores a nivel gráfico como Android o Linux tenían por depender de OpenGL. Como podemos ver, aun le queda recorrido para mejorar, pero la semilla está plantada y el estándar una vez maduro promete llegar lejos.

Vulkan será compatible con cualquier hardware que a su vez soporte la última especificación OpenGL ES 3.1 y para escritorio todos aquellos que cumplan la especificación OpenGL en su versión 4.5. Y no, ningún dispositivo de Apple llega a esa versión. No por falta de capacidad del hardware si no porque el sistema no lo ha implementado. iOS soporta hasta OpenGL ES 3.0 desde las CPUs A7 y OS X solo llega a la especificación OpenGL 4.1 de escritorio. Pero eso no significa que en la próxima WWDC veamos soporte de Vulkan en ambos sistemas, lo cual sería bastante lógico teniendo en cuenta que la competencia lo va a incluir y Apple no puede cerrarse (como Microsoft) a su propia solución cerrada y no incorporarse a las ventajas de una estándar abierto para todos de gran capacidad.

Mantle, el padre de todos

Tanto Vulkan como la nueva versión 12 de DirectX beben directamente de Mantle, una API de bajo nivel gráfico que ha supuesto el esqueleto sobre el que todas estas nuevas especificaciones se han basado. Pero mientras DirectX 12 se inspira en cómo está organizada esta nueva API, AMD donó Mantle a Khronos para que formara la base de Vulkan, lo que nos hace pensar que las posibilidades de esta última son mucho mejores que las que tiene DirectX 12.

Y fue el pasado 16 de febrero cuando se publicó la especificación 1.0 de esta API de bajo nivel de programación gráfica y cuando se publicaron los drivers para todos los sistemas mencionados. Vulkan, además en el caso de AMD, será directamente compatible con cualquier GPU que soporte la arquitectura GCN que comprende varios procesadores de la gama R7, R9 o HD 7000, HD 8000 y otras más.

De hecho, Samsung presentó su Galaxy S7 de la mano de la API Vulkan en una espectacular demo gráfica, prometiendo un rendimiento muy superior en gráficos en sistemas Android y un ahorro de batería considerable.

Apple, ¿qué hará?

La primera pregunta que nos viene a la mente es: ¿soportará Apple la API Vulkan? Deberían, pero el problema que tienen ahora mismo es, como ya hemos dicho, que ni su escritorio ni el móvil tienen soporte para la versión mínima que garantiza que esta funcione. No obstante, es obvio pensar que los desarrollos irán enfocados hacia esta nueva tecnología y Apple no puede quedarse atrás pensando en las grandes ventajas que obtendría para poner sus sistemas a la altura de Windows a nivel de juegos. Esto significaría que por fin podría haber juegos triple A como Doom (que soporta Vulkan) en sistemas OS X con gráficas de última generación y no necesitaría un PC con Windows para poder jugar.

Porque no estamos diciendo nada descabellado ya que uno de los objetivos de la API es dar mayor poder a los sistemas basados en Linux de escritorio en cuanto a juegos (como steamOS o Ubuntu) y a los sistemas móviles (como Android). Vulkan persigue igualar la balanza y que la potencia que actualmente tienen Windows 10 a través de DirectX 12 pueda ser usado en cualquier sistema, incluidas versiones anteriores de Windows como la 7 o la 8.

Así que suponemos que en la próxima WWDC Apple podría presentar los drivers para todos los dispositivos de 64 bits (procesador A7 o superior) de Vulkan (en estos momentos esos son los únicos que soportan OpenGL ES 3) e igualmente proveer al futuro macOS de un driver Vulkan basado en el de Linux para todos sus chips gráficos que lo soporten. Es lo obvio y lo tiene todo a su favor para dar este paso, sin detrimento de su propia API Metal que no tiene por qué quedar en el olvido (aunque tal vez fuera la tendencia más lógica).

Seguiremos informando al respecto de las novedades de esta nueva librería y su futuro junto a Apple. Pero está claro que los fabricantes se han hartado de la forzada hegemonía de Microsoft en el mercado de juegos para PC y quieren crear su alternativa que le plante cara. Es lógico si pensamos que, por ejemplo, solo las apps que se vendan en el Store de Windows tienen acceso a la arquitectura universal y eso cerraría la puerta de entrada a muchos juegos en otras plataformas como Steam. Un saludo y Good Apple Coding.

Acerca de Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Otras recomendaciones

Swift 3.1

Swift 3.1 ha llegado, análisis de todos sus cambios

Swift 3.1 ha llegado de la mano de la hornada de actualizaciones lanzadas por Apple. Analizamos sus cambios más importantes e incorporaciones más destacadas. Nuevas formas de convertir closures que no escapan en los que sí lo hace, conversiones seguras de números, genéricos más eficientes... descubre en nuestros análisis con ejemplos concretos todos los cambios y descúbrelos por ti mismo.

  • Eduardo González Joyanes

    Interesante, buen artículo… a ver que pasa en un futuro próximo con esta API, aunque mucho tiene que cambiar la cosa para desbancar DirectX

  • Pablo Villar Vega

    Ya era hora que se desarrollara una API que plantara cara a DirectX, encima gratuita y multiplataforma. Apple ha de ponerse las pilas y probablemente tendrá que cambiar un poco de estrategia, los videojuegos son un buen negocio y un sistema que no te permita actualizar el hardware para tener el rendimiento óptimo y poder disfrutar de lo último al máximo no funcionará.