Hola! Logeate, o haz click aquí para registrarte!
Nombre de usuario Password Go! »

Descubre el potencial de DirectX 10
(1,563 Veces visto)

El 30 de septiembre 1995 Microsoft desarrolló DirectX para Windows 3.0. Una colección de APIs (Application Programming Interface) para que los desarrolladores pudiesen tener acceso a varios aspectos del sistema como son:

  • Direct3D: utilizado para el procesado y la programación de gráficos en tres dimensiones (una de las características más usadas de DirectX).
  • Direct Graphics: para dibujar imágenes en dos dimensiones (planas), y para representación de imágenes en tres dimensiones.
  • DirectInput: utilizado para procesar datos del teclado, mouse, joystick y otros controles para juegos.
  • DirectPlay: para comunicaciones en red.
  • DirectSound: para la reproducción y grabación de sonidos de ondas.
  • DirectMusic: para la reproducción de pistas musicales compuestas con DirectMusic Producer.
  • DirectShow: para reproducir audio y vídeo con transparencia de red.
  • DirectSetup: para la instalación de componentes DirectX.

Limitaciones de DirectX 9

A día de hoy todavía es el DirectX 9.0 la versión más utilizada entre los usuarios de PC. Entre otras cosas porque DirectX 10 sólo funciona bajo Windows Vista y además no es compatible con las versiones anteriores.

  • Object Overhead: utiliza ciclos de procesador para completar tareas necesarias para hacer renders antes de ser enviados a la tarjeta de video. Cuando se renderea un juego, la aplicación primero debe llamar al API y luego el API llama al Driver antes de poder llegar a tu GPU. Estas llamadas son manejadas por el CPU y eso utiliza recursos muy valiosos y limitados, pero además alarga el camino que debe recorrer la información para que el proceso sea exitoso. Ambas características convierten al Object Overhead en un importante cuello de botella.

    Dentro de este proceso hay limitaciones de cuántos objetos puedes mostrar en la imagen en un momento dado en un frame dado. Los objetos pueden ser cualquier cosa en un juego, un personaje o un árbol por ejemplo. La cantidad máxima de objetos en cada frame actualmente es de alrededor de 500 objetos, cualquier cosa sobre eso produce un gran cuello de botella a nivel de CPU. Lo anterior obliga que los desarrolladores de contenido deban balancear cuidadosamente el juego para evitar cuellos de botella producidos por el API y el CPU. Pese a que uno podría pensar que 500 objetos es un límite generoso, la progresiva complejización de los escenarios de los juegos, orientadas a ofrecer una experiencia más envolvente, ha terminado por requerir más que esa cifra.
  • Pipeline Fijo: DirectX 9 y las GPUs actuales es la naturaleza de sus pipelines, que es orientado a una función fija. En una GPU los Procesadores de Vertex constituyen un conjunto separado de los Procesadores de Pixeles, y dependiendo de la escena puede darse el caso que un conjunto esté utilizado al 100% mientras el otro está en reposo. El hecho de que los shaders cumplan una tarea específica redunda, etonces, en una permanente subutilización de recursos.
Funciones del DirectX 10

DirectX 10 permite poner más objetos únicos en un frame lo que nos muestra ambientes más realistas y más inmersivos. Aún podremos encontrar limites en cuanto a cantidad de objetos pero ya es el API el factor limitante sino sólo el GPU y la imaginación de los desarrolladores.

Con la desaparición del Overhead veremos además una reducción en el tiempo de ejecución de los juegos en un 50% respecto a la versión anterior.

El hecho de que los cálculos que antes pasaban por el CPU ahora puedan ejecutarse directamente en el GPU, libera una cierta cantidad de potencia en la plataforma, pero además permite ejecutar en el GPU cálculos no necesariamente relacionados con gráficos, como son las aplicaciones de GPGPU de entre las cuales destaca el cálculo de físicas.

La siguiente diapositiva explica, según el punto de vista de Nvidia, la mejora que se producirá en los cálculos físicos, debido más que nada a que estos cálculos son un proceso altamente paralelizado, ideal para aprovechar la fuerza bruta de un GPU. Como podemos ver de las 3 etapas del proceso del calculo de físicas el que menos paralelismo tiene es de un 70%.
  • Nuevos Shaders de Geometria: se ha implementado una nueva etapa en el pipeline que se llama Shader de Geometría. Este nuevo shader se incorpora a la idea de un pipeline unificado y será una nueva etapa en este componente. La gracia del Shader de Geometría es que ayudará a tener escenas mas complejas, al permitir que el desarrollador del juego a tome formas simples (puntos, líneas o triángulos) y generar objetos complejos a su alrededor. Este nuevo atributo permitirá nuevos e interesantes efectos como son el el Mapping Displacement en tiempo real y Motion Blur.
  • Stream Out: se encuentra asociada a los Shaders de Geometría. El Stream Out permite guardar información de los Vertex shaders o de los Geometry shaders en el buffer y habilita la opción de múltiples pasadas en el Geometry shader.
  • Arquitectura Unificada: actualmente los Pixel y Vertex shaders existen en conjuntos separados. Sin embargo, para ser compatible con DirectX 10 el hardware deberá pasar a ser completamente unificado. Esto significa que cualquier shader unificado debe ser capaz de funcionar como Vertex Shader, Pixel Shader o Geometr Shader indistintamente y según la ocasión lo requiera. De este modo ya no habrá tarjetas con X pixel shader e Y vertex shaders. Simplemente tendrá N shaders unificados capaces de hacer de todo.

    Lo anterior permitirá que dependiendo de la escena, podamos usar toda la potencia de la VGA para procesar vértices o bien pixeles, evitando tener recursos desaprovechados y redoblando a cambio los recursos disponibles para la operación en curso.
