De DirectX 9 a DirectX 10, un viaje de calidad

DirectX 10 es la nueva API de Microsoft para juegos que acabará convirtiéndose en el estándar para PC o, al menos, esa es la intención de Microsoft. Es una herramienta potente, desde luego, pero también es potente el ordenador necesario para conseguir que “ande”. Y si además quieres que corra, hoy por hoy hay que soltar una cantidad de dinero importante para conseguirlo.

Aún así, se trata de una API que demuestra como un mismo juego puede ser totalmente diferente dependiendo la versión de DirectX que utilices. Y el máximo exponente de este tema es Crysis, el juego de acción de los creadores de Far Cry. Con este ejemplo, intentaré aclarar y resumir las diferencias que hay entre la versión 9 y 10 de DirectX y como puede cambiar la forma de ver los juegos.

Lo primero, y más obvio, que hay que decir es que DirectX 10 sólo funciona con Windows Vista, el nuevo sistema operativo de Microsoft. Pero, además hay dos detalles más. En primer lugar, no funciona con todas las tarjetas gráficas, ahora mismo sólo con la última generación de nVidia (8xxx) y las tarjetas ATI más recientes.

Lo segundo es que si tenemos ambas cosas, no disfrutaremos de ello en juegos que utilicen DirectX 9, principalmente porque DirectX 10 conserva el nombre básicamente para que no nos confundamos. En realidad, esta última versión no es compatible con anteriores versiones de DirectX. Por eso, Windows Vista emula DirectX 9 en la mayoría de juegos del mercado.

¿Por qué se planteó entonces Microsoft crear una API completamente nueva para el sistema operativo? Por algo muy simple y a la vez muy complejo: las limitaciones de DirectX 9.

Y es que la gran limitación de DX9 es el “Object Overhead”, que en palabras más simples, significa que DirectX 9 utilizaba ciclos de nuestra CPU para hacer renders antes de ser enviados a la GPU. Cuando se renderiza un juego, la aplicación primero debe llamar al API y luego el API llama al driver antes de poder llegar a la GPU. Todas estas llamadas son manejadas por la CPU y eso conlleva que se cree un importante cuello de botella.

Debido a estos problemas iniciales, Microsoft se dio cuenta de que era necesario crear limitaciones de objetos y, ahora mismo, la cantidad máxima de objetos en cada frame es de aproximadamente 500 objetos. El resultado es que casi siempre los desarrolladores deben balancear cuidadosamente el juego, para que este no se “cuelgue en medio de una partida”.

Un ejemplo bastante claro es la creación de un bosque. Si prestas atención en un bosque verás que un mismo árbol se repite infinidad de veces y en diferentes perspectivas y tamaños para dar la impresión de que son muchos. Este es uno de los recursos que los programadores utilizan para poner mas cantidad de objetos en un mismo frame, tratando de mostrar un paisaje lo más realista posible. Así DirectX 10 elimina esta limitación y es posible, por ejemplo, introducir miles de árboles diferentes como muestra Crysis.

Con la desaparición de este problema, además se reduce nada más y nada menos que a la mitad el tiempo de ejecución de un proceso. Con DirectX 10 se podrán realizar cálculos de física en los GPU, aumentando drásticamente la calidad de lo que podemos ver en pantalla.

La diferencia se aprecia en la siguiente pantalla de Flight Simulator X:

Microsoft también dio algunas de las características principales:

  • Llamadas a la API más eficientes: (hasta un 10%) y menos frecuentes (se evitan muchas llamadas para cambiar renderstates y similares): Reduciendo este número se aligera la carga de CPU sobre la parte gráfica de la aplicación, lo que permite aprovechar mejor ambos sistemas.
  • Shader Model 4.0.: Se aumenta el número en general (límite de registros, de render targets, de bytes en el vertex buffer…). Además, se permite el acceso a texturas sin restricciones desde cualquier tipo de shader (en el SM3.0, se podía acceder a texturas en el Vertex Shader, pero de forma poco eficiente y restringida).
  • Geometry Shader: Este shader se coloca entre el Vertex y el Pixel Shader, y tiene una característica que no tienen los otros dos: Puede aumentar o disminuir el número de elementos que pasan a la siguiente fase. Incluso puede acceder a memoria del sistema, para guardar o cargar elementos. Teóricamente, esto permitiría crear geometría de forma procedimental, o hacer LOD de geometría en tiempo real, cosas así.

