¿Que nos trae DirectX 11?

¿Que nos trae DirectX 11?

En estos tiempos no cabe la menor duda de que DirectX es el API más utilizada en los juegos para PC, por tanto sus actualizaciones tienen consecuencias inmediatas en los mismos, sin embargo la nueva versión de DirectX nos trae mucho más que eso, veamos que novedades encontraremos en la nueva API de Microsoft.

Publicado el 22/09/09 a las 10:02 am por Marcel Mourguiart

  1. Tessellation y Compute Shaders
  2. Rendering y Conclusiones
  3. Ver Todo

dx11_glass

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 rendereo que permiten un mayor nivel de detalle con menores recursos.

Estamos ad portas del lanzamiento de hardware con soporte para DirectX 11 y Windows 7 aun cuando no se ha lanzado al público general de forma oficial, ya es utilizado ampliamente a través de las versiones de prueba y algunas versiones para distribuidores de hardware que se han filtrado en internet.

De está forma, nos parece adecuado y buen momento repasar y analizar algunos de los principales beneficios que nos trae Microsoft con DirectX 11.

Tessellation

tessellation4

Teselación (mosaicos) es un patrón de figuras que cubre un área, con la característica que no quedan espacios vacíos y ninguna figura se superpone a otra, es utilizada como técnica de rendereo desde el lanzamiento y desarrollo de la XBOX 360 y ATI proporciona extensiones para OpenGL (AMD_vertex_shader_tesselator), sin embargo no estaba presente en DirectX u OpenGL core 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.

tesellation2La creación de una figura tridimensional, implicaba normalmente en DirectX mover un modelo Sub-D a un modelo de animación, luego a un modelo de desplazamiento de mapa para finalmente poder aplicar una malla poligonal.

Cuando se ha aplicado la malla poligonal, se reduce el resultado a varios niveles de detalle simultáneos, con ello se evita que se sobre cargue 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 está 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 teselación, además el resultado final suele estar muy alejado del concepto original del artista.

DirectX 11 incorpora teselación directamente en el API, por lo cual la técnica puede ser utilizada por cualquier VGA que sea compatible con DirectX 11, veamos entonces cual es la forma en que trabaja.

tesellation3

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.

Aunque no se ha confirmado es probable que OpenGL 3.3 (debería de liberarse en un par de meses)  incluya en su núcleo teselación (hoy solo lo incluye como extensión), ya que con que DirectX 11  se amplia el hardware que incluye aceleración en el proceso de teselación y por tanto la extensión “AMD_vertex_shader_tesselator” podría ejecutarse en cualquier VGA con soporte DirectX 11. De está forma aunque la teselación de DirectX 11 solo estará disponible para Windows Vista y Windows 7, será posible que un desarrollador utilice la misma técnica en Windows XP, Linux o Mac OS X, al igual que hoy en día puede utilizar Geometry shaders gracias a OpenGL 3.2 que tiene soporte en todas las VGAs DirectX 10 cuando existen controladores apropiados.

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, las implementaciones posteriores son en muchos aspectos derivados de CUDA.

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 (el mismo de OpenGL) 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, veamos algunas diferencias entre Compute Shader Model 4.0 y 5.0.

Compute Shader Model 4.0 (DX 10) Compute Shader Model 5.0 (DX 11) Beneficios
Thread Dispatch 2D 3D Reemplaza múltiples hilos 2D con uno solo 3D
Thread Limit 768 1024 Ejecuta 33% más hilos simultáneos
Tread Group Shared Memory 16 kB 32 kB Dobla la memoria disponible para comunicación entre hilos
Shared Memory Access 256 byte solo escritura 32 kB lectura y escritura Memoria I/O compartida más eficiente
Atomic Operations No soportado Soportado Permite a cada hilo operar en regiones de memoria protegida, simplificando la implementación de algoritmos
Double Precision No soportado Soportado Permite precisión de punto flotante a 64-bit
Append/Consume Buffers No soportado Soportado Útil para construir y acceder a datos en listas o en una pila de forma
Unordered Access Views Bound to Compute Shaders 1 8 Permite que cada Compute Shader acceda a múltiples buffers, mejorando la flexibilidad
Unordered Access Views Bound to Pixel Shaders No soportado 8 Permite a los pixel shaders acceder a datos del compute shader para interpolar con el pipeline de rendereo
Gather4 No soportado Soportado Acelera hasta en cuatro veces, la búsqueda de datos adyacentes de la memoria

