Las GPU NVIDIA GeForce Serie 50 incluyen un avance importante en la aceleración del trazado de rayos para cabello y piel
La compatibilidad de hardware con mallas triangulares de trazado de rayos se introdujo como parte de NVIDIA RTX en 2018. Sin embargo, el trazado de rayos para el cabello y el pelaje ha seguido siendo un problema que requiere un uso intensivo de recursos informáticos y que ha sido difícil de acelerar aún más. Es decir, hasta ahora.
Las GPU NVIDIA GeForce Serie 50 incluyen un avance importante en la aceleración del trazado de rayos para cabello y piel: compatibilidad con el trazado de rayos por hardware para la primitiva de esfera barrida lineal (LSS). Esta nueva primitiva es un gran paso hacia la representación de humanos digitales de alta calidad en tiempo real. La gama de aplicaciones para la representación humana realista es cada vez mayor e incluye avatares de IA, personajes de películas y juegos, investigación gráfica, aplicaciones de computación científica de alto rendimiento, generación de datos sintéticos y más.
LSS está disponible hoy en NVIDIA OptiX y en el SDK de NVAPI . Hay ejemplos avanzados de cabello en tiempo real que utilizan LSS con modelos de sombreado basados en la física incluidos en el SDK de renderización de personajes RTX , que forma parte de NVIDIA RTX Kit . RTX Kit es un conjunto de tecnologías de renderización neuronal para juegos con trazado de rayos con IA, renderizar escenas con una geometría inmensa y crear personajes de juegos con imágenes fotorrealistas. RTX Kit se presentó durante el lanzamiento de la serie GeForce RTX 50 .
¿Qué es el primitivo LSS?
La primitiva LSS es una línea tridimensional gruesa y redonda con radios variables. Se pueden encadenar varias esferas lineales para crear curvas tridimensionales, compartiendo vértices donde se superponen, de forma similar a cómo se utilizan los triángulos para crear superficies tridimensionales. LSS tiene la forma de un tubo cilíndrico o cónico con esferas que pueden cubrir cada extremo.

Si los dos puntos finales se superponen de modo que la línea no tenga longitud, la esfera barrida por la línea se convierte en una esfera normal. Esto se puede utilizar para la representación de partículas acelerada por hardware. Para que las esferas sean convenientes y eficientes en el uso de la memoria, este caso especial de LSS para esferas se expone como una primitiva de esfera de primera clase independiente.
Las esferas lineales barridas normalmente no están pensadas para mostrarse en primeros planos ampliados, como en la Figura 1. En cambio, están pensadas para ser pequeñas en la pantalla, tal vez de un píxel de ancho, más o menos. Cuando se encadenan varias esferas lineales barridas en tiras y se aleja un poco la cámara, los ángulos agudos se difuminan y estas líneas gruesas se convierten en curvas finas y suaves.

Indexación LSS
LSS viene con dos modos de indexación: un modo de lista explícito y un modo semiimplícito llamado implícito sucesivo. En el modo de lista, cada segmento se especifica explícitamente mediante un par de índices en el búfer de vértices. En el modo implícito sucesivo, los segmentos de línea se especifican mediante un índice explícito y un índice implícito, donde se supone que el segundo punto es el siguiente vértice en el búfer de vértices.
Debido a que los vértices sucesivos en la memoria son comunes y convenientes, el modo implícito sucesivo es una manera fácil de ahorrar el 50% de la memoria en el búfer de índice. La Figura 3 muestra un ejemplo en el que un búfer de índice explícito contendría [0,1,1,2,2,3,4,5,5,6]. Con la indexación implícita sucesiva, el búfer de índice sería [0,1,2,4,5].

Representación de curvas basadas en hebras utilizando hardware heredado
Para alguien que ya usa el marco de API de trazado de rayos basado en CUDA NVIDIA OptiX , LSS ya está disponible como el tipo de curva lineal predeterminado y funciona en todas las GPU compatibles con OptiX. La versión OptiX de LSS usa automáticamente un respaldo de software en las GPU anteriores a las GPU NVIDIA Blackwell y la nueva primitiva acelerada por hardware en las GPU GeForce RTX Serie 50, sin necesidad de realizar ningún cambio de código. Si no usa OptiX, es probable que deba usar una primitiva alternativa.
Cuando se trata de alto rendimiento, las curvas teseladas son la mejor alternativa a las LSS. Una opción son los quads orientados hacia la cámara o hacia los rayos. Los quads orientados hacia los rayos tienen un consumo de memoria relativamente bajo, aunque es posible que sea necesario orientarlos durante cada cuadro de la animación (ya sea el movimiento del cabello o el movimiento de la cámara).
Las tiras de triángulos ortogonales disjuntos (DOTS) brindan una solución inteligente para teselar curvas que permite ver desde cualquier ángulo sin tener que reorientar los triángulos en cada cuadro para que queden frente a la cámara. De esta manera, si renderiza curvas estáticas, no necesitará reconstruir su jerarquía de volumen delimitador (BVH) cuando la cámara o el cabello se muevan. Debido a que los triángulos tienen un amplio soporte, DOTS puede aprovechar el hardware RTX existente.
Cualquiera que desee utilizar LSS en GPU GeForce RTX Serie 50 puede seguir admitiendo hebras con trazado de rayos en GPU más antiguas que utilicen DOTS. Algunos ejemplos de cabello que utilizan tanto DOTS como LSS estarán disponibles como parte del SDK de renderizado de personajes RTX que implementa el trazado de trayectorias de cabello y piel humanos realistas.
Una ventaja de LSS es que la geometría es naturalmente redonda, lo que facilita el sombreado y evita la autointersección al proyectar rayos de sombra y reflexión. Las curvas teseladas como DOTS normalmente necesitarán que la normal geométrica sea reemplazada por una normal de sombreado personalizada, como se muestra en la Figura 4. Cuando se utilizan normales de sombreado redondeadas, la apariencia de DOTS puede ser similar o incluso indistinguible de la apariencia de las curvas hechas de esferas barridas lineales.

