El Portal de las Tecnologías para la Innovación

NVIDIA RTX Mega Geometry ya disponible con nuevas muestras de Vulkan

Los detalles geométricos en los gráficos por computadora han aumentado exponencialmente en los últimos 30 años. Para renderizar activos de alta calidad con mayor cantidad de instancias y mayor densidad de triángulos, NVIDIA presentó RTX Mega Geometry. 

RTX Mega Geometry está disponible hoy a través de NVIDIA RTX Kit , un conjunto de tecnologías de renderizado para juegos con trazado de rayos con IA, renderizar escenas con una geometría inmensa y crear personajes de juegos con imágenes fotorrealistas.

Como parte de este lanzamiento, se han puesto a disposición de todos los desarrolladores nuevos ejemplos de Vulkan. Estos ejemplos de código abierto muestran cómo se pueden usar grupos de triángulos para crear estructuras de aceleración más rápido, renderizar cantidades masivas de geometría animada, modelos de trazado de ruta con nivel de detalle (LoD) de transmisión y más. NVIDIA también está lanzando dos bibliotecas para ayudar a procesar la geometría en grupos. Para obtener más información sobre RTX Mega Geometry, consulte la documentación en GitHub . Para obtener más información sobre ejemplos individuales de Vulkan, visite cada repositorio.

Muestra: Clústeres animados

Este ejemplo presenta los clústeres y muestra cómo usar la extensión VK_NV_cluster_acceleration_structure para trazar rayos en escenas animadas masivas. Con NVIDIA RTX Mega Geometry, las estructuras de aceleración para objetos animados se pueden crear más rápido que con las API anteriores. También muestra cómo se pueden rasterizar los clústeres con VK_EXT_mesh_shader.

Una imagen muestra una gran cantidad de mallas de Stanford Bunny.
Figura 1. Cada malla en esta escena se deforma independientemente, cambiando la posición de cada triángulo con cada cuadro.

Para obtener más información, consulte el repositorio de GitHub vk_animated_clusters .

Ejemplo: Estructura de aceleración de nivel superior particionada

Con frecuencia, solo cambian partes de una escena entre fotogramas. La nueva extensión VK_NV_partitioned_acceleration_structure permite que las aplicaciones reconstruyan partes de una estructura de aceleración de nivel superior (TLAS) cuando cambia parte de una escena, en lugar de toda la escena. El ejemplo de TLAS particionada muestra esta extensión mediante una simulación simple de más de 100 000 objetos físicos.

Más de 100.000 fichas de dominó caen bajo arcos y junto a icosaedros. El mundo está dividido en casillas. Las casillas donde caen las fichas de dominó, que es donde se están actualizando partes del TLAS dividido, están en colores más brillantes.
Figura 2. VK_NV_partitioned_acceleration_structure permite reconstruir parte del TLAS cuando solo cambia una parte de él

Para obtener más información, consulte el repositorio de GitHub vk_partitioned_tlas .

Ejemplo: teselación dinámica para clústeres

Este ejemplo muestra cómo usar clústeres y VK_NV_cluster_acceleration_structure para trazar la ruta de teselación dinámica con desplazamiento, lo que requiere la generación de geometría por cuadro. También puede representar el contenido usando VK_NV_mesh_shader.

Primer plano de una pared de ladrillos finamente teselados. Su superficie está dividida en triángulos de base. Los triángulos de base teselados se dividen en grupos de muchos triángulos más pequeños en cada marco.
Figura 3. La mega geometría NVIDIA RTX se puede utilizar para teselación dinámica

Para obtener más información, consulte el repositorio de GitHub vk_tessellated_clusters .

Ejemplo: Nivel de detalle de los clústeres

Este ejemplo muestra una técnica de LoD continua que utiliza clústeres que utilizan VK_NV_cluster_acceleration_structure para el trazado de rayos. También puede rasterizar el contenido utilizando VK_NV_mesh_shader. Además, el ejemplo implementa un sistema de transmisión a pedido de RAM a VRAM para la geometría.

Una gran cantidad de estatuas. El lado derecho de la imagen muestra que cada malla está dividida en grupos de triángulos. El centro muestra que estos grupos están organizados en grupos. El lado izquierdo de la imagen muestra que el nivel de detalle varía entre las mallas y los grupos, pero la representación es perfecta.
Figura 4. vk_lod_clusters crea niveles de detalle a partir de grupos de clústeres. Estos están estructurados de modo que la representación sea uniforme incluso si el nivel de detalle elegido varía en una malla.

Para obtener más información, consulte el repositorio de GitHub vk_lod_clusters .

Biblioteca: Generador de clusters

nv_cluster_builder es una pequeña biblioteca genérica de agrupamiento espacial en C++, creada para agrupar mallas de triángulos para el trazado de rayos. Implementa un algoritmo similar a las técnicas de división de nodos recursivos que a veces se utilizan para crear jerarquías de volúmenes delimitadores. Si bien está limitada a divisiones alineadas con ejes, sus resultados funcionan bien para el trazado de rayos.

Esta imagen muestra los tipos de entrada de nv_cluster_builder: triángulos, cuadriláteros y clústeres.
Figura 5. nv_cluster_builder agrupa triángulos, cuadriláteros y grupos más pequeños, dados sus cuadros delimitadores y datos de conectividad opcionales

Para obtener más información, consulte el repositorio de GitHub nv_cluster_builder .

Biblioteca: Generador de clústeres de nivel de detalle

nv_lod_cluster_builder es una biblioteca de mallas LoD continuas que permite un control detallado de los detalles geométricos dentro de una malla, en comparación con el LoD discreto tradicional. Los grupos de triángulos se calculan previamente con cuidado diezmando la malla original de manera que se puedan combinar sin problemas en diferentes niveles de LoD. En el momento de la renderización, se puede seleccionar un subconjunto de estos grupos para proporcionar de manera adaptativa la cantidad de detalles requerida a medida que la cámara recorre la escena.

Esta imagen muestra cómo se puede usar nv_lod_cluster_builder para renderizar una pared de ladrillos con un nivel de detalle que varía espacialmente. Debido a que los objetos más alejados requieren menos detalles, la malla de esta pared vista desde un ángulo de visión general utiliza partes de cinco niveles de detalle diferentes, desde la resolución más alta hasta la resolución más baja. Cada malla de nivel de detalle se construye a partir de grupos de clústeres que se pueden renderizar de manera eficiente con NVIDIA RTX Mega Geometry y se pueden seleccionar para renderizar sin espacios incluso si el nivel de detalle varía en un solo objeto.
Figura 5. nv_lod_cluster_builder genera mallas agrupadas con un nivel de detalle uniforme

Para obtener más información, consulte el repositorio de GitHub nv_cluster_lod_builder .

Estas muestras de RTX Mega Geometry son parte del NVIDIA RTX Kit. Obtenga más información sobre las tecnologías del RTX Kit en el sitio web del NVIDIA RTX Kit hoy mismo. Haga preguntas, brinde comentarios y debata con otros desarrolladores en los foros para desarrolladores de NVIDIA sobre trazado de rayos .

Recursos relacionados

NVIDIA Blog. C. K., P. K., P. G. y N. B. Traducido al español

Artículos relacionados

Scroll al inicio