En resumidas cuentas, y dejando aparte las características técnicas y más complejas de DirectX 10 –sólo están algunas de las más importantes-, esta nueva API ofrece un cambio sustancial ya que la calidad que podremos ver en juegos como Crysis es realmente espectacular. Y es que hasta la llegada de las nuevas consolas, parecía que el PC era el nuevo rey en materia gráfica del videojuego. Ahora, con esta nueva API y el juego adecuado el PC puede superar de nuevo a las consolas de última generación.

Os dejo con un par de vídeos de Crysis muy espectaculares y que me han llamado especialmente la atención porque nos muestran dos escenas del juego. En los primeros segundos de cada vídeo vemos el juego como sería en DirectX 9 y después en DirectX 10.

[gametrailers 19968]

Como se puede observar, hay muchos más efectos visuales, aunque lo más impactante es el efecto físico -otra de las particularidades de DirectX 10- que permite cambiar la orientación de llamas y humo simplemente con el aire

[gametrailers 19966]

En este puedes observar que todo el sombreado cambia y que el número de partículas ha aumentado drásticamente, así como efectos colaterales y físicos del juego.

Author: Jesús Bosque

{ "de-DE": "Ich bin Journalist mit über 30 Jahren Erfahrung in Videospielen und Technologie. Obwohl Videospiele schon immer mein Fachgebiet waren, habe ich begonnen, auch die komplexen Strukturen von Projektmanagement-Tools wie Asana sowie die Automatisierungen mit Make.com und N8N zu entdecken und zu genießen.", "en-US": "I’m a journalist with more than 30 years of experience in video games and technology. Although my specialty has always been video games, I’ve recently started enjoying exploring the intricacies of project-management tools like Asana, as well as automations with Make.com and N8N.", "es-ES": "Soy periodista con más de 30 años de experiencia en videojuegos y tecnología. Aunque mi especialidad siempre ha sido el videojuego, he empezado a disfrutar también de descubrir los laberintos de los programas de project management como Asana y las automatizaciones de make.com y de N8N", "fr-FR": "Je suis journaliste avec plus de 30 ans d’expérience dans le jeu vidéo et la technologie. Bien que ma spécialité ait toujours été le jeu vidéo, j’ai commencé à prendre plaisir à explorer également les méandres des outils de gestion de projet comme Asana, ainsi que les automatisations avec Make.com et N8N.", "it-IT": "Sono un giornalista con oltre 30 anni di esperienza nei videogiochi e nella tecnologia. Anche se la mia specialità è sempre stata il videogame, ho iniziato a divertirmi anche a scoprire i meccanismi degli strumenti di project management come Asana e delle automazioni con Make.com e N8N.", "ja-JP": "", "nl-NL": "Ik ben een journalist met meer dan 30 jaar ervaring in videogames en technologie. Hoewel videogames altijd mijn specialiteit zijn geweest, ben ik ook begonnen te genieten van het verkennen van de ingewikkelde wereld van projectmanagementtools zoals Asana en van automatiseringen met Make.com en N8N.", "pl-PL": "Jestem dziennikarzem z ponad 30-letnim doświadczeniem w grach wideo i technologii. Choć moją specjalizacją zawsze były gry wideo, ostatnio zacząłem również czerpać przyjemność z odkrywania zawiłości narzędzi do zarządzania projektami, takich jak Asana, oraz automatyzacji w Make.com i N8N.", "pt-BR": "Sou jornalista com mais de 30 anos de experiência em videogames e tecnologia. Embora meu foco sempre tenha sido os videogames, recentemente passei a gostar de explorar também os labirintos de ferramentas de gestão de projetos como o Asana e das automações com Make.com e N8N.", "social": { "email": "jesus.bosque@softonic.com", "facebook": "", "twitter": "", "linkedin": "" } }

Comments are closed.