Microsoft anuncia Microsoft DirectX Raytracing gracias a la colaboración con Nvidia
Para muchos, puede parecer que DirectX 12 sigue siendo una tecnología completamente nueva, y de alguna manera todavía lo es, pero de hecho hemos estado hablando de la APIs de gráficos durante casi media década. Microsoft anunció por primera vez la próxima generación de APIs de gráficos para en el GDC en el año 2014, con el lanzamiento inicial como parte de Windows 10 un año después. Por una multitud de razones, la adopción de DirectX 12 todavía está en sus inicios, los ciclos de desarrollo de software son largos y los ciclos de adopción de SO son más largos, pero con su API de gráficos de bajo nivel firmemente establecida, los equipos de DirectX de Microsoft ya están trabajando duro en la la próxima generación de tecnología de gráficas. Y ahora, como finalmente podemos revelar, el futuro de DirectX incluirá un enfoque significativo en el trazado de rayos.
Esta mañana, en el GDC 2018, como parte de una publicación coordinada con algunos de sus socios de hardware y software, Microsoft anuncia una importante incorporación de funciones nuevas a la API de gráficos DirectX 12: DirectX Raytracing. Exactamente lo que su nombre indica, DirectX Raytracing proporcionará una API estándar para rastreos acelerados de hardware y software bajo DirectX, permitiendo a los desarrolladores aprovechar el modelo de renderizado para obtener gráficos y efectos nuevos y más precisos.
Al ir de la mano con hardware nuevo y existente, el conjunto de comandos DXR está destinado a proporcionar un medio estandarizado para que los desarrolladores implementen el trazado de rayos de una manera fácil para las GPU. Además, como una extensión del conjunto de características de DirectX 12 existente, DXR está estrechamente integrado con la rasterización tradicional, lo que permite a los desarrolladores mezclar las dos técnicas de representación para adaptarlas a sus necesidades y utilizar la técnica de renderizado que ofrece los mejores efectos y el mejor rendimiento. necesario.
¿Por qué Ray Tracing es el futuro?
Históricamente, el trazado de rayos y su trazado de trayectoria han sido, en la mayoría de los aspectos, las técnicas de representación superiores. Al hacer que una escena sea más parecida a la del ojo humano, al enfocarse en de dónde provienen los rayos de luz, con qué interactúan y cómo interactúan con esos objetos, puede producir una imagen mucho más precisa en general, especialmente cuando se trata de iluminación en todas sus formas. Específicamente, el trazado de rayos funciona como la visión humana al revés (como una forma de hablar), arrojando rayos del espectador a los objetos y luego rebotando desde esos objetos al resto del mundo, determinando finalmente las interacciones entre las fuentes de luz y los objetos de un manera realista. Como resultado, el trazado de rayos ha sido el método de referencia para la renderización de alta calidad, particularmente imágenes estáticas, películas e incluso algunos elementos de los juegos.
Sin embargo, los costes computacionales del trazado de rayos fotorrealistas son increíblemente altos debido a todo el trabajo requerido no solo para rastrear los rayos individuales, sino también para el gran número de los mismos que se pueden incluir. Este es un rayo para cada píxel de la pantalla (o más) emitido, reflejado, refractado y, en última instancia, recursivamente generado muchas veces. Saltar de un objeto a otro, refractarse a través de objetos, difundirse a lo largo de otros objetos, todo para determinar todos los valores de luz y color que finalmente influyen en un solo píxel.
Como consecuencia de esto, el trazado de rayos no ha sido adecuado para su representación en tiempo real, lo que limita su uso a casos de uso "fuera de línea" donde los sistemas pueden tomar todo el tiempo que necesiten. En su lugar, los gráficos en tiempo real se han construido alrededor de la rasterización (La rasterización es el proceso por el cual una imagen descrita en un formato gráfico vectorial se convierte en un conjunto de píxeles o puntos para ser desplegados en un medio de salida digital), un "hack" hermoso que fundamentalmente proyecta el espacio tridimensional en un plano 2D. Al reducir gran parte del proceso de renderizado a una imagen 2D, esto simplifica en gran medida la carga de trabajo total, haciendo que la representación en tiempo real sea práctica. La desventaja de este método es, como uno podría esperar, que no es tan de alta calidad; en lugar de simulaciones de luz precisas, los sombreadores de píxeles y cómputo proporcionan aproximaciones de calidad variable. Y, en última instancia, los sombreadores no pueden compensar por completo la falta de procesamiento y simulaciones tridimensionales de extremo a extremo.
Aunque las consideraciones prácticas significan que la rasterización ha sido, y continuará siendo, la técnica dominante de representación en tiempo real durante muchos años, el santo grial de los gráficos en tiempo real sigue siendo el trazado de rayos, o al menos la calidad que puede proporcionar. Como resultado, se ha enfocado cada vez más en fusionar el trazado de rayos con la rasterización para combinar las fortalezas de ambas técnicas de renderizado. Esto significa emparejar la eficiencia de la rasterización y la tubería de desarrollo existente con la precisión del trazado de rayos.
Si bien la mejor forma de hacerlo será el desarrollador de los juegos, el método más sencillo es rasterizar una escena y luego usar el trazado de rayos para iluminarla, seguido de otra ronda de sombreadores de píxeles. para integrar mejor los dos y agregar cualquier efecto final. Esto aprovecha las mayores fortalezas del trazado de rayos con iluminación y sombras, lo que permite soluciones de iluminación muy precisas que simulan correctamente reflejos de luz, difusión, dispersión, oclusión ambiental y sombras. O para decirlo de otra manera: fingir que la iluminación realista en la rasterización es tan costosa que puede ser más fácil hacerlo de la manera correcta para empezar.
DirectX Raytracing
DirectX Raytracing sienta las bases para que esto sea práctico creando una API para el trazado de rayos que funcione con las API de rasterización existentes de la compañía. Técnicamente, las GPU ya son lo suficientemente genéricas para que los desarrolladores puedan implementar una forma de trazado de rayos solo a través de sombreadores, sin embargo, perderían la oportunidad de acceder a unidades especializadas de hardware de la GPU para ayudar en la tarea, sin mencionar todo el proceso. No estándar. Entonces, tanto para exponer las nuevas capacidades de hardware como para abstraer parte del trabajo de optimización en torno a este proceso para los proveedores de GPU, en su lugar, esta funcionalidad se implementa a través de nuevos comandos API para DirectX 12.
Pero al igual que otras API de DirectX de Microsoft, es importante tener en cuenta que la compañía no está definiendo cómo debería funcionar el hardware, solo que el hardware necesita soportar ciertas características. Más allá de eso, depende de los proveedores de hardware individuales crear sus propios backends para ejecutar comandos DXR. Como resultado, y especialmente porque esto es tan temprano, todos, desde Microsoft hasta los proveedores de hardware, están deliberadamente vagos sobre cómo funcionará la aceleración de hardware.
En el nivel base, DXR tendrá una capa de respaldo completa para trabajar con hardware DirectX 12 existente. Como el anuncio de Microsoft está dirigido a desarrolladores de software, están lanzando la capa alternativa como una forma para que los desarrolladores comiencen hoy a usar DXR. No es la opción más rápida, pero permite a los desarrolladores probar de inmediato la API y comenzar a escribir software para aprovecharla, mientras todos esperan que el hardware más nuevo sea más frecuente. Sin embargo, la capa alternativa no se limita solo a los desarrolladores, sino que también garantiza que todo el hardware de DirectX 12 pueda admitir el trazado de rayos, y al hablar con los desarrolladores de hardware, parece que algunos estudios de juegos podrían tratar de incluir los efectos impulsados por DXR tan pronto como sea posible. A finales de este año, aunque solo sea como un escaparate técnico temprano para demostrar lo que DXR puede hacer.
En el caso de acceder a la capa alternativa, DXR se ejecutará mediante sombreadores de cálculo DirectCompute, que ya son compatibles con todas las GPU DX12. En general, las GPU no son excelentes en el trazado de rayos, pero tampoco son medio malas. A medida que las GPU se han vuelto más flexibles, se han vuelto más fáciles de asignar al trazado de rayos, y ya hay una serie de soluciones profesionales que pueden usar granjas de GPU para el trazado de rayos. Más rápido aún, por supuesto, es mezclar eso con rutas de hardware optimizadas, y aquí es donde entra la aceleración del hardware.
Microsoft no está diciendo exactamente qué aceleración de hardware implicará DXR, y la naturaleza de alto nivel de la API significa que es bastante fácil para los proveedores de hardware mezclar las etapas de hardware y software según sea necesario. Esto significa que depende de los proveedores de GPU proporcionar los back-ends de ejecución para DXR y hacer que DXR funcione de la manera más eficiente posible en sus diversas microarquitecturas. Cuando se trata de implementar esos backends a su vez, hay algunas partes del proceso de trazado de rayos que se pueden hacer en hardware de función fija de manera más eficiente que los shaders, y como resultado Microsoft está dando a los proveedores de GPU los medios para acelerar DXR con este hardware para cerrar aún más la brecha de rendimiento entre el trazado de rayos y la rasterización.
Para la presentación de hoy, NVIDIA anuncia simultáneamente que admitirán la aceleración de hardware de DXR a través de su nueva tecnología RTX. RTX a su vez combina características de seguimiento de rayos de la arquitectura Volta sin previo aviso con rutinas de software optimizadas para proporcionar un back-end DXR completo, mientras que las tarjetas pre-Volta utilizarán la opción de respaldo basado en sombreado DXR. Mientras tanto, AMD también anunció que están colaborando con Microsoft y que lanzarán un controlador en un futuro cercano que admita la aceleración DXR. El tono del anuncio de AMD me hace pensar que tendrán una aceleración de hardware muy limitada en relación con NVIDIA, pero tendremos que esperar y ver qué revela AMD una vez que sus controladores estén disponibles.
Aunque, en última instancia, la idea de la aceleración del hardware puede ser una (relativamente) efímera. Desde la introducción de DirectX 12, la visión a largo plazo de Microsoft y de hecho la visión general de la industria de GPU ha sido que las GPU se vuelvan cada vez más generales, con sucesivas generaciones de GPU que se mueven cada vez más en esta dirección. Como resultado, se habla de que las GPU eliminan por completo las unidades de función fija. Una mayor programabilidad hará que sea aún más fácil mezclar la rasterización y el trazado de rayos, y más adelante en el futuro todavía podría sentar las bases para el trazado puro de rayos en los juegos.
Como era de esperar, los comandos DXR reales para DX12 están diseñados para una GPU altamente programable. Si bien no entraré en minucias de programación mejor atendidas por el blog de desarrollo de Microsoft, la mirada de Microsoft es sólida en el futuro. DXR no introducirá ningún motor de ejecución nuevo en el modelo DX12, por lo que los dos motores principales seguirán siendo los gráficos (3D) y los motores de cálculo, y de hecho Microsoft está tratando DXR como una tarea de cálculo, lo que significa que puede ejecutarse sobre cualquiera de los motores. Mientras tanto, DXR introducirá múltiples nuevos tipos de sombreado para manejar el procesamiento de rayos, incluidos los sombreadores de generación de rayos.
Finalmente, el mundo en 3D se describirá utilizando lo que Microsoft denomina la estructura de aceleración, que es un entorno 3D completo que se ha optimizado para el recorrido de la GPU.
Mira puesta en el futuro
Al igual que el anuncio de DirectX 12 en 2014, el anuncio de DirectX Raytracing pretende establecer el escenario para el futuro de Microsoft y sus socios de hardware y software. Los desarrolladores interesados pueden comenzar con DXR hoy al habilitar el modo experimental Win10 FCU. Mientras tanto, los desarrolladores de software de primer nivel como Epic Games, Futuremark, DICE, Unity y el grupo SEED de Electronic Arts ya anuncian que planean integrar el soporte DXR en sus motores. Y, como Microsoft promete, hay más empresas por llegar.
Aunque incluso con el comienzo de aproximadamente un año que han recibido los desarrolladores más cercanos de Microsoft, mi impresión de todo esto es que DXR sigue siendo un proyecto a muy largo plazo. Tal vez incluso más que DirectX 12. Mientras que DX12 era una nueva API para funciones de hardware existentes, DXR está más cerca de una versión de DirectX tradicional en que es una nueva API (o más bien de nuevos comandos DX12) que funciona mejor con hardware nuevo. Y como esencialmente hay hardware de consumo en el mercado en este momento que ofrece aceleración DXR de hardware, eso significa que DXR realmente están comenzando desde el principio.
La gran pregunta, supongo, es cuánfo de útil será el modo de respaldo del software puro; si hay algo que se pueda hacer de manera significativa incluso en las tarjetas de video de gama alta de hoy en día sin hardware de función fija para el trazado de rayos. No tengo ninguna duda de que los desarrolladores incluirán algunas funciones con DXR para mostrar sus productos desde el principio, pero hacer el mejor uso de DXR parece que requerirá soporte de hardware como característica de referencia. Y como hemos visto con lanzamientos de características pasadas como DX11, tener una API nueva se convierta en la línea de base probablemente tomará bastante tiempo.
El otro aspecto interesante de esto es que Microsoft no está anunciando DXR para la Xbox One en este momento. Windows y la Xbox One están prácticamente atados a la moda cuando se trata de DX12, lo que me hace preguntarme qué papel tendrán que jugar las consolas. Después de todo, lo que finalmente mató a DX9 en muchos aspectos fue el lanzamiento de las consolas de la octava generación, donde la funcionalidad DX11/12 era una línea de base. Entonces, podemos ver que ocurre algo similar con DXR, en cuyo caso estamos hablando de una transición que tiene más de 2 años.
Sin embargo, esperamos poder obtener algunas respuestas más aquí esta semana en GDC. Microsoft está presentando un par de diferentes sesiones relacionadas con DXR, la más importante de las cuales es DirectX: la plataforma de gráficos en evolución de Microsoft, y está siendo presentada por Microsoft, DICE y SEED. Así que estad atentos para más noticias de GDC.