Hola DirectX 11, ¿qué hay de nuevo?


Hola, amigos geeks, antisociales y demás, acá estamos de nuevo para explicarles acerca de lo que nos trae el nuevo API gráfico de Windows, el DirectX 11, que ya viene incorporado en el Windows 7. Incluye nuevas técnicas, donde se aplican mayores niveles de renderización que permitirán mayores niveles de detalle con el uso de menores recursos: Genial.

Vamos a meternos entonces un poco más en sus nuevas técnicas

Tessellation

Click para ampliar
Click para ampliar

Teselación (mosaicos) es un patrón de figuras que cubre un área, con la característica de no quedar espacios vacíos ni superponerse ninguna figura  a otra. Ésta es utilizada como técnica de renderización desde el lanzamiento y desarrollo de la XBOX 360, y ATI también 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.

La creación de una figura tridimensional normalmente en DirectX implicaba 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, y 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.

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, 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. GENIAL.

Conclusión: Sí pudiéramos describir a DirectX 11 con una palabra, está, sin pensarlo 2 veces, sería RENDIMIENTO. Esperamos poder hacer un review de este nuevo API, ya que Windows 7 ya fue lanzado hace unos días. Microsoft se ha esforzado para poder hacer esto, y ojalá, le dé buenos frutos.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s