Resultado en los juegos

Vamos a ver cómo se traduce toda la teoría en la práctica aplicada a videojuegos, que es lo que nos interesa.

  • Mayor nivel de detalles: para desplegar una imagen, el API interpreta y ejecuta las instrucciones con que un desarrollador le describe una figura. Con DirectX10 esta interpretación y ejecución resultará en formas más detalladas y realistas, sin nececidad de complejizar la manera como se caracteriza el objeto.

    DirectX 9 simula detalles con técnicas como mapping normal mientras DirectX 10 incrementa el nivel de detalles en los personajes y materiales.
  • Procesamiento de Sombras: mientras que en DirectX 9 la sombra es generada en el CPU, reduciendo el rendimiento del sistema en conjunto con cada nuevo personaje con sombra que aparezca en la imagen, en DirectX 10, la sombra puede ser generada y rendeada completamente en la GPU aprovechando su capacidad de hacer cálculos en paralelos con enorme potencia.
  • Escenas ambientes mas complejos: observad las fotografías del principio del artículo que corresponden al Microsoft Flight Simulator X. A primera vista vemos que el agua se ve mucho más real, con espuma y olas. DirectX 10 hace posible efectos volumétricos, lo que se traduce en nubes más gruesas y mas prominentes, mientras que la dispersión de luces aumenta el efecto del lado oscuro de la montaña. También notaran que el bosque se ve mucho mas prominente y con mas detalle en la imagen con DirectX 10. Finalmente se pueden dar cuenta que DirectX 10 permite reflejos mas exactos de la montaña incluso en aguas mas turbulentas.
  • Escenarios dinámicos: en las imágenes podemos ver como crecen las plantas alrededor de la cripta a medida que pasa el tiempo en el juego. DirectX 10 facilita al motor del juego a cambiar dinámicamente la apariencia de la cripta a medida que pasa el tiempo. Esto permite que los escenarios en el juego evolucionen a medida que pasa el tiempo mientras pasa el tiempo, así reemplazando los ambientes estáticos de manera única estimulando el crecimiento natural y el paso del tiempo.

    DirectX 9 no es capaz de crear nueva geometría en el GPU. Tampoco es capaz de almacenar resultados intermedios de geometría, por ejemplo, escenarios entre la primera imagen y la última no podría haber sido generados en el GPU usando DirectX 9.
  • Motion blurring: en versiones anteriores de DirectX para realizar el motion blur los desarrolladores tomaban la imagen y la difuminaban posteriormente, mientras que en DirectX 10 darían el aspecto de motion blur de forma dinámica, simulando justamente como si fuera una cámara y modificando el tiempo de exposición, lo que dará un resultado mucho mas realista.
En próximos artículos hablaremos de tarjetas gráficas compatibles con DirectX 10, sobre su rendimiento y valoración de la relación calidad precio.

Y ya que este va ha ser el último artículo del año aprovechamos para deseros a todos un Feliz 2008.

Comentarios (1)

  1. 1

    Dani dijo el 6 Enero, 2008 a las 0:41

    Pues un poco lo de siempre. Al principio pocos juegos lo aprovecharán y los que lo hagan no será una gran diferencia respecto al DX9. Con el tiempo se irán puliendo los algoritmos e instrucciones y se empezará sacar todo el jugo de la nueva versión. Cuando esto pase ya habrá rumores y especificaciones del próximo DX11 y así tendremos la duda de siempre, comprar o esperar “un poquito más” Como anécdota es relativamente importante saber que han sacado la revisión 10.1 y que solo es por hardware (tarjeta) así que los que tengan la únicamente la 10 no podrán disfrutar de las nuevas mejoras de la revisión (cuando las apliquen).
    Lástima que la competidora de esta API de Microsoft llamada OpenGL no está en sus mejores momentos para los juegos aunque van a sacar la esperada y prometedora versión 3. Ahora a ver si se implementa en las tarjetas jugonas y en los propios juegos aunque uno de sus grandes avaladores, el sr. John Carmack (Quake, Doom, …) parece que se está tirando a la piscina del DX.

    Yo con mi Ati Rage DX5? y mi AMD K6-2 pues puedo jugar al buscaminas en 2D. Si me tuviera que comprar un nuevo ordenador la tajeta gráfica sería una DX 10.1 aunque tuviera que pagar un poco más. Eso sí, por ahora “only for Vista” :(
    ¿Qué tajeta tienes tu? Si ya tienes una DX10 comenta tus experiencias.

  2. Gravatar

Deja un comentario

Para dejar un comentario por favor utiliza nuetro foro.

DBMedios - © 2008. Todos los derechos reservados.

Portada  |  Foros  |  Tienda  |  Diseño y programación  |  Hosting  |  Estadísticas  |  Aviso Legal