Como podemos observar aun cuando Compute Shaders se puede ejecutar en VGAs sin soporte para DirectX 11, es con estas tarjetas con las que se logra un mayor nivel de rendimiento en el uso del API, adicional cuando se trata de juegos la VGA no es un apartado de hardware que suela tener excedentes en su capacidad de computo, por lo tanto suele quedar muy poco espacio para que sea utilizado en otros apartados que no sean los gráficos, por lo menos en tarjetas de rango medio o bajo.

Sin embargo 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.

Página Anterior

Próxima Página

  1. Tessellation y Compute Shaders
  2. Rendering y Conclusiones
  3. Ver Todo
CompárteloCompártelo

Publicado por Marcel Mourguiart el 22 de September 2009, con los tags , , , , en la categoría Artículos, Destacados

Comenta este Artículo

Comenta este Artículo

Este artículo tiene 42 Comentarios. Deja tu Comentario!

Los Últimos comentarios del foro para esta noticia:

    Avatar
    ajalá que con este directx 11, no haya que estar comprando tarjeta de video cada 6 meses, por lo que se ve va a administrar mucho mejor el hardware, ahora falta ver con que vendrá nvidia en cuanto a Dx11 se refiere, para ver que lado conviene más y esperar los juegos con DX11 como el Dirt 2, q...

    Avatar
    para mi pagar por esa diferencia es una verdadera estupidez.. en el futuro cuando realomente los juegos le saquen mejor provecho .. ahi valdra la pena!.

    Avatar
    Solo esperar para comenzar a testiar el cambio.

    Avatar
    interesante, aunque recien acabo de pasar a una buena t. video de DX10.1, no se puede optar por ir por lo economico e ir de la mano con la tecnologia simultaneamente XD

    Avatar
    Habrá que ver si el "éxito" de Windows 7 se traspasa al DX11, a diferencia de lo que pasó con DX10 en Vista.

    AMD ATI Radeon HD 5870: La primera tarjeta gráfica DirectX 11 : Blogografia dijo 2009-09-23 02:59:46:

    [...] quieres saber más sobre DirectX 11, te recomendamos este completo artículo de CHW. Si la Radeon HD 5870 te quedo gustando, los mismos sospechosos tienen una en sus laboratorios y ya [...]

    AMD ATI Radeon HD 5870: La primera tarjeta gráfica DirectX 11 | UR-VE.COM dijo 2009-09-23 03:08:22:

    [...] quieres saber más sobre DirectX 11, te recomendamos este completo artículo de CHW. Si la Radeon HD 5870 te quedo gustando, los mismos sospechosos tienen una en sus laboratorios y ya [...]

    AMD ATI Radeon HD 5870: La primera tarjeta gráfica DirectX 11 « RSS2Blogs dijo 2009-09-23 06:44:12:

    [...] quieres saber más sobre DirectX 11, te recomendamos este completo artículo de CHW. Si la Radeon HD 5870 te quedo gustando, los mismos sospechosos tienen una en sus laboratorios y ya [...]

    Tecnologia mas cerca de ti » AMD ATI Radeon HD 5870: La primera tarjeta gráfica DirectX 11 dijo 2009-09-23 12:06:13:

    [...] quieres saber más sobre DirectX 11, te recomendamos este completo artículo de CHW. Si la Radeon HD 5870 te quedo gustando, los mismos sospechosos tienen una en sus laboratorios y ya [...]

    ATi 5870 y 5850 ya son oficiales dijo 2009-09-25 19:59:25:

    [...] dos destacadas características son que dan el salto a los 40 nanómetros y la compatibilidad con DirectX 11, que encontraremos instalado en el Windows [...]

    ATi 5870 y 5850 ya son oficiales dijo 2009-09-30 18:27:04:

    [...] dos destacadas características son que dan el salto a los 40 nanómetros y la compatibilidad con DirectX 11, que encontraremos instalado en el Windows 7. Ademas de esto, traerán las nuevas tecnologías, [...]

    DirectX 11 Detalles dijo 2009-10-04 11:38:42:

    [...] Si quieres conocer a fondo las novedades y compativilidades puedes leer: ¿Que nos trae DirectX 11? [...]

    que te parece Windows7? - Foros PrysmaX Gaming Community dijo 2009-11-06 18:03:42:

    [...] No, pero aun asi le saca el jugo debido a que el DX11 trae bastantes optimizaciones. Click aca si queres ver. [...]

eXTReMe Tracker