sábado, 17 de octubre de 2009

Más detalles sobre DirectX 11


En estos tiempos no cabe la menor duda de que DirectX es el API más utilizada en los juegos para PC. De la misma forma que el lanzamiento de Windows Vista se vio acompañado de DirectX 10, Microsoft ha querido acompañar a Windows 7 con un nuevo API gráfico que este a la altura de su nuevo sistema operativo. Con DirectX 11 la empresa de Redmond se pone al día con las nuevas tendencias en el mundo de las GPU, como es su uso para tareas que comúnmente se realizaban en los procesadores o la inclusión de nuevas técnicas de renderizado que permiten un mayor nivel de detalle con menores recursos. Hace unas semanas hablamos en este blog sobre las novedades en DirectX 11, ahora vamos a ver nuevos detalles en la nueva API de Microsoft.

La teselación es utilizada como técnica de renderizado desde el lanzamiento y desarrollo de la XBOX 360, sin embargo no estaba presente en DirectX u OpenGL directamente, por lo cual hasta ahora no se podía utilizar con la seguridad de tener soporte en una gama de hardware más amplia. La creación de una figura tridimensional, implicaba normalmente en DirectX reducir el resultado a varios niveles de detalle simultáneos, con ello se evita que se sobrecargara el GPU con figuras que están lejanas y que por tanto no requieren gran detalle, luego en la medida que las figuras se acercan, se van cambiando a figuras con un mayor nivel de detalle. El problema de esta antigua técnica es que requiere de un gran uso de memoria por lo cual no es adecuada para consolas en donde la memoria suele ser un recurso muy escaso, y es por ello que para el desarrollo de la XBOX 360, ATI opto por el uso de la teselación.


DirectX 11 incorpora teselación directamente en el API, por lo cual la técnica puede ser utilizada por cualquier tarjeta gráfica que sea compatible con DirectX 11. La técnica de teselación en DirectX 11 se basa en tres nuevos shaders: Hull Shader, Tessellator y Domain Shader. El Hull Shader determina los puntos de control para la aplicación de parches, enviándolos al Domain Shader y calcula el nivel de teselación necesario, lo cual envía al Tesellator que agrega entonces la geometría adicional con una técnica de patrones o teselación y envía a su vez el resultado al Domain Shader, el cual recibe también el modelo de desplazamiento de mapa, para finalmente hacer una evaluación de la superficie completa, se obtiene entonces un único nivel de resultado muy detallado, que ahorra significativamente el uso de memoria. Los pasos antes mencionados se realizan en una sola pasada por el pipeline de DirectX 11, por lo cual es potencialmente más eficiente que el método anterior, lo cual podría implicar entonces que los desarrolladores lograran mayor nivel de detalle con el mismo hardware utilizando la técnica de teselación.


Compute Shaders es el API homologa a OpenCL o CUDA en DirectX, está pensado para aprovechar el paralelismo tanto en VGAs como en CPUs y se puede aplicar en el caso de las VGAs para todas aquellas operaciones que van más allá de la renderización de gráficos, como puede ser aceleración de físicas, inteligencia artificial o ray tracing. Aunque la programación de Shaders es un concepto más o menos antiguo, no fue sino hasta la inclusión de CUDA por parte de NVIDIA que se pudo hablar realmente de utilizar la VGA como un procesador de computo general, lo que se denomina GPGPU. El problema de CUDA es que es especifico de NVIDIA, de la misma forma AMD tiene una versión denominada FireStream e Intel hace lo propio con Larrabee, cada uno con sus ventajas y desventajas respecto al resto, pero en ningún caso un desarrollador puede utilizar estas APIs con la seguridad de tener soporte en múltiples plataformas, es este problema el que se soluciona con OpenCL del grupo Kronos o con Compute Shaders que Microsoft está introduciendo ahora en conjunto pero no de forma exclusiva con DirectX 11.


Compute Shaders, no será exclusivo de hardware con soporte DirectX 11, será posible aprovechar sus cualidades en equipos con VGAs DirectX 9 y 10, aunque no con el mismo nivel de características, para ello se ha creado Compute Shaders Model 3.0, 4.0 y 5.0 que son homólogos a Shaders Model 3.0, 4.0 y 5.0 y corresponden a DirectX 9, 10 y 11 respectivamente. Compute Shader Model 5.0 es el API más avanzada y en muchos aspectos equivalente a CUDA de NVIDIA, en cambio Compute Shader Model 4.0 que se puede ejecutar en cualquier VGA con soporte DirectX 10 es más bien equivalente a OpenCL. Compute Shaders no necesariamente se utilizará en juegos, su potencialidad es casi ilimitada, es de esperar que al igual que OpenCL y CUDA sea utilizada de forma masiva en aplicaciones dedicadas al procesamiento de imágenes o vídeos, así como en aplicaciones científicas que pueden beneficiarse ampliamente del fuerte paralelismo y enfoque en las operaciones de punto flotante que proveen los GPU, es muy probable que en un futuro veamos más y más aplicaciones de distinta naturaleza utilizando alguna tecnología GPGPU.

