En GDC, Microsoft anunció una nueva función para DirectX 12: DirectX Raytracing (DXR). La nueva API ofrece trazado de rayos acelerado por hardware para aplicaciones DirectX, dando paso a una nueva era de juegos con iluminación, sombras y materiales más realistas. Un día, esta tecnología podría permitir los tipos de imágenes foto rrealistas a las que nos hemos acostumbrado en los éxitos de taquilla de Hollywood.

Independientemente de la GPU que tengas, ya sea la monstruosa Titan V de $ 3,000 de Nvidia o la pequeña integración en tu Raspberry Pi de $ 35 , los principios básicos son los mismos; de hecho, aunque muchos aspectos de las GPU han cambiado desde que aparecieron los aceleradores 3D en la década de 1990, todos se han basado en un principio común: la rasterización.

Así es como se hacen las cosas hoy

Una escena 3D se compone de varios elementos: están los modelos 3D, construidos a partir de triángulos con texturas aplicadas a cada triángulo; hay luces que iluminan los objetos; y hay una ventana gráfica o cámara, mirando la escena desde una posición particular. Esencialmente, en la rasterización, la cámara representa una cuadrícula de píxel de trama (por lo tanto, rasterización). Para cada triángulo en la escena, el motor de rasterización determina si el triángulo se superpone a cada píxel. Si lo hace, el color de ese triángulo se aplica al píxel. El motor de rasterización funciona desde los triángulos más alejados y se mueve más cerca de la cámara, por lo que si un triángulo oscurece a otro, el píxel será coloreado primero por el triángulo posterior y luego por el que está delante de él.

Este proceso basado en sobre escritura de vuelta al frente explica por qué la rasterización también se conoce como el algoritmo del pintor; recuerde al fabuloso Bob Ross , primero colocando el cielo lejos en la distancia, luego escribiendo con montañas, luego los alegres arbolitos, luego quizás un pequeño edificio o una valla rota, y finalmente el follaje y las plantas más cercanas a nos.

Gran parte del desarrollo de la GPU se ha centrado en la optimización de este proceso mediante la reducción de la cantidad que se tiene que extraer. Por ejemplo, los objetos que están fuera del campo de visión de la ventana gráfica pueden ignorarse; sus triángulos nunca pueden ser visibles a través de la cuadrícula de trama.

Las partes de los objetos que se encuentran detrás de otros objetos también pueden ignorarse; su contribución a un píxel dado será sobrescrita por un píxel que esté más cerca de la cámara, por lo que no tiene sentido ni siquiera calcular cuál sería su contribución.

Las GPU se han vuelto más complicadas en las últimas dos décadas, con sombreadores de vértices procesando los triángulos individuales, sombreadores de geometría para producir nuevos triángulos, sombreadores de píxeles que modifican los píxeles posteriores a la rasterización y cálculos de sombreadores para realizar física y otros cálculos. Pero el modelo básico de operación se ha mantenido igual.

La rasterización tiene la ventaja de que se puede hacer rápidamente; las optimizaciones que saltan los triángulos que están ocultos son efectivas, reduciendo en gran medida el trabajo que la GPU tiene que hacer, y la rasterización también permite que la GPU transmita los triángulos uno a la vez en lugar de tenerlos todos en la memoria al mismo tiempo.

Pero la rasterización tiene problemas que limitan su fidelidad visual. Por ejemplo, un objeto que se encuentra fuera del campo de visión de la cámara no se puede ver, por lo que será omitido por la GPU. Sin embargo, ese objeto aún podría proyectar una sombra dentro de la escena. O podría ser visible desde una superficie reflectante dentro de la escena. Incluso dentro de una escena, la luz blanca que rebota en un objeto rojo brillante tenderá a colorear en rojo todo lo golpeado por esa luz; este efecto no se encuentra en las imágenes rasterizadas. Algunos de estos déficits pueden corregirse con técnicas como el mapeo de sombras (que permite que los objetos que están fuera del campo de visión proyecten sombras dentro de él), pero el resultado es que las imágenes rasterizadas siempre terminan viéndose diferentes del mundo real.

