En los próximos meses la forma en que jugamos en PC va a cambiar ligeramente. El motivo no es otro que la llegada de las Direct3D 12, una serie de librerías gráficas que van a permitir que los estudios de videojuegos puedan exprimir al máximo el potencial de las tarjetas gráficas.

Es la primera de una serie de nuevos drivers gráficos que van a ir llegando, pero todas en realidad comparten la misma filosofía, procedente en realidad de cómo se han hecho las cosas en consolas de toda la vida: dejar que el programador pueda gestionar directamente los recursos del hardware.

a43

Librerías gráficas

Una librería gráfica es un conjunto de programas que simplifican al programador la renderización de gráficos para mostrarlos por un monitor, ya sea a través de una CPU o una GPU dedicada. Incluyen rutinas de gestión de texturas, generación de efectos de iluminación y sombras, y que aprovechan hardware específico como los shaders de las actuales tarjetas gráficas.

Las librerías gráficas se pueden diferenciar en dos tipos en función de lo que los programadores pueden hacer con ellas: de bajo nivel y de alto nivel. Como todo, las librerías gráficas se pueden clasificar según otros criterios, pero para este artículo me interesa al nivel al que se puede acceder al hardware.

Las librerías de alto nivel simplifican el desarrollo de los juegos y la gestión de los recursos del sistema, haciendo que el programador se centre en crear los efectos, movimiento, el diseño de escenarios, etc.

Esto tiene el inconveniente de que estas librerías de alto nivel toman ciertos atajos para simplificar el desarrollo, y por tanto no están especialmente optimizadas por lo que no se exprime al máximo el hardware sobre el que corren.

Las librerías de bajo nivel son lo contrario: más complejas de programar y controlar, pero permiten sacar el máximo partido al hardware.

El paralelismo con lenguajes de programación es que Java sería un lenguaje de alto nivel ya que no se programa en función a parámetros físicos (direcciones de memoria, registros) mientras que Ensamblador sería un lenguaje de bajo nivel (se programa asignando valores a registros, etc). C y C++ se consideran más bien en un nivel intermedio porque en realidad también permite programar a bajo nivel.

71532
AnandTech

Qué mejoran las nuevas librerías gráficas

Las librerías gráficas de alto nivel realizan un montón de tareas que, a día de hoy, son totalmente innecesarias a la hora de generar los gráficos 3D. Un ejemplo son las comprobaciones que hacen los drivers para cerciorarse de que una instrucción es correcta o el tipo de tarjeta en el que se va a ejecutar un comando.

Esas tareas las hacen actualmente los motores gráficos como Unreal Engine o Unity, y por tanto es totalmente innecesario que las vuelva a hacer en tiempo de ejecución las librerías gráficas. Eliminar estas constantes comprobaciones que tienen que hacer por cada instrucción ejecutada contra una tarjeta gráfica libera al procesador del equipo de una importante cantidad de procesamiento.

Pero librerías como Mantle o Direct3D 12 también reducen la información que se pasa a las APIs (conjunto de funciones que usan los programadores para realizar solicitudes a las librerías) para generar los gráficos, por lo que hay menos datos que procesar por solicitud y se tarda por tanto menos tiempo en hacerlo.

Esto aumenta por tanto el número de solicitudes de generación de polígonos o efectos por segundo. Esa ganancia en rendimiento se puede invertir en: no hacer nada y que mejoren los fps a la calidad habitual; o que los programadores añadan nuevos efectos gráficos a la escena.

Beneficios y desventajas

Los PCs que salen beneficiados de este cambio de proceder en las librerías gráficas son los que poseen CPUs menos potentes. Pero para sacar partido de las nuevas librerías, los programadores van a tener que adaptar sus juegos a que las utilicen directamente, o los juegos usarán un modo de compatibilidad hacia atrás (con DirectX 11, por ejemplo) para que puedan seguir funcionando como hasta ahora.

Obviamente en juegos antiguos no van a adaptar nada. Son juegos que ya han tenido su ciclo de vida, y salvo que sean MMORPGs y juegos online similares que puedan tener un incentivo para mejorar un juego antiguo, la mayoría de jugones no verán a priori mejorado su equipo actual.

