DirectX 12 se lanzó junto con Windows 10 en 2015. Con su lanzamiento, DirectX 12 de Microsoft marcó el comienzo de una nueva era para los jugadores y desarrolladores de juegos. DirectX 12, capaz de reducir la sobrecarga de la CPU y aumentar el rendimiento de la GPU, rápidamente se hizo un nombre.
Sin embargo, ¿aumentar su rendimiento es realmente tan simple como cambiar de DirectX 11 a DirectX 12? Averigüémoslo observando las diferencias entre DirectX 11 y 12.
¿Qué es DirectX de Microsoft?
Como se explica en nuestra descripción general de Microsoft DirectX, DirectX es una colección de API utilizadas para manejar tareas relacionadas con multimedia. Esto incluye la programación de juegos en plataformas basadas en Microsoft como Windows y Xbox. Para proporcionar algo de contexto, hablemos brevemente sobre las API.
Una interfaz de programación de aplicaciones (API) hace posible que dos o más programas de computadora se comuniquen entre sí, lo cual se analiza en
nuestra descripción general de las API. Piense en ello como un teléfono. Si tu mamá te envía un mensaje de texto con una lista de compras, tu teléfono recibirá esos datos y te los mostrará. Eso es básicamente una API.¿Cuáles son las diferencias entre DirectX 11 y DirectX 12?
Entonces, ¿cuáles son las diferencias entre DirectX 11 y DirectX 12? En pocas palabras, DirectX 12 es la última versión de DirectX. Una de las diferencias más notables entre los dos es cómo interactúan con su hardware. La mayoría de los juegos desarrollados con DirectX 11 solo utilizan entre dos y cuatro núcleos de CPU. Uno de estos núcleos suele estar dedicado a decirle a la GPU qué hacer.
Luego, el juego usa los núcleos restantes para manejar varias configuraciones de uso intensivo de la CPU, como las partículas de un juego o la distancia de dibujo. Por otro lado, DirectX 12 distribuye la carga de trabajo de la CPU entre varios núcleos y también permite que cada núcleo se comunique con la GPU al mismo tiempo.
DirectX 12 también viene con algunas campanas y silbatos elegantes. Esto incluye computación asíncrona y objetos de estado de canalización (PSO). La computación asíncrona aumenta la utilización de la GPU al permitir que varias cargas de trabajo funcionen en paralelo. Básicamente, esto desbloquea todo el potencial de su GPU.
Además de la representación de gráficos, su GPU es responsable de manejar una amplia gama de otras tareas, como ejecutar algoritmos de aprendizaje automático. Con DirectX 11, la GPU solo puede realizar una de estas tareas a la vez y en un orden determinado. Cuando esto ocurre, el rendimiento se ve afectado porque no se utilizan todos los recursos de la GPU.
Piense en ello como un camarero en un restaurante. Cuando un camarero toma su pedido por primera vez, le preguntan qué le gustaría beber primero. Una vez que recibes tus bebidas, te preguntan qué te gustaría de plato principal. Su orden se toma en pasos. El camarero no te va a preguntar qué te gustaría de postre antes de haber comido tu plato principal. Si bien esto es efectivo, no es tan eficiente como podría ser.
En informática, cada una de las tareas del camarero sería manejada por un recurso de GPU diferente. Hasta que reciba su bebida, los recursos de GPU necesarios para tomar su pedido de plato principal estarán inactivos. Con la computación asíncrona de DirectX 12, el mesero podría tomar su pedido de una sola vez como en una cadena de comida rápida. Esto maximiza el uso de la GPU y mejora el rendimiento de los juegos.
DirectX 12 también introdujo PSO. Con DirectX 11, cuando la geometría de un juego se envía a la GPU para ser renderizado, una variedad de configuraciones de hardware son responsables de interpretar y renderizar este datos. Esto se conoce como la canalización de gráficos y es el flujo de entradas y salidas de datos que se producen a medida que la GPU procesa los fotogramas. Sin embargo, la canalización de gráficos de DirectX 11 no es perfecta.
Esta canalización contiene una colección de diferentes estados, incluido el estado de rasterización, el estado de mezcla y el estado de la plantilla de profundidad, entre otros componentes. En DirectX 11, existen dependencias entre estos diferentes estados. Como resultado, un estado no puede completarse hasta que se defina el estado anterior. Esto disminuye la utilización de la GPU y aumenta la sobrecarga de la CPU a costa del rendimiento.
Para evitar esto, DirectX 12 introdujo los PSO, que son objetos que describen el estado de toda la canalización de gráficos. Los PSO son como una botella que contiene los diversos estados y componentes necesarios para crear una imagen. Esto permite que la GPU procese previamente cada estado dependiente en lugar de tener que volver a calcular continuamente los estados en función de la canalización de gráficos actual.
Esto reduce significativamente la sobrecarga de la CPU que se encuentra en DirectX 11 y mejora el rendimiento. Entonces, ¿cómo es realmente esta diferencia? Bueno, según Microsoft, DirectX 12 reduce la sobrecarga de la CPU hasta en un 50 por ciento y mejora el rendimiento de la GPU hasta en un 20 por ciento. Si bien esas son algunas mejoras sustanciales, esto no significa que verá los mismos resultados.
Por qué cambiar de DirextX 11 a DirectX 12 no es sencillo
DirectX 11 se lanzó por primera vez para Windows Vista el 27 de octubre de 2009. Entonces, con DirectX 12 siguiendo en 2015, esa es una brecha de seis años entre DirectX 11 y DirectX 12. Durante este tiempo, se han desarrollado miles de juegos usando DirectX 11. Desafortunadamente, cambiar de DirectX 11 a DirectX 12 no es fácil.
DirectX 11 es lo que se llama una API de alto nivel. En pocas palabras, las API de alto nivel son más fáciles de usar para los desarrolladores. El resultado son juegos estables, pulidos y jugables. Por otro lado, DirectX 12 es una API de bajo nivel y es una bestia diferente en comparación con DirectX 11. Si bien permite a los desarrolladores ajustar la optimización a un nivel granular, también exige un amplio conocimiento para su uso.
Dicho esto, un juego desarrollado en DirectX 12 podría terminar con un peor rendimiento dependiendo del conocimiento que tenga el desarrollador de la API. Hay mejoras que vienen con DirectX 12, pero realmente se trata de qué tan bien puede implementarlo un desarrollador. Por esta razón, muchos desarrolladores optan por utilizar API de alto nivel como DirectX 11.
¿Debe elegir DirectX 11 o DirectX 12?
La respuesta depende de algunas cosas, como qué juego estás intentando ejecutar. Por ejemplo, Guild Wars 2 se ejecuta en DirectX 11. Incluso si su sistema operativo y hardware usan DirectX 12, no tendrá la opción de seleccionar DirectX 11 en Guild Wars 2 porque el juego no lo admite. Esta es enteramente la decisión del desarrollador, ArenaNet.
Lo creas o no, ArenaNet tardó nueve años en cambiar de DirectX 9 a DirectX 11. Sin embargo, hay algunos juegos que son compatibles con DirectX 11 y DirectX 12. Fortnite (leer nuestra hoja de trucos de Fortnite), Por ejemplo. A través de la configuración del juego, los usuarios pueden cambiar entre ambas versiones. En resumen, no todos los juegos son compatibles con DirectX 11 y DirectX 12. Para aquellos que lo hacen, cambie entre los dos y determine por sí mismo cuál funciona mejor en su PC.
Si puede elegir entre DirectX 11 y DirectX 12 también dependerá de su hardware. Prácticamente cualquier GPU moderna admitirá DirectX 12, pero no se puede decir lo mismo de las GPU más antiguas como la Radeon HD 4870. Lanzada en 2008, esta GPU solo admite hasta DirectX 10. Esto significa que sería incapaz de ejecutar la mayoría de los juegos modernos, que se ejecutan con DirectX 11 y DirectX 12.
¿Es DirectX 12 la opción correcta para usted?
Con todo, cambiar de DirectX 11 a DirectX 12 no es tan blanco o negro como parece. Depende de una variedad de factores, como el hardware, el software, el sistema operativo y si un juego es compatible con ambos. Todos estos deben tenerse en cuenta antes de tomar una decisión, y esto probablemente también sea cierto para las futuras generaciones de DirectX.