Beneficios de utilizar LSS
Algunos de los enfoques existentes para el cabello en tiempo real incluyen:
- Tarjetas texturizadas
- Cuadrángulos orientados hacia los rayos, tubos teselados, cuadrángulos ortogonales (DOTS)
- Primitivas de curvas de orden superior de software (Bézier cúbico, por ejemplo)
Las tarjetas texturizadas han sido una buena forma de lograr una calidad razonable para el cabello en juegos con un presupuesto muy reducido. Sin embargo, este tipo de configuración es extremadamente limitada y no deja mucho espacio para simular o animar el cabello. Dado que una tarjeta texturizada tiene múltiples hebras por tarjeta, no hay control sobre las hebras individuales, por diseño. Los enfoques basados en hebras son mucho más controlables y flexibles, y esta es una de las razones por las que las hebras son claramente el futuro de la representación del cabello en tiempo real a medida que el hardware del mundo mejora con el tiempo.

Dado que hoy en día los triángulos son compatibles con el hardware, la teselación de curvas en triángulos (tubos, cuadrángulos, puntos) puede ser muy rápida de renderizar. La desventaja es que la teselación lleva tiempo y puede utilizar mucha memoria. Un cuadrángulo requiere cuatro vértices, aunque dos vértices se pueden compartir con el siguiente cuadrángulo vecino sucesivo en la hebra. Por lo tanto, en promedio, los cuadrángulos orientados hacia la cámara costarán al menos dos vértices por segmento de la hebra. Si se utilizan tubos o puntos, la hebra terminará con más de dos vértices por segmento en promedio.
LSS solo necesita un vértice por segmento de hebra en promedio, por lo que utiliza mucha menos memoria que las curvas teseladas, al tiempo que logra velocidades de renderizado más altas. Y, por supuesto, LSS es mucho más rápido que las primitivas de curvas de orden superior de software, como la B-spline cúbica. Dependiendo de las necesidades y la tolerancia a la calidad, este rendimiento adicional puede venir con una compensación de memoria en comparación con las curvas cúbicas, por ejemplo, si se necesitan más vértices para lograr suavidad.
¿Para qué más se puede utilizar LSS?
La versión RTX de la esfera barrida lineal fue diseñada principalmente teniendo en mente el cabello y el pelaje, pero se puede usar para otras aplicaciones, incluidas partículas, modelos moleculares, renderizado de estructuras alámbricas, renderizado de fuentes y rutas, y cualquier otra cosa que puedas imaginar.

Comience a utilizar LSS
Los núcleos RT de las GPU NVIDIA GeForce RTX Serie 50 incorporan compatibilidad de hardware para una nueva primitiva denominada esferas de barrido lineal (LSS). LSS es una primitiva de línea 3D redonda con un grosor variable, lo que permite una aproximación flexible de varios tipos de hebras. Como caso especial de LSS, la primitiva de hardware de las GPU GeForce RTX Serie 50 también admite esferas directamente (sin un segmento lineal de barrido), lo que resulta útil para aplicaciones como sistemas de partículas.
La representación del cabello animado en humanos es aproximadamente dos veces más rápida con LSS en comparación con DOTS, y también requiere aproximadamente 5 veces menos VRAM para almacenar la geometría. Esto es similar para otros casos de uso comunes. Con LSS en las GPU GeForce RTX Serie 50 y DOTS para las GPU anteriores, ahora existe una manera de obtener el mayor rendimiento posible del trazado de rayos de cabello en todas las GPU RTX.
En el caso del trazado de rayos en CUDA, LSS está disponible actualmente en OptiX . Para DirectX, la API para LSS se puede encontrar a partir de la versión R570 del SDK de NVAPI . Los desarrolladores de Vulkan estarán interesados en la extensión Vulkan LSS .
Para ver ejemplos de renderizado de cabello basado en la física, consulta el SDK de renderizado de personajes RTX . Para obtener más información sobre las últimas tecnologías de IA y renderizado, consulta el kit NVIDIA RTX . Únete a la conversación sobre LSS en el foro de desarrolladores de NVIDIA OptiX .
Recursos relacionados
- Sesión GTC: Renderizado de producción en GPU con Arnold
- Sesión de GTC: Generative AI Theater: AI Decoded – Generative AI Spotlight Art con PC y estaciones de trabajo RTX
- Sesión de GTC: Cómo acelerar la renderización fotorrealista en tiempo real
- SDK: Iluminación directa RTX (RTXDI)
- SDK: SDK de rastreo de rutas
- SDK: SDK de eliminadores de ruido en tiempo real (NRD) de NVIDIA
NVIDIA Blog. D. H. y P. K. Traducido al español