El beneficio será en los juegos que están por llegar y que usen específicamente estas nueva generación de librerías gráficas. Sobre todo se notará en procesadores tipo Pentium, Core i3 o las APUs de AMD, que también verán mejoradas sus GPUs integradas. Especialmente en el caso de las APUs.

Debido a que dejan más libertad a los programadores para interactuar con el hardware, no es fácil programar para estas librerías gráficas. Eso hará que estudios pequeños sigan recurriendo a las DirectX 11 por falta de personal con experiencia suficiente para usar DirectX 12, y al principio sólo los grandes estudios van a lanzar juegos para ellas. Hasta entrado 2016 no se va a generalizar seguramente su uso.

Direct3D 12

directx-12-aportara__-mejoras

DirectX 12 es una serie de librerías que gestionan el contenido multimedia de Windows y sistemas relacionados (como Windows Phone y la Xbox One). Con ellas se puede gestionar el sonido, cómo se muestran imágenes por pantalla o, por lo que son más conocidas, cómo se generan gráficos 3D. Esta última librería se denomina Direct3D 12.

Fue presentado por Microsoft en marzo de 2014, y está ya incluidas en las últimas betas de Windows 10, aunque está por ver si llegará una versión definitiva a finales de julio junto a la versión comercial de Wndows 10 o a finales de año. Pero ahora mismo son funcionales, aunque sólo sirva para probar un puñado de pruebas de rendimiento de primera mano.

Direct3D 12 incluye nuevas características, como mejoras en la forma de generar las transparencias, permitir que varios hilos de procesamiento de la GPU accedan simultáneamente a la misma dirección de memoria, la introducción de píxeles volumétricos o vóxeles, y otras destinadas a reducir el consumo de memoria VRAM en la generación de gráficos.

En este último punto Microsoft puso en su momento ejemplos de pasar de ocupas 1,5 GB de interior de un edificio a tan solo 156 MB. Por eso tampoco veo terriblemente necesarias las tarjetas de más de 2 GB de VRAM y que hace que muchos fans de AMD miren de reojo a las tarjeta de Nvidia que históricamente han incluido menos VRAM.

Hay que esperar a ver el resultado de este último apartado, pero tengo muchas esperanzas puesta en las Direct3D 12, que también llegará a la Xbox One en forma de beta después del verano.

Vulkan

vulkan-1

Khronos Group presentó hace unos meses Vulkan, la librería gráfica de bajo nivel a sustituir en los próximos años a una arcaica OpenGL que mantiene una arquitectura similar desde hace 25 años y que no está adaptada a los tiempos que corren. Si sois usuarios de Linux u OS X, los habréis sufrido al jugar.

Al igual que OpenGL, su principal característica es que es multiplataforma, por lo que las tarjetas que sean compatibles con esta librería podrán funcionar sobre Windows, OS X y Linux (lo que incluye también a Android o Ubuntu para teléfonos).

El gran cambio en Vulkan se sitúa en la forma de gestionar los shaders, los elementos del hardware que permite generar efectos especiales como fuego y humo, pero también sombras e iluminación, usando un lenguaje intermedio como es SPIR-V. Su acercamiento es mucho más similar al de Microsoft, por lo que contarían en principio con un gran rendimiento en este apartado.

Por lo demás cuenta con los mismos beneficios indicados para estas librerías de bajo nivel, tanto en la reducción de consumo de CPU como de aprovechamiento de las capacidad de multihilo de los PCs actuales (algo que OpenGL hace 25 no planteaba, y sigue sin plantear correctamente). Se espera que llegue la primera versión funcional el año que viene.

Metal

824b26b5b5904d2a3864cabc61cfda365b750913_expanded_medium

Apple también cuenta con su propia librería gráfica de bajo nivel, y su desarrollo lo inició para mejorar enormemente el rendimiento gráfico en iOS. Fueron presentadas junto a iOS 8 el año pasado, y permiten sacar el máximo partido a la GPU de 64 bits que incluyen los últimos iPhones. Son por tanto las primeras en haber llegado a producción, antes que DirectX 12, y por supuesto Vulkan que está siendo especificada.