Fundamentalmente, la rasterización no funciona de la misma manera que funciona la visión humana. No emanamos una red de rayos de nuestros ojos y vemos qué objetos se cruzan esos rayos. Por el contrario, la luz del mundo se refleja en nuestros ojos. Puede rebotar en múltiples objetos en el camino y, a medida que pasa a través de objetos transparentes, se puede doblar de formas complejas.

Ingrese raytracing

Raytracing es una técnica para producir gráficos por computadora que imita más de cerca este proceso físico. Dependiendo del algoritmo exacto utilizado, los rayos de luz se proyectan desde cada fuente de luz, o desde cada píxel de trama; Rebotan alrededor de los objetos en la escena hasta que golpean (dependiendo de la dirección) ya sea la cámara o una fuente de luz.

Proyectar rayos desde cada píxel es menos intensivo desde el punto de vista informático, pero proyectarse desde las fuentes de luz produce imágenes de mayor calidad que reproducen con precisión ciertos efectos ópticos. Raytracing puede producir imágenes sustancialmente más precisas; los motores avanzados de trazado de rayos pueden generar imágenes fotorrealistas. Esta es la razón por la cual raytracing se utiliza para representar gráficos en películas: las imágenes de computadora se pueden integrar con secuencias de acción en vivo sin mirar fuera de lugar o artificial.

Pero raytracing tiene un problema: es enormemente intensivo computacionalmente. La rasterización se ha optimizado ampliamente para tratar de restringir la cantidad de trabajo que la GPU debe hacer; en raytracing, todo ese esfuerzo es en vano, ya que potencialmente cualquier objeto podría contribuir con sombras o reflejos a una escena.

El trazado de rayos tiene que simular millones de haces de luz, y parte de esa simulación puede desperdiciarse, reflejarse fuera de la pantalla o esconderse detrás de otra cosa.

Esto no es un problema para las películas; las empresas que hacen gráficos de películas pasarán horas renderizando cuadros individuales, con vastas granjas de servidores utilizadas para procesar cada imagen en paralelo. Pero es un gran problema para los juegos, donde solo se obtienen 16 milisegundos para dibujar cada fotograma (para 60 fotogramas por segundo) o incluso menos para la realidad virtual.

Sin embargo, las GPU modernas son muy rápidas en estos días. Y si bien no son lo suficientemente rápido aún por RAYTRACE juegos altamente complejas con altas tasas de actualización, que no tienen suficientes recursos informáticos que pueden ser utilizados para hacer algunos trozos de trazado de rayos.

Aquí es donde entra en juego DXR. DXR es una API de trazado de rayos que amplía la API de Direct3D 12 basada en rasterización existente. La escena en 3D está dispuesta de forma que sea compatible con el trazado de rayos, y con la API DXR, los desarrolladores pueden producir rayos y trazar su camino a través de la escena. DXR también define nuevos tipos de sombreado que permiten a los programas interactuar con los rayos a medida que interactúan con los objetos en la escena.

Debido a las demandas de rendimiento, Microsoft espera que DXR se use, al menos por el momento, para completar algunas de las cosas que raytracing hace muy bien y que la rasterización no: cosas como reflejos y sombras. DXR debería hacer que estas cosas parezcan más realistas.

También podríamos ver juegos simples y estilizados que usan raytracing exclusivamente.

La compañía dice que ha estado trabajando en DXR durante casi un año, y Nvidia en particular tiene mucho que decir sobre el asunto. Nvidia tiene su propio motor de trazado de rayos diseñado para su arquitectura Volta (aunque actualmente, la única tarjeta de video que se envía con Volta es el Titan V, por lo que la aplicación de esto probablemente sea limitada). Cuando se ejecuta en un sistema Volta, las aplicaciones DXR usarán automáticamente ese motor.

Microsoft dice vagamente que DXR funcionará con el hardware que está actualmente en el mercado y que tendrá una capa alternativa que permitirá a los desarrolladores experimentar con DXR en cualquier hardware que tengan.

Si DXR se adopta ampliamente, podemos imaginar que el hardware futuro puede contener características adaptadas a las necesidades del trazado de rayos. Por el lado del software, Microsoft dice que EA (con el motor Frostbite utilizado en la serie Battlefield ), Epic (con el motor Unreal), Unity 3D (con el motor Unity) y otros tendrán soporte DXR pronto.

¡No te pierdas nuestra pagina de Facebook!!