Los procesadores con dos núcleos ya no son una excentricidad, los computadores de gama media incluyen este tipo de procesadores por defecto, mientras que los procesadores con cuatro o más núcleos son opciones cada vez más accesibles, sin embargo DirectX a diferencia de OpenGL es un API con una naturaleza mononúcleo y por tanto el beneficio en juegos respecto a tener más de un procesador es muy limitado, se podían asignar múltiples hilos, pero esto se usaba más bien para tareas paralelas a los gráficos, como la inteligencia artificial, manejo de la red, etc. Algunos fabricantes como AMD o NVIDIA han desarrollado sus propias soluciones para este problema, sin embargo chocan con la naturaleza mono núcleo de DirectX con lo cual el rendimiento no escala todo lo bien que debería de escalar.


Con DirectX 11 Microsoft pretende solucionar este problema dividiendo los dispositivos Direct3D en tres interfaces: Dispositivos, Contexto inmediato y Contexto diferido, cada uno asignado a un hilo y en el caso de dispositivos y contexto diferido puede haber más de un hilo en la cola de tareas para la interfaz de contexto inmediato o el hilo de rendereo. Los desarrolladores tendrán un control muy fino sobre cada hilo, pudiendo determinar que hilos y en que orden se deben ejecutar. Esto estará también disponible para hardware DirectX 10, sin embargo la interfaz de contexto diferido se debe realizar a nivel de software sin aceleración por GPU, por lo cual es probable que el rendimiento sea un tanto más optimo con hardware DirectX 11 que con hardware DirectX 10. Aun así el soporte para hardware más antiguo, permite que los desarrolladores implementen con mayor seguridad las nuevas APIs, teniendo además la ventaja que son independientes de la cantidad de núcleos en el CPU, de está forma su software estará ya preparado para una generación con 8 o 16 núcleos.

Si tuviéramos que calificar lo que significa DirectX 11 con una sola palabra, esa palabra sería rendimiento. Los muchachos de Redmond han hecho mucho énfasis en mejorar y aprovechar al máximo el hardware con DirectX 11. A nivel de resultado no hay nada muy distinto a lo que ya tenemos, la diferencia es que esas imágenes espectaculares que a veces vemos como demostración, podrán ser más fácilmente reproducibles en escenarios reales.


En ese sentido DirectX 11 para DirectX 10 es muy similar a lo que es Windows 7 para Windows Vista y obedece a lo que parece ser una nueva filosofía de Microsoft, en donde tiene los ojos mucho más abiertos que antes a su entorno, en vez de lanzar un sistema operativo que requiere que la gente duplique su memoria RAM y adquiera una nueva tecnología en discos duros que es prácticamente inexistente en el mercado, está lanzando un sistema operativo que ya tiene mejor rendimiento respecto a su predecesor en el hardware actual y además es tremendamente escalable, de la misma forma DirectX 11 no solo nos muestra características que requieren de tarjetas monstruosas para funcionar, sino que nos muestra características que logran sacar mejor rendimiento en piezas de hardware actuales como los CPUs con múltiples núcleos, que además mejoran la eficiencia con que se realizan los redereos de imágenes 3D y que amplia el tipo de uso que se le puede dar al GPU.


Adicionalmente vemos que muchas de las nuevas características de DirectX 11, se han llevado cuando es posible al hardware que solo soporta versiones más antiguas del API, de está forma los desarrolladores no necesitan esperar a que DirectX 11 sea masivo para su implementación. Sin embargo es solamente en la nueva generación de tarjetas DirectX 11 que podremos ver está API trabajando con todo su esplendor, especialmente en agregados como Compute Shaders que requieren tarjetas con suficiente poder para poder procesar los gráficos y que sobre un poco de espacio para acelerar otros componentes.

3 comentarios:

Anónimo dijo...

Wait around! Or simply not necessarily! I recently authored to Mary’s e-mail address originating from a various place and this also time frame I did NOT receive
an miscalculation information. It indicates they possibly received the knowledge your dog wished out of me
(checking account quantity, etcetera) and after this hindered my personal e-mail tackle
having an problem message that affirms “Eric’s e-mail
correct will not be logical anymore”, but it’s in all probability up and running once more.
Substantiation is definitely We directed an email for you to
his / her address coming from a distinct spot (one among our
some other e-mail details) and that i failed to recieve an oversight message… darn…tghthgthgg
Justin help my family observe my comprehensive resume with your firm.
I have got presently sent my own continue for your business
electronic mail, please I needed ones vital reply.
Look at my blog : Genital Wart Cure

Anónimo dijo...

May I uncover that you are through Qld? You really be
understood as a strong Aussie :1)
Feel free to visit my blog post - post2180

Anónimo dijo...

The wгite-up feаtureѕ proven helрful to me.
Ӏt’ѕ extгemely helρful and you're simply certainly quite well-informed in this field. You have got opened our eye to numerous views on this kind of matter using intriquing, notable and strong written content.

Feel free to visit my website; buy viagra

Publicar un comentario