Content Creation / Rendering

NVIDIA RTX Mega Geometry Now Available with New Vulkan Samples

Geometric detail in computer graphics has increased exponentially in the past 30 years. To render high quality assets with higher instance counts and greater triangle density, NVIDIA introduced RTX Mega Geometry. RTX Mega Geometry is available today through NVIDIA RTX Kit, a suite of rendering technologies to ray trace games with AI, render scenes with immense geometry, and create game characters with photorealistic visuals.

As part of this release, new Vulkan samples have been made available to all developers. These open-source samples show how you can use clusters of triangles to build acceleration structures faster, render massive amounts of animated geometry, path trace models with streaming level of detail (LoD), and more. NVIDIA is also releasing two libraries to help process geometry into clusters. For more information on RTX Mega Geometry, see the documentation on GitHub. For more information on individual Vulkan samples, visit each repository.

Sample: Animated clusters

This sample introduces clusters and shows how to use the VK_NV_cluster_acceleration_structure extension to ray trace massive, animated scenes.. With NVIDIA RTX Mega Geometry, acceleration structures for animated objects can be built faster than using previous APIs. It also shows how clusters can be rasterized using VK_EXT_mesh_shader.

An image shows a large number of Stanford Bunny meshes.
Figure 1. Each mesh in this scene independently deforms, changing the position of every triangle with every frame

For more information, see the vk_animated_clusters GitHub repo.

Sample: Partitioned top-level acceleration structure

Frequently, only parts of a scene change between frames. The new VK_NV_partitioned_acceleration_structure extension enables apps to rebuild parts of a Top-Level Acceleration Structure (TLAS) when part of a scene changes, rather than the whole thing. The partitioned TLAS sample showcases this extension using a simple simulation of more than more than 100K physics objects.

Over 100,000 dominoes tumble under arches and next to icosahedra. The world is divided into tiles. Tiles where dominoes tumble, which is where parts of the partitioned TLAS are being updated, are in brighter colors.
Figure 2. VK_NV_partitioned_acceleration_structure enables part of the TLAS to be rebuilt when only part of it changes

For more information, see the vk_partitioned_tlas GitHub repo.

Sample: Dynamic tessellation for clusters

This sample showcases how to use clusters and VK_NV_cluster_acceleration_structure to path trace dynamic tessellation with displacement, which requires per-frame generation of geometry. It can also render the content using VK_NV_mesh_shader.

A close-up of a finely tessellated brick wall. Its surface is divided into base triangles. Tessellated base triangles are split into clusters of many smaller triangles every frame.
Figure 3. NVIDIA RTX Mega Geometry can be used for dynamic tessellation

For more information, see the vk_tessellated_clusters GitHub repo.

Sample: Level of detail for clusters

This sample showcases a continuous LoD technique using clusters that uses VK_NV_cluster_acceleration_structure for ray tracing. It can also rasterize the content using VK_NV_mesh_shader. In addition, the sample implements an on-demand streaming system from RAM to VRAM for the geometry.

A large number of statues. The right side of the image shows that each mesh is divided into clusters of triangles. The center shows that these clusters are organized into groups. The left side of the image shows that level of detail varies across meshes and groups, yet the rendering is seamless.
Figure 4. vk_lod_clusters builds levels of detail out of groups of clusters. These are structured so that the rendering is seamless even if the chosen level of detail varies across a mesh

For more information, see the vk_lod_clusters GitHub repo.

Library: Cluster builder

nv_cluster_builder is a small generic spatial clustering C++ library, created to cluster triangle meshes for ray tracing. It implements an algorithm similar to the recursive node-splitting techniques sometimes used to create bounding volume hierarchies. While it is limited to axis-aligned splits, its outputs work well for ray tracing.

This image shows nv_cluster_builder’s input types: triangles, quads, and clusters.
Figure 5. nv_cluster_builder clusters triangles, quads, and smaller clusters, given their bounding boxes and optional connectivity data

For more information, see the nv_cluster_builder GitHub repo.

Library: Level of detail cluster builder

nv_lod_cluster_builder is a continuous LoD mesh library that enables fine-grained control over geometric detail within a mesh, compared to traditional discrete LoD. Clusters of triangles are carefully precomputed by decimating the original mesh in a way that they can be seamlessly combined across different LoD levels. At rendering time, a subset of these clusters can be selected to adaptively provide the required amount of detail as the camera navigates the scene.

This image shows how nv_lod_cluster_builder could be used to render a brick wall with spatially varying level of detail. Because further-away objects require less detail, the mesh for this wall viewed at a glancing angle uses parts from five different levels of detail, from highest-resolution to lowest-resolution. Each level of detail mesh is constructed from groups of clusters that can be efficiently rendered with NVIDIA RTX Mega Geometry, and can be selected to render without gaps even if level of detail varies across a single object.
Figure 5. nv_lod_cluster_builder generates clusterized meshes with a seamless level of detail

For more information, see the nv_cluster_lod_builder GitHub repo.

These RTX Mega Geometry samples are part of NVIDIA RTX Kit. Learn more about RTX Kit technologies at the NVIDIA RTX Kit website today. Ask questions, provide feedback, and discuss with other developers on the NVIDIA Developer Forums for ray tracing.

Discuss (0)

Tags