Las nuevas funciones de DirectX Raytracing (DXR) Tier 1.1 pueden funcionar con solo compatibilidad con controladores sin necesidad de grandes modificaciones de hardware

Hardware / Las nuevas funciones de DirectX Raytracing (DXR) Tier 1.1 pueden funcionar con solo compatibilidad con controladores sin necesidad de grandes modificaciones de hardware 3 minutos de lectura

Xbox



Ray Tracing es sin duda una característica que los jugadores, especialmente con las tarjetas gráficas de gama alta de NVIDIA y AMD, están esperando ansiosamente. Los principales fabricantes de GPU, que pronto también incluirán a Intel, están construyendo activamente su hardware para admitir la función que representa de manera realista los efectos de luces y sombras basados ​​en las leyes de la física del mundo real, y brinda imágenes hiperrealistas e inmersivas.

Mientras tanto, Microsoft se asegura de que el ecosistema del sistema operativo Windows sea adecuado como plataforma ideal para jugar juegos de alta gama. La plataforma DirectX de la compañía, que ha sido durante mucho tiempo un estándar líder para juegos de escritorio, se está modificando para admitir de forma nativa e incluso impulsar el 'Ray Tracing en tiempo real'. De hecho, DirectX Raytracing (DXR) Tier 1.1 es el último estándar que admite un conjunto de nuevas funciones. Algunas de las funciones interesantes que podría admitir el trazado de rayos en tiempo real en la función cercana incluyen el trazado de rayos en línea, DispatchRays () llama a través de ExecuteIndirect () , Crecimiento de objetos de estado a través de AddToStateObject () , GeometryIndex () en sombreadores de trazado de rayos , y más. Veamos algunas de las nuevas funciones que DirectX 12 para Windows 10 admitirá para el trazado de rayos.



Trazado de rayos en línea:

Una forma alternativa de trazado de rayos, el trazado de rayos en línea no utiliza sombreadores dinámicos ni tablas de sombreado independientes. La API para la función oculta el acceso a la estructura de aceleración (por ejemplo, estructura de datos transversal, cuadro, intersección de triángulos). Esto esencialmente lo deja en manos del hardware / controlador. Curiosamente, todo el código de la aplicación necesario para manejar tanto los resultados de candidatos enumerados como el resultado de una consulta (por ejemplo, acertar vs fallar) puede ser autónomo en el sombreador que maneja el RayQuery .



El trazado de rayos en línea ofrece a los desarrolladores la opción de impulsar más procesos de trazado de rayos, en lugar de entregar la programación del trabajo por completo al sistema. No hace falta agregar que esta optimización de procesos es bastante útil para los desarrolladores que están luchando con múltiples sombras. Además, los desarrolladores tienen total libertad para cambiar dinámicamente al formulario en línea para rayos recursivos simples.



DispatchRays () Llama a través de ExecuteIndirect ():

Esta función permite a los sombreadores de la GPU generar una lista de DispatchRays () llamadas. Estos incluyen parámetros individuales como el número de subprocesos, la configuración de la tabla de sombreado y otras configuraciones de parámetros raíz. El mejor aspecto de la función es que la lista completa se puede ejecutar sin que el proceso necesite un viaje de ida y vuelta intermedio a la CPU.



Todos los escenarios que preparan el trabajo de trazado de rayos en la GPU y luego lo generan inmediatamente, deberían beneficiarse enormemente de la función. No hace falta agregar que esta función debería ser de gran ayuda con varios escenarios de trazado de rayos adaptativos, como la selección, la clasificación, la clasificación y el refinamiento basados ​​en sombreadores.

Objetos de estado en crecimiento a través de AddToStateObject ():

Una característica de optimización, esta nueva intenta reducir los hilos de procesamiento derrochadores. En la actualidad, bastantes aplicaciones y procesos crean una tubería de trazado de rayos completamente poblada, que desperdicia muchos recursos y sobrecarga el sistema. Actualmente, el tiempo de ejecución de D3D12 todavía analiza el objeto de estado completo que se crea a partir de los bloques de construcción.

Aunque se hace para verificar la corrección, con AddToStateObject () , se puede crear un nuevo objeto de estado agregando sombreadores a un objeto de estado de sombreado existente. No es necesario agregar que la sobrecarga de la CPU seguirá siendo proporcional solo a los datos que se agregan.

GeometryIndex () en sombreadores de trazado de rayos:

Esta característica permite a los sombreadores distinguir geometrías dentro de estructuras de aceleración de nivel inferior. Anteriormente, las geometrías podían distinguirse variando los datos en los registros de la tabla de sombreado para cada geometría, pero con el nuevo método, la aplicación se libera de la carga. Además, si todas las geometrías comparten el mismo sombreador, la aplicación puede optar por establecer el MultiplierForGeometryContributionToHitGroupIndex parámetro a TraceRay ()  0.

Esto esencialmente garantizará que el índice de geometría ya no se tenga en cuenta en el cálculo de indexación de la tabla de sombreado de función fija. Aún así, si es necesario o deseado, los sombreadores pueden usar GeometryIndex () para indexar en las propias estructuras de datos de la aplicación.

Además de las características antes mencionadas, DirectX Raytracing (DXR) Tier 1.1 también incluye RAY_FLAG_SKIP_TRIANGLES y RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES banderas. Si bien estos indicadores están disponibles para llamadas de trazado de rayos individuales, también se pueden declarar globalmente a través de la configuración de canalización de trazado de rayos.

Está muy claro que Microsoft está tratando de optimizar DirectX 12 para juegos con muchos gráficos. Además, dado que el trazado de rayos promete ser una de las características más importantes para los juegos y jugadores de alta gama, la compañía se asegura de que el sistema, la CPU y La GPU se utiliza de manera óptima con redundancias mínimas.

Etiquetas directx nvidia trazado de rayos RTX