Metal se basa en los mismos principios que el resto de librerías gráficas de bajo nivel, pero en OS X El Capitán van a estar incluidas y ser usadas por defecto para renderizar el escritorio, con mejoras de hasta el 50% en rendimiento y reducción del 40% en la carga de la CPU. La ganancia de rendimiento se nota desde el primer momento de usar El Capitán.

Puesto que son un sustituto directo de las OpenGL, tiene todas las de ganar en OS X para que los estudios lancen nuevos juegos para ellas. Puesto que Vulkan está todavía en fase de especificado, Apple se ha adelantado bastante a lo que Khronos Group pueda crear.

Otra cosa es ver lo que pasará una vez Vulkan esté en la calle, ya que lo más probable es que los estudios prefieran desarrollar los juegos para Vulkan ya que es multiplataforma y no específico para OS X como es Metal. Pero para que Vulkan llegue en nuevos lanzamientos de juegos importantes pueden quedar todavía un par de años.

GNM

acc79d26-63ab-4005-abf4-0259b0248b44

La Xbox One utiliza DirectX 11 (próximamente las 12), y la PlayStation 4 también posee sus propias librerías gráficas. Son dos: GNM y GNMX. La primera es de bajo nivel y da acceso a todo el potencial de la PlayStation 4, y la segunda de alto nivel, orientada a que los desarrolladores indi puedan crear sus juegos de manera más cómoda y rápida. Ambos usan el lenguaje de shaders propio de Sony, PSSL (PlayStation Shader Language), para gestionar los efectos gráficos.

En la práctica GNMX es muy similar a cómo se programa para DirectX 11, por lo que no suele ser en realidad muy difícil que se creen juegos para las diferentes librerías gráficas, ya sean de PC o consola. Siempre con diversas matizaciones, claro, pero en el fondo son lo mismo al igual que C y Java también mantienen una forma similar de programar pero a la vez distinta.

Otras librerías que deberías conocer

maxresdefault

Hay otra serie de librerías gráficas que veréis mencionadas de vez en cuando, y no está de más mencionarlas.

WebGL

El entorno web también posee su propia librería gráfica para gestionar la generación de gráficos en 3D. Al igual que la mayoría de las tecnologías web de importancia, su principal creador e impulsor es Mozilla, aunque Google mantiene una sana cantidad de Experimentos de Chrome en el que las saca partido siempre que puede.

Su programación se realiza mediante JavaScript, y su rendimiento ha ido mejorando en el tiempo gracias también al desarrollo de librerías adicional como asm.js que permite ejecutar programas de C utilizando JavaScript mediante la compilación de los mismos a asm.js. Los beneficios es que se pueden exportar juegos que usan motores gráficos como Unreal Engine a la web.

OpenGL

Esta arcaica librería gráfica de alto nivel ha ido mejorando con el paso de los años, pero sigue siendo una librería gráfica creada en 1992. Va por su versión 4.5 de agosto del año pasado, aunque las actuales tarjetas gráficas soportan OpenGL 4.4.

La principal ventaja y el principal inconveniente es que es una librería gráfica multiplataforma, que se puede usar por igual en Windows, OS X y Linux, y que son la base de Vulkan. Debido a que no está pensada para ningún hardware ni sistema operativo específico, no cuentan con optimizaciones en este sentido y por tanto siempre han dado un resultado bastante peor que las Direct3D, algo que se hace evidente para cualquiera que haya jugado en Linux u OS X.

A lo largo de los años se han ido aligerando para dotarla de mayor rendimiento, pero la arquitectura de la que parte no es la mejor para los tiempos que corren. Pero eso no ha evitado que incluso Nvidia haya intentado mejorar su arquitectura con diversos cambios de calado.

Mantle

Esta librería gráfica de bajo nivel de AMD ha sido en realidad la que puso la pelota en marcha para desbloquear todo el potencial de las GPUs y ponerlo en manos de los estudios de desarrollo. Tras contar con un notable desarrollo e impulso desde 2013, finalmente está en pausa puesto que parte del proyecto ha sido incluido en Vulkan. AMD reorientará su desarrollo, pero por el momento no se sabe nada más.